Clacc: OpenACC for C/C++ in Clang

J. Denny, Seyong Lee, Pedro Valero-Lara, Marc Gonzalez-Tallada, Keita Teranishi, Jeffrey S. Vetter
{"title":"Clacc: OpenACC for C/C++ in Clang","authors":"J. Denny, Seyong Lee, Pedro Valero-Lara, Marc Gonzalez-Tallada, Keita Teranishi, Jeffrey S. Vetter","doi":"10.1177/10943420241261976","DOIUrl":null,"url":null,"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.","PeriodicalId":506320,"journal":{"name":"The International Journal of High Performance Computing Applications","volume":"41 10","pages":""},"PeriodicalIF":0.0000,"publicationDate":"2024-06-14","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"The International Journal of High Performance Computing Applications","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1177/10943420241261976","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 0

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.
Clacc:Clang 中的 C/C++ OpenACC
Clacc 项目通过扩展 Clang 和 LLVM,为 C/C++ 开发了 OpenACC 编译器、运行时和剖析接口支持。Clacc 的一个主要设计特点是将 OpenACC 转换为 OpenMP,以充分利用 Clang 和 LLVM 正在积极开发的 OpenMP 卸载支持。这种设计的一个好处是支持两种编译模式:传统编译模式产生二进制文件,源代码到源代码模式产生 OpenMP 源代码。Clacc 已部署在橡树岭国家实验室(ORNL)的 Frontier 上,Clacc 是该实验室唯一的 C/C++ OpenACC 实现。Clacc 支持 x86_64、POWER9、AMD GPU 和 NVIDIA GPU。Clacc 的 OpenACC 剖析接口支持已与 TAU 集成,后者也部署在 Frontier 上。虽然 Clacc 一直支持 C 作为基础语言,但它也越来越多地支持 C++,包括支持 Kokkos 的 OpenACC 后端。Clacc 本身公开托管在 GitHub 上。在本文中,我们将介绍 Clacc 的设计以及 OpenACC 指令与 OpenMP 的映射。我们还介绍了在 ORNL 的 Frontier(AMD MI250x GPU 卸载)和阿贡国家实验室(ANL)的 Polaris(NVIDIA A100 GPU 卸载)上针对各种 SPEC ACCEL 和 Kokkos OpenACC 后端基准进行的性能评估。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 求助全文
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:604180095
Book学术官方微信