Skip to content

Vector Addition

1. In the parallelized version of the vector addition function using OpenACC, which directive is used to offload the code block to the GPU?

  • A. #pragma acc parallel
  • B. #pragma acc data
  • C. #pragma acc kernels
  • D. #pragma acc async
Click to reveal the answer Answer: C. `#pragma acc kernels`

Data Movement and Memory Allocation

2. Which data clause in OpenACC is used to transfer data from the host (CPU) to the device (GPU) at the beginning of a parallel region?

  • A. copyout
  • B. copyin
  • C. create
  • D. present
Click to reveal the answer Answer: B. `copyin`

3. True or False: The copyout clause in OpenACC ensures that the results of a computation on the GPU are transferred back to the CPU after the parallel region completes.

Click to reveal the answer Answer: True

Loop Parallelization

4. In the OpenACC parallelized version of vector addition, the loop clause is used to:

  • A. Create memory on the GPU
  • B. Specify that the loop should be parallelized across GPU threads
  • C. Transfer data from the GPU to the CPU
  • D. Sequentially execute the loop
Click to reveal the answer Answer: B. Specify that the loop should be parallelized across GPU threads

Avoiding Pointer Aliasing

5. True or False: The restrict keyword in C/C++ tells the compiler that pointers do not overlap in memory, allowing for safer and more efficient parallelization.

Click to reveal the answer Answer: True