OpenMP ist eine Reihe von Compiler-Anweisungen und APIs für in C, C++ oder FORTRAN geschriebene Programme, die Unterstützung für parallele Programmierung in einer Shared-Memory-Umgebung bieten. OpenMP erkennt parallele Regionen als Codeblöcke, die parallel ausgeführt werden können. Anwendungsentwickler fügen Compiler-Anweisungen in den Code einer parallelen Region ein, die die OpenMP-Laufzeitbibliothek anweisen, die Region parallel auszuführen. Das folgende C-Programm veranschaulicht die Compiler-Anweisung über einem parallelen Bereich, der eine printf()-Anweisung enthält –
#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; }
Wenn OpenMP auf diese Anweisung
#pragma omp parallel
trifft, werden so viele Threads erstellt, wie es Verarbeitungskerne im System gibt. Für ein Dual-Core-System werden also zwei Threads erstellt, für ein Quad-Core-System werden vier Threads erstellt und so weiter. Alle Threads führen dann den Parallelbereich gleichzeitig aus. Jeder Thread wird beendet, wenn er den Parallelbereich verlässt. OpenMP bietet mehrere zusätzliche Anweisungen zum parallelen Ausführen von Coderegionen, einschließlich Parallelisierungsschleifen.
Neben der Bereitstellung von Parallelisierungsanweisungen ermöglicht OpenMP Entwicklern die Wahl zwischen mehreren Parallelitätsebenen. Sie können beispielsweise die Anzahl der Threads manuell festlegen. Außerdem können Entwickler damit erkennen, ob Daten zwischen Threads gemeinsam genutzt werden oder ob sie Thread-privat sind. OpenMP ist auf mehreren Open-Source- und kommerziellen Compilern für Linux-, Windows- und Mac OS X-Systeme verfügbar.
Das obige ist der detaillierte Inhalt vonWas ist OpenMP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!