Difference between revisions of "OpenMP in Small Bites/Overview"

From HPC Wiki
OpenMP in Small Bites/Overview
Jump to navigation Jump to search
m (Remove unwanted initial line breaks)
m (Tweak questions.)
Line 16: Line 16:
 
{
 
{
 
|type="()"}
 
|type="()"}
+ Click and submit to see the answer
+
+ Compiler directives, runtime routines, environment variables
|| compiler directives, runtime routines, environment variables
+
|| Correct
 +
- Compiler directives, host language extensions, runtime routines
 +
|| While compiler support is needed, OpenMP does comprise host language extensions, yet also uses environment variables.
 +
- Host language extensions, runtime routines, environment variables.
 +
|| OpenMP does not comprise host language extensions, but rather uses compiler directives to insert .
 
</quiz>
 
</quiz>
 
{{hidden end}}
 
{{hidden end}}
Line 27: Line 31:
 
{
 
{
 
|type="()"}
 
|type="()"}
+ Click and submit to see the answer
+
+ Fork-Join
|| Fork-Join: An OpenMP program starts with just one worker thread (<code>master</code>). The <code>worker</code> threads are spawned in the parallel region and form a <code>team</code> of threads together with the <code>master</code>. They all join at the end of a parallel region.  
+
||  An OpenMP program starts with just one worker thread (<code>master</code>). The <code>worker</code> threads are spawned in the parallel region and form a <code>team</code> of threads together with the <code>master</code>. They all join at the end of a parallel region.
 +
- Create-Release
 +
|| An OpenMP program starts with just one worker thread (<code>master</code>). The <code>worker</code> threads are spawned in the parallel region and form a <code>team</code> of threads together with the <code>master</code>. They all join at the end of a parallel region.
 +
- Start-Wait
 +
|| An OpenMP program starts with just one worker thread (<code>master</code>). The <code>worker</code> threads are spawned in the parallel region and form a <code>team</code> of threads together with the <code>master</code>. They all join at the end of a parallel region.  
 
</quiz>
 
</quiz>
 
{{hidden end}}
 
{{hidden end}}
Line 37: Line 45:
 
<quiz display=simple>
 
<quiz display=simple>
 
{
 
{
|type="()"}
+
|type="[]"}
+ Click and submit to see the answer
+
+ Set environment variable <code>OMP_NUM_THREADS</code>.
|| a. Set environment variable <code>OMP_NUM_THREADS</code>. <br /> b. Use <code>num_threads</code> clause on a parallel construct.
+
|| True
 +
+ Use <code>num_threads</code> clause on a parallel construct.
 +
|| True
 +
- Number of threads are fixed at compile time
 +
|| False
 +
- All of the above
 +
|| False
 
</quiz>
 
</quiz>
 
{{hidden end}}
 
{{hidden end}}

Revision as of 11:45, 23 November 2020

Tutorial
Title: OpenMP in Small Bites
Provider: HPC.NRW

Contact: tutorials@hpc.nrw
Type: Multi-part video
Topic Area: Programming Paradigms
License: CC-BY-SA
Syllabus

1. Overview
2. Worksharing
3. Data Scoping
4. False Sharing
5. Tasking
6. Tasking and Data Scoping
7. Tasking and Synchronization
8. Loops and Tasks
9. Tasking Example: Sudoku Solver
10. Task Scheduling
11. Non-Uniform Memory Access

Video

Quiz

1. Out of which three components the OpenMP interface consists?

Compiler directives, runtime routines, environment variables
Compiler directives, host language extensions, runtime routines
Host language extensions, runtime routines, environment variables.

2. What is one of the key concepts of the OpenMP execution model?

Fork-Join
Create-Release
Start-Wait

3. How can you control the number of threads?

Set environment variable OMP_NUM_THREADS.
Use num_threads clause on a parallel construct.
Number of threads are fixed at compile time
All of the above