Shared Memory Application Programming presents the key concepts and applications of parallel programming, in an accessible and engaging style applicable to developers across many domains. Multithreaded programming is today a core technology, at the basis of all software development projects in any branch of applied computer science. This book guides readers to develop insights about threaded programming and introduces two popular platforms for multicore development: OpenMP and Intel Threading Building Blocks (TBB). Author Victor Alessandrini leverages his rich experience to explain each platforms design strategies, analyzing the focus and strengths underlying their often complementary capabilities, as well as their interoperability. The book is divided into two parts: the first develops the essential concepts of thread management and synchronization, discussing the way they are implemented in native multithreading libraries (Windows threads, Pthreads) as well as in the modern C++11 threads standard. The second provides an in-depth discussion of TBB and OpenMP including the latest features in OpenMP 4.0 extensions to ensure readers skills are fully up to date. Focus progressively shifts from traditional thread parallelism to modern task parallelism deployed by modern programming environments. Several chapter include examples drawn from a variety of disciplines, including molecular dynamics and image processing, with full source code and a software library incorporating a number of utilities that readers can adapt into their own projects.Designed to introduce threading and multicore programming to teach modern coding strategies for developers in applied computingLeverages author Victor Alessandrini's rich experience to explain each platforms design strategies, analyzing the focus and strengths underlying their often complementary capabilities, as well as their interoperabilityIncludes complete, up-to-date discussions of OpenMP 4.0 and TBBBased on the authors training sessions, including information on source code and software libraries which can be repurposed
[1]
David A. Patterson,et al.
Computer Organization and Design, Fourth Edition, Fourth Edition: The Hardware/Software Interface (The Morgan Kaufmann Series in Computer Architecture and Design)
,
2008
.
[2]
R.H. Dennard,et al.
Design Of Ion-implanted MOSFET's with Very Small Physical Dimensions
,
1974,
Proceedings of the IEEE.
[3]
Barbara Chapman,et al.
Using OpenMP: Portable Shared Memory Parallel Programming (Scientific and Engineering Computation)
,
2007
.
[4]
Leslie Lamport,et al.
The parallel execution of DO loops
,
1974,
CACM.
[5]
Leslie Lamport,et al.
How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs
,
2016,
IEEE Transactions on Computers.
[6]
Jim Jeffers.
Intel® Xeon Phi™ Coprocessors
,
2013
.
[7]
Maurice Herlihy,et al.
The Art of Multiprocessor Programming, Revised Reprint
,
2012
.
[8]
Darryl Gove,et al.
Multicore Application Programming: for Windows, Linux, and Oracle Solaris
,
2010
.
[9]
David R. Butenhof.
Programming with POSIX threads
,
1993
.
[10]
Arch D. Robison,et al.
Structured Parallel Programming: Patterns for Efficient Computation
,
2012
.
[11]
Hans-Juergen Boehm,et al.
HP Laboratories
,
2006
.