Back

Minisymposium Presentation

The Role of Optimising Compilers in the GPU Programming Evolution

Wednesday, June 5, 2024
11:30
-
12:00
CEST
Climate, Weather and Earth Sciences
Climate, Weather and Earth Sciences
Climate, Weather and Earth Sciences
Chemistry and Materials
Chemistry and Materials
Chemistry and Materials
Computer Science and Applied Mathematics
Computer Science and Applied Mathematics
Computer Science and Applied Mathematics
Humanities and Social Sciences
Humanities and Social Sciences
Humanities and Social Sciences
Engineering
Engineering
Engineering
Life Sciences
Life Sciences
Life Sciences
Physics
Physics
Physics

Presenter

Anastasia
Stulova
-
NVIDIA Inc.

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.

Authors