OpenMP in Small Bites/Tasking and Data Scoping

From HPC Wiki
OpenMP in Small Bites/Tasking and Data Scoping /
Jump to navigation Jump to search

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. Consider the following code snippet

int x = 42;
#pragma omp parallel private(x)
{

#pragma omp task
{
x = 3;
}

}
printf("x=%d\n", x);

What is the data scope of x and what is printed?

firstprivate, x=42
firstprivate, x=3
shared, x=3

2. Consider the following code snippet

int x = 42;
int y = 0;
#pragma omp parallel num_threads(4)
{
#pragma omp task
{
y += x;
}
}
printf("y=%d\n", y);

What is the data scope of x and what is printed?

shared, y=42
shared, y=168
firstprivate, y=168

3. Consider the following code snippet

int x = 42;
int y = 0;
#pragma omp parallel num_threads(4)
{
#pragma omp single
{
#pragma omp task
{
y += x;
}
}
}
printf("y=%d\n", y);

What is the data scope of x and what is printed?

shared, y=42
shared, y=168
firstprivate, y=168