OpenMP

OpenMP
Original author(s)OpenMP Architecture Review Board[1]
Developer(s)OpenMP Architecture Review Board[1]
Stable release
6.0 / November 2024; 0 months ago (2024-11)
Operating systemCross-platform
PlatformCross-platform
TypeExtension to C, C++, and Fortran; API
LicenseVarious[2]
Websiteopenmp.org

OpenMP (Open Multi-Processing) is an application programming interface (API) that supports multi-platform shared-memory multiprocessing programming in C, C++, and Fortran,[3] on many platforms, instruction-set architectures and operating systems, including Solaris, AIX, FreeBSD, HP-UX, Linux, macOS, and Windows. It consists of a set of compiler directives, library routines, and environment variables that influence run-time behavior.[2][4][5]

OpenMP is managed by the nonprofit technology consortium OpenMP Architecture Review Board (or OpenMP ARB), jointly defined by a broad swath of leading computer hardware and software vendors, including Arm, AMD, IBM, Intel, Cray, HP, Fujitsu, Nvidia, NEC, Red Hat, Texas Instruments, and Oracle Corporation.[1]

OpenMP uses a portable, scalable model that gives programmers a simple and flexible interface for developing parallel applications for platforms ranging from the standard desktop computer to the supercomputer.

An application built with the hybrid model of parallel programming can run on a computer cluster using both OpenMP and Message Passing Interface (MPI), such that OpenMP is used for parallelism within a (multi-core) node while MPI is used for parallelism between nodes. There have also been efforts to run OpenMP on software distributed shared memory systems,[6] to translate OpenMP into MPI[7][8] and to extend OpenMP for non-shared memory systems.[9]

  1. ^ a b c "About the OpenMP ARB and". OpenMP.org. 2013-07-11. Archived from the original on 2013-08-09. Retrieved 2013-08-14.
  2. ^ a b "OpenMP Compilers & Tools". OpenMP.org. November 2019. Retrieved 2020-03-05.
  3. ^ Gagne, Abraham Silberschatz, Peter Baer Galvin, Greg (2012-12-17). Operating system concepts (9th ed.). Hoboken, N.J.: Wiley. pp. 181–182. ISBN 978-1-118-06333-0.{{cite book}}: CS1 maint: multiple names: authors list (link)
  4. ^ OpenMP Tutorial at Supercomputing 2008
  5. ^ Using OpenMP – Portable Shared Memory Parallel Programming – Download Book Examples and Discuss
  6. ^ Costa, J.J.; et al. (May 2006). "Running OpenMP applications efficiently on an everything-shared SDSM". Journal of Parallel and Distributed Computing. 66 (5): 647–658. doi:10.1016/j.jpdc.2005.06.018. hdl:2117/370260.
  7. ^ Basumallik, Ayon; Min, Seung-Jai; Eigenmann, Rudolf (2007). "Programming Distributed Memory Systems Using OpenMP". 2007 IEEE International Parallel and Distributed Processing Symposium. New York: IEEE Press. pp. 1–8. CiteSeerX 10.1.1.421.8570. doi:10.1109/IPDPS.2007.370397. ISBN 978-1-4244-0909-9. S2CID 14237507. A preprint is available on Chen Ding's home page; see especially Section 3 on Translation of OpenMP to MPI.
  8. ^ Wang, Jue; Hu, ChangJun; Zhang, JiLin; Li, JianJiang (May 2010). "OpenMP compiler for distributed memory architectures". Science China Information Sciences. 53 (5): 932–944. doi:10.1007/s11432-010-0074-0. (As of 2016 the KLCoMP software described in this paper does not appear to be publicly available)
  9. ^ Cluster OpenMP (a product that used to be available for Intel C++ Compiler versions 9.1 to 11.1 but was dropped in 13.0)