Portable GPU Acceleration of HPC Applications with Standard C++

Portable GPU Acceleration of HPC Applications with Standard C++

Sunday, May 21, 2023 9:00 AM to 1:00 PM · 4 hr. (Europe/Berlin)
Hall Y5 - 2nd Floor
Tutorial
Parallel Programming Languages

Information

This hands-on tutorial teaches how to parallelize HPC applications on GPUs using the portable parallelism and concurrency features of the C++23 standard, without any language or vendor extensions, such that a single version of the code is portable to both multi-core CPUs and heterogeneous accelerated systems with GPUs. We further show how to integrate this approach with MPI to target homogeneous and heterogeneous HPC systems. The tutorial exercises follow classical HPC themes like a PDE solver mini-application for the 2D unsteady heat equation. The exercises provide attendees hands-on experience applying C++ parallel algorithms and execution policies to parallelize and accelerate HPC programs using only standard C++. The attendees are presented with problem-solving strategies for common tasks like computing reductions or running iterative solvers for multi-dimensional problems. Furthermore, the tutorial and exercises give attendees hands-on experience integrating C++ parallel algorithms into pre-existing MPI applications. All exercises can be carried out by the attendees on a web-based multi-GPU system provided as a part of the tutorial. Finally, we conclude with a summary of our professional experience applying the ISO C++ parallel programming model to accelerate large real-world HPC applications, an outlook of future topics in C++ standard parallelism, references, and further learning resources.
Format
On-site
Targeted Audience
The target audience is researchers, students, developers, and practitioners interested in developing portable HPC applications with C++ to run them on heterogeneous systems.
Prerequisites
The prerequisites for following the tutorial and hands-on exercises are beginner-level MPI and intermediate-level C++ knowledge. Experience with C++11 lambdas and C++98 standard library algorithms is helpful, but we cover both topics as part of the tutorial.
Beginner Level
40%
Intermediate Level
60%