Strengthening GCC for GPU Offloading in HPC Systems

Context & Challenges

To support next-generation high-performance computing (HPC) workloads, Oak Ridge National Laboratory required significant improvements to GCC’s GPU offloading capabilities.

Modern supercomputers increasingly depend on heterogeneous architectures, combining CPUs with AMD and NVIDIA GPUs. However, achieving efficient and portable execution across these systems posed several challenges:

  • Incomplete support for modern OpenMP and OpenACC standards in GCC
  • Limited maturity of GPU backends for production-grade workloads
  • Need for performance portability across diverse accelerator architectures
  • Constraints on power efficiency in large-scale computing systems
  • Requirement to deliver all improvements through upstream open-source contributions

BayLibre was engaged to enhance GCC’s accelerator support while ensuring long-term maintainability and ecosystem alignment.

Achievements

BayLibre delivered key improvements to GCC, enabling broader adoption of GPU offloading in HPC environments.

Core contributions included:

  • Implementation of OpenMP 5.x (5.0, 5.1, 5.2) features for AMD and NVIDIA GPUs
  • Integration of OpenACC 2.7 support across accelerator backends
  • Introduction of a GPU-compatible C++ freestanding standard library
  • Development of interoperability mechanisms with CUDA, HIP, and HSA
  • Early-stage performance optimization work targeting GPU execution efficiency
  • Continuous upstream contributions including bug fixes, refactoring, and documentation

These enhancements significantly improved GCC’s ability to support real-world accelerator workloads.

Open-Source Story

BayLibre’s work is rooted in long-term engagement with the GCC ecosystem.

The Compiler team includes long-standing contributors and maintainers with deep experience in GNU toolchains. Over time, the team has:

  • Delivered thousands of upstream contributions to GCC
  • Actively reviewed and improved code across multiple subsystems
  • Participated in the evolution of OpenMP and OpenACC specifications
  • Contributed to GPU-related backends including NVPTX and AMD GCN

All developments were carried out using an upstream-first approach, ensuring that improvements are:

  • Maintained within GCC mainline
  • Accessible to the broader HPC community
  • Free from vendor-specific fragmentation

Tech Stack

Toolchain
GCC (GNU Compiler Collection)
Languages
C, C++, Fortran
Standards
OpenMP (up to 5.2), OpenACC (2.7)
GPU Backends
NVPTX (NVIDIA), AMD GCN
Interoperability
CUDA, HIP, HSA
Domain
High-Performance Computing (HPC), GPU acceleration
Focus Areas
Compiler development, parallel programming, portability, performance

Customer Testimonial

“BayLibre’s development work to improve GCC has the potential to benefit the entire HPC community.”

David Bernholdt
Distinguished R&D Staff Member, Oak Ridge National Laboratory