Clacc: OpenACC Support for Clang and LLVM
Clacc will contribute production-quality OpenACC compiler support to clang/LLVM.
OpenACC support in clang/LLVM will facilitate the programming of GPUs and other accelerators in DOE applications, and it will provide a popular compiler platform on which to perform research and development for related optimizations and tools (e.g., static analyzers, debuggers, editor extensions).
Clacc’s key design feature is that it translates OpenACC to OpenMP in order to build on clang’s existing OpenMP compiler and runtime support. Because OpenACC is more descriptive and OpenMP is more prescriptive, this translation can be seen as lowering, and the mapping between directives is not simply one-to-one, so sophisticated compiler analysis is required.
Publications and Presentations
- Clacc: Translating OpenACC to OpenMP in Clang, Denny, J., Lee S., and Vetter J.S. , LLVM-HPC, Dallas, TX, (2018)
- Clacc: OpenACC Support for Clang and LLVM, Denny, J., Lee S., and Vetter J.S. , EuroLLVM, Bristol, UK, (2018)
- PROTEAS: PROgramming Toolchain for Emerging Architectures and Systems
- OpenACC: Portable directive-based programming model for heterogeneous accelerators
- The LLVM Compiler Infrastructure
- Joel E. Denny (Email: dennyje AT ornl DOT gov)