OpenMP is the established directive-based standard for shared-memory parallelism on CPUs, and its target offloading features extend the same model to GPU accelerators. Rather than rewriting code from scratch, developers annotate existing loops and data regions in C, C++, or Fortran applications to offload work to the GPU. This course follows the full workflow on a hands-on example – profiling the application to identify hotspots, parallelizing it for multicore CPUs, offloading computation to the GPU with combined target constructs, and minimizing data movement between host and device with structured and unstructured data regions. No prior GPU programming experience is required.
Level: Beginner
Language: English
Price and Eligibility: Refer to the registration page for each event (generally free of charge for members of academia from Europe).
Knowledge
- Basic C/C++ or Fortran competency, including familiarity with variable types, loops, conditional statements, functions, and array manipulations
- No previous knowledge of OpenMP programming is assumed
Technical
- A modern web browser (for JupyterHub access to NHR@FAU’s HPC clusters)
- A local installation of NVIDIA Nsight Systems (no local GPU required)
After completing this course, you will be able to:
- Profile C/C++ and Fortran applications with NVIDIA Nsight Systems to identify performance hotspots
- Parallelize loops for multicore CPUs using OpenMP parallel for/do, reduction, and collapse clauses
- Offload compute-intensive code regions to the GPU using OpenMP target teams distribute parallel constructs
- Control data movement between host and device with map clauses
- Reduce data transfers with structured (target data) and unstructured (target enter/exit data) data regions
- Profiling: GPU configuration, Nsight Systems, and NVTX annotations
- OpenMP for multicore CPUs: parallel loops, reductions, and loop collapsing
- OpenMP target offloading: target, teams, distribute, and parallel loop constructs
- Data mapping: map clauses (to, from, tofrom, alloc, delete) and unified memory
- Data management: structured and unstructured data regions
- 2027, May 12: half-day online course at LRZ; part 2 of GPU Programming Workshop – registration
- 2026, Jun 9: half-day online course at LRZ; part 2 of GPU Programming Workshop
For an overview of all NHR@FAU courses, visit the course overview page.