Minisymposium Presentation
The Role of Optimising Compilers in the GPU Programming Evolution
Presenter
Anastasia Stulova is a programming models architect on the NVIDIA HPC Compiler team. She has more than a decade of expertise in parallel programming languages and compilers supporting dedicated hardware acceleration. Her passion lies in enhancing programming productivity for GPUs.
Description
GPU programming has traditionally centered around established languages like C/C++, Fortran, and more recently, Python. Despite this, there exists a diverse range of programming models and APIs for specifying computation offloading to GPUs. Initially, GPU programming relied on target-specific offload APIs such as CUDA. However, a notable shift has occurred with the emergence of higher-level pragma-based models like OpenACC. These models empower developers to abstract away from intricate hardware details, enabling them to write code that expresses the essential properties of applications rather than dictating how it should be mapped to heterogeneous hardware. This evolution extends to standard Fortran, now providing the features facilitating offloading to GPUs. Such a rise in the level of programming abstractions is facilitated by advancements in optimizing compilers, performing common code optimizations automatically and reducing the need for routine manual code tuning for each target platform. This presentation will focus on NVIDIA's HPC Compilers, exploring the supported programming models and emphasizing the need for different programming abstractions e.g. standard Fortran, OpenACC, or CUDA Fortran, as well as the compiler role in supporting each programming model. To exemplify the differences in programming experiences, references will be made to CLOUDSC and other relevant weather and climate codes.