Introduction to OpenMP Offloading¶
1. In OpenMP Offloading, which directive is primarily used to specify code regions that should be executed on a device, such as a GPU?
- A.
#pragma omp parallel - B.
#pragma omp for - C.
#pragma omp target - D.
#pragma omp simd
Click to reveal the answer
Answer: C. `#pragma omp target`Device Memory Management and Data Movement¶
2. Which of the following map clauses is used to transfer data from the host (CPU) to the device (GPU) before computation?
- A.
map(from:) - B.
map(to:) - C.
map(tofrom:) - D.
map(alloc:)
Click to reveal the answer
Answer: B. `map(to:)`3. True or False: In OpenMP Offloading, the map(tofrom:) clause ensures that data is updated both on the device and on the host, allowing bidirectional data movement.
Click to reveal the answer
Answer: TrueOffloading and Parallelization¶
4. Which directive divides loop iterations across multiple teams on a device, making it particularly useful for GPU offloading in OpenMP?
- A.
teams - B.
declare target - C.
distribute - D.
target
Click to reveal the answer
Answer: C. `distribute`Compilation and Tool Support¶
5. To enable OpenMP Offloading targeting an NVIDIA GPU using Clang, which compilation flag would you use?
- A.
-fopenmp -fopenmp-targets=amdgcn-amd-amdhsa - B.
-fopenmp -fopenmp-targets=nvptx64-nvidia-cuda - C.
-mp -gpu=cc70 - D.
-fopenmp-targets=spir64
Click to reveal the answer
Answer: B. `-fopenmp -fopenmp-targets=nvptx64-nvidia-cuda`Practical Understanding¶
6. True or False: OpenMP Offloading's teams and parallel directives can be combined to organize work distribution across teams of threads on a GPU.