Fundamentals of Accelerated Computing with OpenACC
Course Description
By the end of this workshop, participants will have a foundational understanding of OpenACC, a high-level programming model for parallel computing on CPUs and GPUs. The workshop covers profiling and optimizing applications to identify performance hotspots, using OpenACC directives to offload computations to the GPU, and improving data movement between the CPU and GPU to maximize efficiency.
Additional information is available on the Nvidia DLI course homepage.
Learning Objectives
At the conclusion of the workshop, participants will have an understanding of the fundamental tools and techniques for GPU-accelerating C++ and Fortran applications with OpenACC and will be able to:
- Profile and optimize CPU-only applications to identify hotspots for acceleration
- Use OpenACC directives to GPU-accelerate your codebase
- Optimize data movement between the CPU and GPU accelerators
Course Structure
Introduction to Parallel Programming
- Introduction to parallelism
- The goals of OpenACC
- Basic parallelization of code using OpenACC
Profiling with OpenACC
- Compiling sequential and OpenACC code
- The importance of code profiling
- Profiling sequential and OpenACC multicore code
- Technical introduction to the code used in introductory modules
Introduction to OpenACC Directives
- The Parallel directive
- The Kernels directive
- The Loop directive
GPU Programming with OpenACC
- Definition of a GPU
- Basic OpenACC data management
- CUDA Unified Memory
- Profiling GPU applications
Data Management with OpenACC
- OpenACC data directive/clauses
- OpenACC structured data region
- OpenACC unstructured data region
- OpenACC update directive
- Data management with C/C++ Structs/Classes
Loop Optimizations with OpenACC
- Seq/Auto clause
- Independent clause
- Reduction clause
- Collapse clause
- Tile clause
- Gang, Worker, Vector
Certification
Upon successfully completing the course assessments, participants will receive an NVIDIA DLI Certificate, recognizing their subject matter expertise and supporting their professional career growth.
Prerequisites
A free NVIDIA developer account is required to access the course material. Please register before the training at https://learn.nvidia.com/join.
A local installation of Nsight Systems is required to follow the hands-on exercises. Please install the version fitting your system from (https://developer.nvidia.com/nsight-systems/get-started). A local GPU is not required
Participants should additionally meet the following requirements:
- Basic competency in C/C++ or Fortran, including familiarity with variable types, loops, conditional statements, functions, and array manipulations
- No previous knowledge of GPU programming is required
Upcoming Iterations and Additional Courses
You can find dates and registration links for this and other upcoming NHR@FAU courses at https://hpc.fau.de/teaching/tutorials-and-courses/.