menu

OpenACC

6 Labs · 71 Credits · 8h 41m

Technologies Badge nvidia openacc

This quest is designed to teach you OpenACC

OpenACC - 2X in 4 Steps

Learn how to accelerate your C/C++ or Fortran application using OpenACC to harness the massively parallel power of NVIDIA GPUs. OpenACC is a directive based approach to computing where you provide compiler hints to accelerate your code, instead of writing the accelerator code yourself. In 90 minutes, you will experience a four-step process for accelerating applications using OpenACC:

  1. Characterize and profile your application
  2. Add compute directives
  3. Add directives to optimize data movement
  4. Optimize your application using kernel scheduling

Icon  level Beginner 1 Credit 1 Hour 30 Minutes

Profiling and Parallelizing with OpenACC

If you have not already registered, please sign-up for the OpenACC Lab series.

It is highly recommended that you have basic understanding of programming with OpenACC. If you do not, try the OpenACC - 2X in 4 Steps lab first!

In this lab participants will gain experience with the first two steps of the OpenACC programming cycle: Identify and Express Parallelism. Participants will profile a provided C or Fortran application using NVIDIA NVPROF and use the PGI OpenACC compiler to accelerate the code. This lab is intended to be taken after lecture 2 of the OpenACC course provided by NVIDIA.

Icon  advanced Advanced 10 Credits 45 Minutes

Expressing Data Movement and Optimizing Loops with OpenACC

If you have not already registered, please sign-up for the OpenACC Lab series.

It is highly recommended that you have basic understanding of programming with OpenACC. If you do not, try the OpenACC - 2X in 4 Steps lab first!

This lab continues to work completed in the lab "Profiling and Parallelizing" by adding OpenACC data management directives and then optimizing the code using the OpenACC loop directive. Participants will use the PGI compiler and NVIDIA Visual Profiler to optimize the code. This lab is intended to be taken after completing the previous lab and after watching lecture 3 of the free OpenACC course provided by NVIDIA

Icon  expert Expert 15 Credits 1 Hour 30 Minutes

Pipelining Work on the GPU with OpenACC

OpenACC is a high-level language for programming GPUs using compiler hints. With OpenACC a programmer can take advantage of the benefits of GPUs with little code change and incremental improvements to their existing code. This lab is intended for existing OpenACC programmers to take their OpenACC skills to the next level by optimizing data copies to be overlapped with GPU computation using a simple technique known as pipelining. When it’s impossible to completely eliminate the need to copy data to and from the GPU memory, pipelining makes it possible to make these copies nearly free.
In 90 minutes, you will work through a number of exercises including:

  1. Using the OpenACC routine directive to allow on-device function calls.
  2. Breaking up large work into bite-sized pieces.
  3. Working on these pieces asynchronously from the CPU
  4. Overlapping GPU computation and PCIe data motion Some OpenACC experience is required to take this lab. For an introduction to OpenACC, please see our other labs.

Icon  expert Expert 15 Credits 1 Hour 30 Minutes

Introduction to Multi GPU Programming with MPI and OpenACC

In this lab you will learn how to program multi GPU systems or GPU clusters using the Message Passing Interface (MPI) and OpenACC. Basic knowledge of MPI and OpenACC is a prerequisite. The topics covered by this lab are:

  • Exchanging data between different GPUs using CUDA-aware MPI and OpenACC
  • Handle GPU affinity in multi GPU systems
  • Overlapping communication with computation to hide communication times
  • Optionally how to use the NVIDIA performance analysis tools

Recommended prerequisites for this lab are: C or Fortran, basic OpenACC and basic MPI.

Icon  expert Expert 15 Credits 1 Hour 30 Minutes

Advanced Multi GPU Programming with MPI and OpenACC

In this self-paced, hands-on lab, you will learn how to improve a multi GPU MPI+OpenACC program. It is a follow-up lab of the Introduction to Multi GPU Programming with MPI and OpenACC lab. Knowledge on how to program multiple GPUs with MPI and OpenACC is a prerequisite. The topics covered by this lab are

  • Overlapping communication with computation to hide communication times
  • Handling noncontiguous halo updates with a 2D tiled domain decomposition

Recommended prerequisites C or Fortran, basic OpenACC and basic MPI.

Icon  expert Expert 15 Credits 1 Hour 30 Minutes