OpenMP is a set of compiler directives and APIs for programs written in C, C, or FORTRAN that provide support for parallel programming in a shared memory environment. OpenMP recognizes parallel regions as blocks of code that can run in parallel. Application developers insert compiler directives into the code of a parallel region that instruct the OpenMP runtime library to execute the region in parallel. The following C program illustrates the compiler directive over a parallel region containing a printf() statement -
#include <omp.h> #include <stdio.h> int main(int argc, char *argv[]){ /* sequential code */ #pragma omp parallel{ printf("I am a parallel region."); } /* sequential code */ return 0; }
When OpenMP encounters this directive
#pragma omp parallel
it creates the same processing core as in the system Many threads. So, for a dual-core system, two threads are created, for a quad-core system, four threads are created; and so on. All threads then execute the parallel region simultaneously. Each thread terminates when it exits the parallel region. OpenMP provides several additional directives for running regions of code in parallel, including parallelizing loops.
In addition to providing parallelization directives, OpenMP also allows developers to choose between multiple levels of parallelism. For example, they can manually set the number of threads. It also allows developers to identify whether data is shared between threads or thread-private. OpenMP is available on several open source and commercial compilers for Linux, Windows, and Mac OS X systems.
The above is the detailed content of What is OpenMP?. For more information, please follow other related articles on the PHP Chinese website!