OpenMP Offloading: Programming Basics¶
1. Which directive in OpenMP Offloading specifies that a code block should be executed on a target device like a GPU?
- A.
#pragma omp parallel
- B.
#pragma omp target
- C.
#pragma omp teams
- D.
#pragma omp distribute
Click to reveal the answer
Answer: B. `#pragma omp target`Compilation and Execution¶
2. When compiling a program with OpenMP Offloading for GPU architecture using the NVIDIA compiler, which flag should be used to specify GPU parallelization?
- A.
-target=multicore
- B.
-mp
- C.
-mp=gpu
- D.
-gpu=cc80
Click to reveal the answer
Answer: C. `-mp=gpu`3. What does the -Minfo=mp,accel
flag do during compilation with OpenMP Offloading?
- A. It enables OpenMP parallelization.
- B. It provides compiler feedback on OpenMP parallelization and GPU acceleration.
- C. It compiles the program for multicore CPU architectures only.
- D. It disables OpenMP Offloading feedback.
Click to reveal the answer
Answer: B. It provides compiler feedback on OpenMP parallelization and GPU acceleration.Practical Application of OpenMP Directives¶
4. Which directive would you use if you wanted to parallelize a loop specifically for execution on a target device in OpenMP Offloading?
- A.
#pragma omp loop
- B.
#pragma omp target
- C.
#pragma omp target parallel for
- D.
#pragma omp teams
Click to reveal the answer
Answer: C. `#pragma omp target parallel for`5. True or False: The collapse(n)
clause in OpenMP Offloading is used to combine multiple nested loops into a single loop for parallel execution on the device.
Click to reveal the answer
Answer: TrueUnderstanding Fortran Offloading Syntax¶
6. In Fortran, which directive would you use to specify that a loop should execute on a target device?
- A.
!$omp teams
- B.
!$omp parallel
- C.
!$omp target
- D.
!$omp end target
Click to reveal the answer
Answer: C. `!$omp target`7. Which of the following statements about OpenMP Offloading in Fortran is correct?
- A. The syntax and behavior differ significantly from C/C++.
- B. OpenMP Offloading is only supported in C/C++.
- C. The syntax is similar to C/C++ with directives like
!$omp target
. - D. Fortran does not support the
target
directive.
Click to reveal the answer
Answer: C. The syntax is similar to C/C++ with directives like `!$omp target`.Technical Considerations¶
8. What is the purpose of using the reduction
clause in OpenMP Offloading?
- A. To specify that a loop should be parallelized on the device.
- B. To handle data mapping between host and device.
- C. To apply a reduction operation (e.g., sum) across multiple variables in parallel.
- D. To transfer execution back to the host CPU.
Click to reveal the answer
Answer: C. To apply a reduction operation (e.g., sum) across multiple variables in parallel.9. True or False: The map
clause is essential in OpenMP Offloading for specifying how variables are transferred between the host and device.
Click to reveal the answer
Answer: True10. Which of the following is NOT a core benefit of OpenMP Offloading in heterogeneous computing?
- A. Enabling easy code execution on both CPUs and GPUs.
- B. Allowing precise control over data transfer between host and device.
- C. Supporting parallelization only on multicore CPU architectures.
- D. Providing constructs for team-based parallelism and vectorization.