Skip to main content

Compiling a High-Level Directive-Based Programming Model for GPGPUs

  • Conference paper
  • First Online:
Languages and Compilers for Parallel Computing (LCPC 2013)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 8664))

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

References

  1. CAPS Enterprise OpenACC Compiler Reference Manual, June 2013. http://www.openacc.org/sites/default/files/HMPPOpenACC-3.2_ReferenceManual.pdf

  2. CAPS OpenACC Parallism Mapping (2013). http://kb.caps-entreprise.com/what-gang-workers-and-threads-correspond-to-on-a-cuda-card

  3. Performance Test Suite, June 2013. https://hpcforge.org/plugins/mediawiki/wiki/kernelgen/index.php/Performance_Test_Suite

  4. PGI Compilers, June 2013. http://www.pgroup.com/resources/accel.htm

  5. The OpenACC Standard, June 2013. http://www.openacc-standard.org

  6. Brent Leback, M.W., Miles, D.: The PGI Fortran and C99 OpenACC Compilers. Cray User Group (2012)

    Google Scholar 

  7. Cray, C.: C++ Reference Manual (2003)

    Google Scholar 

  8. Han, T.D., Abdelrahman, T.S.: hiCUDA: high-level GPGPU programming. IEEE Trans. Parallel Distrib. Syst. 22, 78–90 (2011)

    Article  Google Scholar 

  9. 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)

    Google Scholar 

  10. 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)

    Article  Google Scholar 

  11. 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

  12. 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)

    Chapter  Google Scholar 

  13. 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)

    Google Scholar 

Download references

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

Authors

Corresponding author

Correspondence to Xiaonan Tian .

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics