OpenMP 4.0 Device Support in the OMPi Compiler

  • Alexandros Papadogiannakis
  • Spiros N. Agathos
  • Vassilios V. Dimakopoulos
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 9342)


OpenMP 4.0 represents a major upgrade in the language specifications of the standard. Important constructs for the exploitation of simd parallelism, the support for dependencies among tasks and the ability to cancel the operations of a team of threads have been added. What is arguably the most important addition, however, is the introduction of the device model. A variety of computational units, such as gpus, dsps and general or special purpose accelerators are viewed as attached devices, where portion of a unified application code can be offloaded for execution. In this work we present the infrastructure for device support in the ompi research compiler, one of the few compilers that currently implement the new device directives. We discuss the necessary compiler transformations and the general runtime organization. For the first time, special emphasis is placed on the important problem of data environment handling. In addition, we present a prototype implementation on the popular Parallella board which exploits the dual-core arm host processor and the 16-core Epiphany accelerator of the system.


Shared Memory Target Directive Data Environment Runtime System Symbol Table 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.



The authors would like to thank Adapteva for providing them with a Parallella-16 board through the Parallella University Program.


  1. 1.
    Adapteva: Epiphany SDK reference Manual, September 2013Google Scholar
  2. 2.
    Adapteva: Parallella Reference Manual, September 2014Google Scholar
  3. 3.
    Agathos, S.N., Papadogiannakis, A., Dimakopoulos, V.V.: Targeting the parallella. In: Träff, J.L., Hunold, S., Versaci, F. (eds.) Euro-Par 2015. LNCS, vol. 9233, pp. 662–674. Springer, Heidelberg (2015) CrossRefGoogle Scholar
  4. 4.
    Appel, A.W.: Modern Compiler Implementation in C. Cambridge University Press, Cambridge (1999)zbMATHGoogle Scholar
  5. 5.
    Bertolli, C., Antao, S.F., Eichenberger, A.E., O’Brien, K., Sura, Z., Jacob, A.C., Chen, T., Sallenave, O.: Coordinating GPU threads for OpenMP 4.0 in LLVM. In: Proceedings of LLVM-HPC 2014, New Orleans, Louisiana, pp. 12–21, November 2014Google Scholar
  6. 6.
    Brown Deer Technology, LLC: COPRTHR API Reference (2014)Google Scholar
  7. 7.
    Bull, J.M.: Measuring synchronisation and scheduling overheads in OpenMP. In: Proceedings of 1st EWOMP, Lund, Sweden, pp. 99–105, September 1999Google Scholar
  8. 8.
    Liao, C., Yan, Y., de Supinski, B.R., Quinlan, D.J., Chapman, B.: Early experiences with the OpenMP accelerator model. In: Rendell, A.P., Chapman, B.M., Müller, M.S. (eds.) IWOMP 2013. LNCS, vol. 8122, pp. 84–98. Springer, Heidelberg (2013) CrossRefGoogle Scholar
  9. 9.
    Dimakopoulos, V.V., Leontiadis, E., Tzoumas, G.: A portable C compiler for OpenMP V. 2.0. In: Proceedings of EWOMP 2003, Aachen, Germany, pp. 5–11, September 2003Google Scholar
  10. 10.
    Duran, A., Teruel, X., Ferrer, R., Martorell, X., Ayguadé, E.: Barcelona OpenMP tasks suite: a set of benchmarks targeting the exploitation of task parallelism in OpenMP. In: Proceedings of ICPP 2009, Vienna, Austria, pp. 124–131, September 2009Google Scholar
  11. 11.
    GNU: GCC 5 Release Series.
  12. 12.
    Intel Corporation: User and Reference Guide for the Intel C++ Compiler 15.0, OpenMP* Support.
  13. 13.
    Khronos OpenCL Working Group: The OpenCL Specification Version: 1.2, November 2012Google Scholar
  14. 14.
    Kirk, D.B., Hwu, W.M.W.: Programming Massively Parallel Processors: A Hands-on Approach, 2nd edn. Morgan Kaufmann, San Francisco (2012)Google Scholar
  15. 15.
    Mitra, G., Stotzer, E., Jayaraj, A., Rendell, A.P.: Implementation and optimization of the OpenMP accelerator model for the TI keystone II architecture. In: DeRose, L., de Supinski, B.R., Olivier, S.L., Chapman, B.M., Müller, M.S. (eds.) IWOMP 2014. LNCS, vol. 8766, pp. 202–214. Springer, Heidelberg (2014) Google Scholar
  16. 16.
    Newburn, C., Deodhar, R., Dmitriev, S., Murty, R., Narayanaswamy, R., Wiegert, J., Chinchilla, F., McGuire, R.: Offload Compiler Runtime for the Intel Xeon PhiTM Coprocessor. In: Proceedings of ISC 2013, Leipzig, Germany, pp. 239–254, June 2013Google Scholar
  17. 17.
    OpenACC: The OpenACC Application Programming Interface, V. 2.0, June 2013Google Scholar
  18. 18.
    OpenMP ARB: OpenMP Application Program Interface V4.0, July 2013Google Scholar

Copyright information

© Springer International Publishing Switzerland 2015

Authors and Affiliations

  • Alexandros Papadogiannakis
    • 1
  • Spiros N. Agathos
    • 1
  • Vassilios V. Dimakopoulos
    • 1
  1. 1.Department of Computer Science and EngineeringUniversity of IoanninaIoanninaGreece

Personalised recommendations