Clacc: OpenACC for C/C++ in Clang

Joel E. Denny, Seyong Lee, Pedro Valero-Lara, Marc Gonzalez-Tallada, Keita Teranishi, Jeffrey S. Vetter

Research output: Contribution to journalArticlepeer-review

1 Scopus citations

Abstract

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.

Original languageEnglish
Pages (from-to)427-446
Number of pages20
JournalInternational Journal of High Performance Computing Applications
Volume38
Issue number5
DOIs
StatePublished - Sep 2024

Funding

This material is based upon work by the RAPIDS Institute, supported by DOE, Office of Science, Office of Advanced Scientific Computing Research, Scientific Discovery through Advanced Computing (SciDAC) program. The author(s) disclosed receipt of the following financial support for the research, authorship, and/or publication of this article: This research was supported by the Exascale Computing Project (17-SC-20-SC), a joint project of DOE\u2019s Office of Science and National Nuclear Security Administration, responsible for delivering a capable exascale ecosystem, including software, applications, and hardware technology, to support the nation\u2019s exascale computing imperative. This research used resources of the Experimental Computing Laboratory (ExCL) and the Oak Ridge Leadership Computing Facility at ORNL, which is supported by DOE\u2019s Office of Science under contract number DE-AC05-00OR22725. This research used resources of the Argonne Leadership Computing Facility, a DOE Office of Science user facility at Argonne National Laboratory, and is based on research supported by the DOE\u2019s Office of Science-Advanced Scientific Computing Research Program under contract number DE-AC02-06CH11357. The author(s) disclosed receipt of the following financial support for the research, authorship, and/or publication of this article: This research was supported by the Exascale Computing Project (17-SC-20-SC), a joint project of DOE\u2019s Office of Science and National Nuclear Security Administration, responsible for delivering a capable exascale ecosystem, including software, applications, and hardware technology, to support the nation\u2019s exascale computing imperative. This research used resources of the Experimental Computing Laboratory (ExCL) and the Oak Ridge Leadership Computing Facility at ORNL, which is supported by DOE\u2019s Office of Science under contract number DE-AC05-00OR22725. This research used resources of the Argonne Leadership Computing Facility, a DOE Office of Science user facility at Argonne National Laboratory, and is based on research supported by the DOE\u2019s Office of Science-Advanced Scientific Computing Research Program under contract number DE-AC02-06CH11357. This manuscript has been authored by UT-Battelle LLC under contract DE-AC05-00OR22725 with the US Department of Energy (DOE). The US government retains and the publisher, by accepting the article for publication, acknowledges that the US government retains a nonexclusive, paid-up, irrevocable, worldwide license to publish or reproduce the published form of this manuscript, or allow others to do so, for US government purposes. DOE will provide public access to these results of federally sponsored research in accordance with the DOE Public Access Plan ( http://energy.gov/downloads/doe-public-access-plan ). Acknowledgements

Keywords

  • Clang
  • Kokkos
  • LLVM
  • OpenACC
  • OpenMP

Fingerprint

Dive into the research topics of 'Clacc: OpenACC for C/C++ in Clang'. Together they form a unique fingerprint.

Cite this