Abstract
OpenACC is an emerging directive-based programming model for programming accelerators that typically enable non-expert programmers to achieve portable and productive performance of their applications. In this paper, we present the research and development challenges, and our solutions to create an open-source OpenACC compiler in a main stream compiler framework (OpenUH of a branch of Open64). We discuss in details our loop mapping techniques, i.e. how to distribute loop iterations over the GPGPU’s threading architectures, as well as their impacts on performance. The runtime support of this programming model are also presented. The compiler was evaluated with several commonly used benchmarks, and delivered similar performance to those obtained using a commercial compiler. We hope this implementation to serve as compiler infrastructure for researchers to explore advanced compiler techniques, to extend OpenACC to other programming languages, or to build performance tools used with OpenACC programs.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
CAPS Enterprise OpenACC Compiler Reference Manual, June 2013. http://www.openacc.org/sites/default/files/HMPPOpenACC-3.2_ReferenceManual.pdf
CAPS OpenACC Parallism Mapping (2013). http://kb.caps-entreprise.com/what-gang-workers-and-threads-correspond-to-on-a-cuda-card
Performance Test Suite, June 2013. https://hpcforge.org/plugins/mediawiki/wiki/kernelgen/index.php/Performance_Test_Suite
PGI Compilers, June 2013. http://www.pgroup.com/resources/accel.htm
The OpenACC Standard, June 2013. http://www.openacc-standard.org
Brent Leback, M.W., Miles, D.: The PGI Fortran and C99 OpenACC Compilers. Cray User Group (2012)
Cray, C.: C++ Reference Manual (2003)
Han, T.D., Abdelrahman, T.S.: hiCUDA: high-level GPGPU programming. IEEE Trans. Parallel Distrib. Syst. 22, 78–90 (2011)
Lee, S., Eigenmann, R.: OpenMPC: extended openMP programming and tuning for GPUs. In: Proceedings of the 2010 ACM/IEEE International Conference for High Performance Computing, Networking, Storage and Analysis, pp. 1–11. IEEE Computer Society (2010)
Liao, C., Hernandez, O., Chapman, B., Chen, W., Zheng, W.: OpenUH: an optimizing, portable OpenMP compiler. Concurrency Comput. Pract. Experience 19(18), 2317–2332 (2007)
Mikushin, D., Likhogrud, N.: KERNELGEN - a toolchain for automatic GPU-centric applications porting (2012). https://hpcforge.org/scm/viewvc.php/checkout/doc/sc_2012/sc_2012.pdf?root=kernelgen
Reyes, R., López-Rodríguez, I., Fumero, J.J., de Sande, F.: accULL: an OpenACC implementation with CUDA and OpenCL support. In: Kaklamanis, C., Papatheodorou, T., Spirakis, P.G. (eds.) Euro-Par 2012. LNCS, vol. 7484, pp. 871–882. Springer, Heidelberg (2012)
Stratton, J.A., Rodrigues, C., Sung, I.-J., Obeid, N., Chang, L.-W., Anssari, N., Liu, G.D., Hwu, W.: Parboil: a revised benchmark suite for scientific and commercial throughput computing. Center for Reliable and High-Performance Computing (2012)
Acknowledgements
This work was supported in part by the NVIDIA and Department of Energy under Award Agreement No. DE-FC02-12ER26099. We would also like to thank PGI for providing the compilers and support for the evaluation.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2014 Springer International Publishing Switzerland
About this paper
Cite this paper
Tian, X., Xu, R., Yan, Y., Yun, Z., Chandrasekaran, S., Chapman, B. (2014). Compiling a High-Level Directive-Based Programming Model for GPGPUs. In: Cașcaval, C., Montesinos, P. (eds) Languages and Compilers for Parallel Computing. LCPC 2013. Lecture Notes in Computer Science(), vol 8664. Springer, Cham. https://doi.org/10.1007/978-3-319-09967-5_6
Download citation
DOI: https://doi.org/10.1007/978-3-319-09967-5_6
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-09966-8
Online ISBN: 978-3-319-09967-5
eBook Packages: Computer ScienceComputer Science (R0)