Skip to main content
U.S. Department of Energy
Office of Scientific and Technical Information

Clacc: OpenACC for C/C++ in Clang

Journal Article · · International Journal of High Performance Computing Applications
The Clacc project has developed OpenACC compiler, runtime, and profiling interface support for C/C++ by extending Clang and LLVM. A key Clacc design feature is that it translates OpenACC to OpenMP to leverage the OpenMP offloading support that is actively being developed for Clang and LLVM. A benefit of this design is support for two compilation modes: traditional compilation mode produces a binary, and source-to-source mode produces OpenMP source. Clacc has been deployed on Oak Ridge National Laboratory’s (ORNL’s) Frontier, on which Clacc is the only OpenACC implementation for C/C++. Clacc supports x86_64, POWER9, AMD GPUs, and NVIDIA GPUs. Clacc’s OpenACC profiling interface support has been integrated with TAU, which is also deployed on Frontier. While Clacc has always supported C as a base language, Clacc also has increasing C++ support, including support for Kokkos’s OpenACC back end. Clacc itself is hosted publicly on GitHub. In this paper, we describe Clacc’s design and mapping from OpenACC directives to OpenMP. We also present a performance evaluation on ORNL’s Frontier (AMD MI250x GPU offload) and Argonne National Laboratory’s (ANL’s) Polaris (NVIDIA A100 GPU offload) for various SPEC ACCEL and Kokkos OpenACC back end benchmarks.
Research Organization:
Oak Ridge National Laboratory (ORNL), Oak Ridge, TN (United States)
Sponsoring Organization:
USDOE National Nuclear Security Administration (NNSA); USDOE Office of Science (SC), Advanced Scientific Computing Research (ASCR). Scientific Discovery through Advanced Computing (SciDAC)
Grant/Contract Number:
AC05-00OR22725
OSTI ID:
2438826
Journal Information:
International Journal of High Performance Computing Applications, Journal Name: International Journal of High Performance Computing Applications Vol. 0; ISSN 1094-3420
Publisher:
SAGECopyright Statement
Country of Publication:
United States
Language:
English

References (7)

OpenACC Profiling Support for Clang and LLVM using Clacc and TAU conference November 2020
OpenACC to FPGA: A Framework for Directive-Based High-Performance Reconfigurable Computing conference May 2016
CLACC: Translating OpenACC to OpenMP in Clang conference November 2018
Understanding Portability of a High-Level Programming Model on Contemporary Heterogeneous Architectures journal July 2015
KokkACC: Enhancing Kokkos with OpenACC conference November 2022
OpenARC: open accelerator research compiler for directive-based, efficient heterogeneous computing conference January 2014
The Tau Parallel Performance System journal May 2006

Similar Records

Clacc: Translating OpenACC to OpenMP in Clang
Conference · Thu Nov 01 00:00:00 EDT 2018 · OSTI ID:1489555

Evaluating performance and portability of high-level programming models: Julia, Python/Numba, and Kokkos on exascale nodes
Conference · Mon May 01 00:00:00 EDT 2023 · OSTI ID:1994693

Performance-Portable GPU Acceleration of the EFIT Tokamak Plasma Equilibrium Reconstruction Code
Conference · Sat Nov 11 23:00:00 EST 2023 · Proceedings of the SC '23 Workshops of The International Conference on High Performance Computing, Network, Storage, and Analysis · OSTI ID:2477210