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

From HPC Wiki
OpenMP in Small Bites/Tasking
Jump to navigation Jump to search
Line 16: Line 16:
 
- Always <code>firstprivate</code>.
 
- Always <code>firstprivate</code>.
 
|| Wrong.
 
|| Wrong.
+ <code>firstprivate</code> unless shared in the enclosing context.
+
+ <code>firstprivate</code> unless <code>shared</code> in the enclosing context.
 
|| Correct.
 
|| Correct.
 
- <code>shared</code> unless <code>firstprivate</code> in the enclosing context.
 
- <code>shared</code> unless <code>firstprivate</code> in the enclosing context.

Revision as of 18:01, 30 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. What is the default data scoping of a variable in a task scope? Hint: Assume that the variable is declared before the task region, but in the same function.

Always firstprivate.
firstprivate unless shared in the enclosing context.
shared unless firstprivate in the enclosing context.

2. Which tasks are synchronized with by a taskyield construct?

All tasks of the same thread team.
All desendant tasks.
The direct child tasks.

3. Why can it be benficial for the performance to use cut-off strategies for task-based OpenMP programs?

It can avoid overhead caused by too fine-grained tasks.
It can synchonize tasks faster.
It can accelerate task stealing be enforcing one task queue per thread.