Difference between revisions of "OpenMP in Small Bites/Scoping"
OpenMP in Small Bites/Scoping
Jump to navigation
Jump to search
m (Fix video link) |
m (Fix video link again (this time with the correct URL)) |
||
| Line 5: | Line 5: | ||
=== Video === <!--T:5--> | === Video === <!--T:5--> | ||
| − | <youtube width="600" height="340" right> | + | <youtube width="600" height="340" right>3iU7rd7jLL0</youtube> |
Revision as of 16:07, 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 variable in a parallel region when this variable is declared before a parallel region?
2. What is the data scoping of the variables
a, b, c and d in the following code snippet in the parallel region? What is printed when executing the code? int a = 0;
int b = 23;
int c = -3;
# pragma omp parallel num_threads(2) private(a) reduction(+:c)
{ int d = omp_get_thread_num();
a = 42 + d;
# pragma omp critical
b = 1;
c += a + b;}
c = c / 2;
printf("a=%d, b=%d, c=%d\n", a, b, c)
3. The following code snippet is wrong due to a missing data sharing attribute. How can you fix it?
int i, int s = 0;
# pragma omp parallel for
for (i = 1; i < 100; i++){ s = s + a[i];}