An in-depth evaluation of GCC's OpenACC implementation in Cray systems
Veronica Melesse Vergara · OSTI OAI (U.S. Department of Energy Office of Scientific and Technical Information) · 2023
OpenACC is a directive-based API that extends the C/C++ and Fortran base languages to program accelerators and multicores.Several commercial implementations are available that support OpenACC including PGI, Cray, and PathScale.More recently, GCC started adding support for OpenACC and is expected to fully support the OpenACC 2.0 specification in the upcoming GCC 7 release.However, to our knowledge, the quality and performance of GCC's OpenACC implementation have not been studied in detail.In this paper, we will perform an in-depth evaluation of GCC's OpenACC implementation on Titan, ORNL's Cray XK7 supercomputer, and compare it to other commercially available compiler implementations.We first start by providing a description of the OpenACC implementation design in GCC, its runtime, as well as provide an overview of the current state of OpenACC supported features as described in GCC 6.3.Then, we we will evaluate the quality and performance of the GCC 6.x implementation by using the OpenACC Verification and Validation suite [1] to test the accuracy and correctness of the implementation, the EPCC OpenACC benchmark suite [2] to measure performance, and the SPEC ACCEL benchmark [3] OpenACC suite to exercise the implementation.We believe that the results presented in this study will be useful for the larger community interested in using and evaluating new OpenACC implementations.