Toggle navigation sidebar
Toggle in-page Table of Contents
OpenMP Application Programming Interface Examples
Welcome to OMP Jupyter Book
Cover
Foreword
1. Introduction
1.1. Examples Organization
2. OpenMP Directive Syntax
2.1. C/C++ Pragmas
2.2. C++ Attributes
2.3. Fortran Comments (Fixed Source Form)
2.4. Fortran Comments (Free Source Form)
3. Parallel Execution
3.1. A Simple Parallel Loop
3.2.
parallel
Construct
3.3.
teams
Construct on Host
3.4. Controlling the Number of Threads on Multiple Nesting Levels
3.5. Interaction Between the
num_threads
Clause and
omp_set_dynamic
3.6. Fortran Restrictions on the
do
Construct
3.7.
nowait
Clause
3.8.
collapse
Clause
3.9.
linear
Clause in Loop Constructs
3.10.
parallel
sections
Construct
3.11.
firstprivate
Clause and
sections
Construct
3.12.
single
Construct
3.13.
workshare
Construct
3.14.
masked
Construct
3.15.
loop
Construct
3.16. Parallel Random Access Iterator Loop
3.17.
omp_set_dynamic
and
omp_set_num_threads
Routines
3.18.
omp_get_num_threads
Routine
4. OpenMP Affinity
4.1.
proc_bind
Clause
4.2. Task Affinity
4.3. Affinity Display
4.4. Affinity Query Functions
5. Tasking
5.1.
task
and
taskwait
Constructs
5.2. Task Priority
5.3. Task Dependences
5.4. Task Detachment
5.5.
taskgroup
Construct
5.6.
taskyield
Construct
5.7.
taskloop
Construct
5.8. Combined
parallel
masked
and
taskloop
Constructs
6. Devices
6.1.
target
Construct
6.2.
defaultmap
Clause
6.3. Pointer Mapping
6.4. Structure Mapping
6.5. Fortran Allocatable Array Mapping
6.6. Array Sections in Device Constructs
6.7. C++ Virtual Functions
6.8. Array Shaping
6.9.
declare mapper
Directive
6.10.
target
data
Construct
6.11.
target
enter
data
and
target
exit
data
Constructs
6.12.
target
update
Construct
6.13. Declare Target Directive
6.14. Lambda Expressions
6.15.
teams
Construct and Related Combined Constructs
6.16. Asynchronous
target
Execution and Dependences
6.17. Device Routines
7. SIMD
7.1.
simd
and
declare
simd
Directives
7.2.
inbranch
and
notinbranch
Clauses
7.3. Loop-Carried Lexical Forward Dependence
7.4.
ref
,
val
,
uval
Modifiers for
linear
Clause
8. Loop Transformations
8.1.
tile
Construct
8.2.
unroll
Construct
8.3. Incomplete Tiles
9. Synchronization
9.1.
critical
Construct
9.2. Worksharing Constructs Inside a
critical
Construct
9.3. Binding of
barrier
Regions
9.4.
atomic
Construct
9.5. Restrictions on the
atomic
Construct
9.6.
flush
Construct without a List
9.7. Synchronization Based on Acquire/Release Semantics
9.8.
ordered
Clause and
ordered
Construct
9.9.
depobj
Construct
9.10. Doacross Loop Nest
9.11. Lock Routines
10. Data Environment
10.1.
threadprivate
Directive
10.2.
default(none)
Clause
10.3.
private
Clause
10.4. Fortran Private Loop Iteration Variables
10.5. Fortran Restrictions on
shared
and
private
Clauses with Common Blocks
10.6. Fortran Restrictions on Storage Association with the
private
Clause
10.7. C/C++ Arrays in a
firstprivate
Clause
10.8.
lastprivate
Clause
10.9. Reduction
10.10.
scan
Directive
10.11.
copyin
Clause
10.12.
copyprivate
Clause
10.13. C++ Reference in Data-Sharing Clauses
10.14. Fortran
ASSOCIATE
Construct
11. Memory Model
11.1. OpenMP Memory Model
11.2. Memory Allocators
11.3. Race Conditions Caused by Implied Copies of Shared Variables in Fortran
12. Program Control
12.1. Conditional Compilation
12.2. Internal Control Variables (ICVs)
12.3. Placement of
flush
,
barrier
,
taskwait
and
taskyield
Directives
12.4. Cancellation Constructs
12.5.
requires
Directive
12.6.
declare
variant
Directive
12.7. Metadirectives
12.8. Nested Loop Constructs
12.9. Restrictions on Nesting of Regions
12.10. Target Offload
12.11. Controlling Concurrency and Reproducibility with the
order
Clause
12.12.
interop
Construct
12.13. Utilities
13. OMPT Interface
13.1. OMPT Start
repository
open issue
Index