
The OpenMP Common Core
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
This book guides readers through the most essential elements of OpenMP—the twenty-one components that most OpenMP programmers use most of the time, known collectively as the "OpenMP Common Core.” Once they have mastered these components, readers with no prior experience writing parallel code will be effective parallel programmers, ready to take on more complex aspects of OpenMP. The authors, drawing on twenty years of experience in teaching OpenMP, introduce material in discrete chunks ordered to support effective learning. OpenMP was created in 1997 to make it as simple as possible for applications programmers to write parallel code; since then, it has grown into a huge and complex system. The OpenMP Common Core goes back to basics, capturing the inherent simplicity of OpenMP. After introducing the fundamental concepts of parallel computing and history of OpenMP's development, the book covers topics including the core design pattern of parallel computing, the parallel and worksharing-loop constructs, the OpenMP data environment, and tasks. Two chapters on the OpenMP memory model are uniquely valuable for their pedagogic approach. The key for readers is to work through the material, use an OpenMP-enabled compiler, and write programs to experiment with each OpenMP directive or API routine as it is introduced. The book's website, updated continuously, offers a wide assortment of programs and exercises.
More details
Other editions
Additional editions

Persons
Yun (Helen) He is a High Performance Computing Consultant at the National Energy Research Supercomputing Center of Lawrence Berkeley National Laboratory.
Alice E. Koniges is a computer scientist and research principal investigator at the University of Hawaii.
Content
- Intro
- Copyright
- Contents
- Series Foreword
- Foreword
- Preface
- I Setting the Stage
- 1 Parallel Computing
- 1.1 Fundamental Concepts of Parallel Computing
- 1.2 The Rise of Concurrency
- 1.3 Parallel Hardware
- 1.3.1 Multiprocessor Systems
- 1.3.2 Graphics Processing Units (GPU)
- 1.3.3 Distributed Memory Clusters
- 1.4 Parallel Software for Multiprocessor Computers
- 2 The Language of Performance
- 2.1 The Basics: FLOPS, Speedup, and Parallel Efficiency
- 2.2 Amdahl's Law
- 2.3 Parallel Overhead
- 2.4 Strong Scaling vs. Weak Scaling
- 2.5 Load Balancing
- 2.6 Understanding Hardware with the Roofline Model
- 3 What is OpenMP?
- 3.1 OpenMP History
- 3.2 The Common Core
- 3.3 Major Components of OpenMP
- II The OpenMP Common Core
- 4 Threads and the OpenMP Programming Model
- 4.1 Overview of OpenMP
- 4.2 The Structure of OpenMP Programs
- 4.3 Threads and the Fork Join Pattern
- 4.4 Working with Threads
- 4.4.1 The SPMD Design Pattern
- 4.4.2 False Sharing
- 4.4.3 Synchronization
- 4.4.3.1 Critical
- 4.4.3.2 Barrier
- 4.5 Closing Comments
- 5 Parallel Loops
- 5.1 Worksharing-Loop Construct
- 5.2 Combined Parallel Worksharing-Loop Construct
- 5.3 Reductions
- 5.4 Loop Schedules
- 5.4.1 The Static Schedule
- 5.4.2 The Dynamic Schedule
- 5.4.3 Choosing a Schedule
- 5.5 Implicit Barriers and the Nowait Clause
- 5.6 Pi Program with Parallel Loop Worksharing
- 5.7 A Loop-Level Parallelism Strategy
- 5.8 Closing Comments
- 6 OpenMP Data Environment
- 6.1 Default Storage Attributes
- 6.2 Modifying Storage Attributes
- 6.2.1 The Shared Clause
- 6.2.2 The Private Clause
- 6.2.3 The Firstprivate Clause
- 6.2.4 The Default Clause
- 6.3 Data Environment Examples
- 6.3.1 A Data Scope Test
- 6.3.2 Mandelbrot Set Area
- 6.3.3 Pi Loop Example Revisited
- 6.4 Arrays and Pointers
- 6.5 Closing Comments
- 7 Tasks in OpenMP
- 7.1 The Need for Tasks
- 7.2 Explicit Tasks
- 7.3 Our First Example: Schrödinger's Program
- 7.4 The Single Construct
- 7.5 Working with Tasks
- 7.5.1 When Do Tasks Complete?
- 7.6 Task Data Environment
- 7.6.1 Default Data Scoping for Tasks
- 7.6.2 Linked List Program Revisited with Tasks
- 7.7 Fundamental Design Patterns with Tasks
- 7.7.1 Divide and Conquer Pattern
- 7.8 Closing Comments
- 8 OpenMP Memory Model
- 8.1 Memory Hierarchies Revisited
- 8.2 The OpenMP Common Core Memory Model
- 8.3 Working with Shared Memory
- 8.4 Closing Comments
- 9 Common Core Recap
- 9.1 Managing Threads
- 9.2 Worksharing Constructs
- 9.3 Parallel Worksharing-Loop Combined Construct
- 9.4 OpenMP Tasks
- 9.5 Synchronization and Memory Consistency Models
- 9.6 Data Environment Clauses
- 9.7 The Reduction Clause
- 9.8 Environment Variables and Runtime Library Routines
- III Beyond the Common Core
- 10 Multithreading beyond the Common Core
- 10.1 Additional Clauses for OpenMP Common Core Constructs
- 10.1.1 The Parallel Construct
- 10.1.2 The Worksharing-Loop Construct
- 10.1.3 The Task Construct
- 10.2 Multithreading Functionality Missing from the Common Core
- 10.2.1 Threadprivate
- 10.2.2 Master
- 10.2.3 Atomic
- 10.2.4 OMP_STACKSIZE
- 10.2.5 Runtime Library Routines
- 10.2.5.1 omp_get_max_threads
- 10.2.5.2 omp_set_dynamic
- 10.2.5.3 omp_in_parallel
- 10.3 Closing Comments
- 11 Synchronization and the OpenMP Memory Model
- 11.1 Memory Consistency Models
- 11.2 Pairwise Synchronization
- 11.3 Locks and How to Use Them
- 11.4 The C++ Memory Model and OpenMP
- 11.5 Closing Comments
- 12 Beyond OpenMP Common Core Hardware
- 12.1 Nonuniform Memory Access (NUMA) Systems
- 12.1.1 Working with NUMA Systems
- 12.1.1.1 Controlling Thread Affinity
- 12.1.1.2 Managing Data Locality
- 12.1.2 Nested Parallel Constructs
- 12.1.3 Checking the Thread Affinity
- 12.1.4 Summary: Thread Affinity and Data Locality
- 12.2 SIMD
- 12.3 Device Constructs
- 12.4 Closing Comments
- 13 Your Continuing Education in OpenMP
- 13.1 Programmer Resources from the ARB
- 13.2 How to Read the OpenMP Specification
- 13.2.1 OpenMP with All the Formal Jargon
- 13.3 The Structure of the OpenMP Specification
- 13.4 Closing Comments
- Glossary
- References
- Subject Index
System requirements
File format: ePUB
Copy protection: Adobe-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Install the free reader Adobe Digital Editions prior to download (see eBook Help).
- Tablet/smartphone (Android; iOS): Install the free app Adobe Digital Editions or the app PocketBook before downloading (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (not Kindle).
The file format ePub works well for novels and non-fiction books – i.e., „flowing” text without complex layout. On an e-reader or smartphone, line and page breaks automatically adjust to fit the small displays.
This eBook uses Adobe-DRM, a „hard” copy protection. If the necessary requirements are not met, unfortunately you will not be able to open the eBook. You will therefore need to prepare your reading hardware before downloading.
Please note: We strongly recommend that you authorise using your personal Adobe ID after installation of any reading software.
For more information, see our ebook Help page.