1 of 1

Clacc: OpenACC Support for C/C++

1

Scientific Achievement

  • Traditional OpenACC compiler and runtime support built on Clang/LLVM
  • Integration with profiling tools like TAU via OpenACC profiling interface
  • Kokkos application support via Kokkos’s OpenACC backend
  • Reuse of OpenMP implementation for OpenACC applications
  • Device support inherited from Clang/LLVM (e.g., AMD and NVIDIA GPUs)

Significance and Impact

  • OpenACC facilitates GPU/accelerator programming in HPC apps & beyond
  • Clang/LLVM provide widely popular platform for compiler R&D
  • Clacc is the only operational OpenACC support based on Clang
  • Clacc is the only OpenACC support for C/C++ deployed on ORNL’s Frontier
  • Clacc is the only AMD GPU support for Kokkos’s OpenACC backend

Clacc Compiler Design

Clacc’s design decision to translate OpenACC to OpenMP enables two OpenACC compilation modes: traditional compilation mode and source-to-source mode. Clacc allows existing OpenACC applications to be ported to heterogeneous devices using the underlying OpenMP support available on the target system.

PI(s): Robert Ross (ANL) Project POC: Joel E. Denny (ORNL)

ASCR Program: [SciDAC5 RAPIDS2] ASCR PM: Kalyan Perumalla

Publication for this work: Joel E. Denny, et al., “Clacc: OpenACC for C/C++ in Clang”, International Journal of High Performance Computing Applications (accepted).

DOI: 10.1109/HUSTProtools51951.2020.00012

Technical Approach

  • A key Clacc design decision is to translate OpenACC to OpenMP in order to build upon the OpenMP support provided by Clang/LLVM
  • Source-to-source mode enables targeting other OpenMP compilers

Joel E. Denny, Seyong Lee, Pedro Valero Lara, Marc Gonzalez-Tallada, Keita Teranishi, and Jeffrey S. Vetter, “Clacc: OpenACC for C/C++ in Clang”, International Journal of High Performance Computing Applications (accepted).