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

From HPC Wiki
OpenMP in Small Bites/Scoping
Jump to navigation Jump to search
m (use new syllabus template)
m (Remove unwanted initial line breaks)
Line 1: Line 1:
[[Category:Tutorials]]
+
[[Category:Tutorials]]<nowiki />
{{Syllabus OpenMP in Small Bites}}
+
{{Syllabus OpenMP in Small Bites}}<nowiki />
 
__TOC__
 
__TOC__
 
  
 
=== Video === <!--T:5-->
 
=== Video === <!--T:5-->

Revision as of 12:13, 19 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?

Click and submit to see the answer

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)

Click and submit to see the answer

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];
}

Click and submit to see the answer