Clacc: Translating OpenACC to OpenMP in Clang

TitleClacc: Translating OpenACC to OpenMP in Clang
Publication TypeConference Paper
Year of Publication2018
AuthorsDenny, Joel E., Lee Seyong, and Vetter Jeffrey S.
Conference Name2018 IEEE/ACM 5th Workshop on the LLVM Compiler Infrastructure in HPC (LLVM-HPC)
Conference LocationDallas, TX, USA
KeywordsAccelerators, compiler, GPU, LLVM, multicore, OpenACC, OpenMP, source-to-source translation

OpenACC was launched in 2010 as a portable programming model for heterogeneous accelerators.  Although various implementations already exist, no extensible, open-source, production-quality compiler support is available to the community.  This deficiency poses a serious risk for HPC application developers targeting GPUs and other accelerators, and it limits experimentation and progress for the OpenACC specification.  To address this deficiency, Clacc is a recent effort funded by the US Exascale Computing Project to develop production OpenACC compiler support for Clang and LLVM.  A key feature of the Clacc design is to translate OpenACC to OpenMP to build on Clang's existing OpenMP compiler and runtime support.  In this paper, we describe the Clacc goals and design.  We also describe the challenges that we have encountered so far in our prototyping efforts, and we present some early performance results.