TY - GEN
T1 - Flacc
T2 - 7th IEEE/ACM Annual Workshop on the LLVM Compiler Infrastructure in HPC, LLVM-HPC 2021
AU - Clement, Valentin
AU - Vetter, Jeffrey S.
N1 - Publisher Copyright:
© 2021 IEEE.
PY - 2021
Y1 - 2021
N2 - OpenACC is a directive-based programming model for heterogeneous accelerators initially launched in 2010 to provide a portable solution at a level of abstraction above OpenCL, CUDA, and other lower-level programming models. Various implementations of OpenACC for C, C++, and Fortran exist; however, only one open-source, production implementation of OpenACC for Fortran does exist. Moreover, most contemporary compiler tool chains for heterogeneous computing are based on LLVM. This lack of support poses a serious risk for high-performance computing application developers targeting GPUs and other accelerators, and it limits the ability of the community to experiment with, extend, and contribute to the OpenACC specification and open-source implementation itself. To address this gap, we have designed and begun implementing Flacc: An effort funded by the US Exascale Computing Project to develop production OpenACC compiler support for Fortran based on Flang within the LLVM ecosystem. In this paper, we describe the Flacc goals, initial design and prototype, and challenges that we have encountered so far in our prototyping efforts. Flacc is implemented as a MLIR dialect in the Flang Fortran front end in LLVM. The Flacc front end currently supports OpenACC version 3.1, and the Flacc run time is currently under development and relies on contributions from the Clacc project. Current contributions to Flacc are available in the main {\color{Green}{\mathbf{LLVM}}\;{\mathbf{repository}}}.1
AB - OpenACC is a directive-based programming model for heterogeneous accelerators initially launched in 2010 to provide a portable solution at a level of abstraction above OpenCL, CUDA, and other lower-level programming models. Various implementations of OpenACC for C, C++, and Fortran exist; however, only one open-source, production implementation of OpenACC for Fortran does exist. Moreover, most contemporary compiler tool chains for heterogeneous computing are based on LLVM. This lack of support poses a serious risk for high-performance computing application developers targeting GPUs and other accelerators, and it limits the ability of the community to experiment with, extend, and contribute to the OpenACC specification and open-source implementation itself. To address this gap, we have designed and begun implementing Flacc: An effort funded by the US Exascale Computing Project to develop production OpenACC compiler support for Fortran based on Flang within the LLVM ecosystem. In this paper, we describe the Flacc goals, initial design and prototype, and challenges that we have encountered so far in our prototyping efforts. Flacc is implemented as a MLIR dialect in the Flang Fortran front end in LLVM. The Flacc front end currently supports OpenACC version 3.1, and the Flacc run time is currently under development and relies on contributions from the Clacc project. Current contributions to Flacc are available in the main {\color{Green}{\mathbf{LLVM}}\;{\mathbf{repository}}}.1
KW - GPU
KW - LLVM
KW - MLIR
KW - OpenACC
KW - OpenMP
KW - accelerators
KW - compiler
KW - multicore
UR - http://www.scopus.com/inward/record.url?scp=85124199183&partnerID=8YFLogxK
U2 - 10.1109/LLVMHPC54804.2021.00007
DO - 10.1109/LLVMHPC54804.2021.00007
M3 - Conference contribution
AN - SCOPUS:85124199183
T3 - Proceedings of LLVM-HPC 2021: 7th Annual Workshop on the LLVM Compiler Infrastructure in HPC, Held in conjunction with SC 2021: The International Conference for High Performance Computing, Networking, Storage and Analysis
SP - 12
EP - 19
BT - Proceedings of LLVM-HPC 2021
PB - Institute of Electrical and Electronics Engineers Inc.
Y2 - 14 November 2021
ER -