WikiDer > OpenMP
OpenMP ist ein Schnittstelle für Programmieranwendungen (API), die die Programmierung für mehrere Prozessoren erleichtert. Das MP in OpenMP steht für Multi Processing, Open bedeutet, dass es a offener Standard ist, was bedeutet, dass jeder eine Implementierung vornehmen kann, ohne dafür eine Agentur bezahlen zu müssen. OpenMP ist für die Sprachen angegeben C/C und fortran.
Damit ein Programm mehrere Prozessoren gut nutzen kann, ist es wichtig, dass Teile des Programms parallel ausgeführt werden können. Dies geschieht in der Regel von mehreren Faden und lassen Sie dann diese Threads einen bestimmten Teil des Programms ausführen. Bei richtiger Ausführung kann eine extrem gute Parallelität erreicht werden. Allerdings ist es auch eine recht pikante Art, denn viele Programme sind normalerweise sehr seriell aufgebaut. Oftmals gibt es nur sehr wenige Aufgaben, die vollständig von vorherigen Aufgaben getrennt sind.
OpenMP verfolgt einen ganz anderen Ansatz. Anstatt verschiedene Tasks separat auszuführen, versucht es, (Teile) einer Task, die parallel ausgeführt werden könnte, während der Laufzeit auf verschiedene Threads zu verteilen. Diese Gruppe von Threads heißt a Thread-Team. Der Programmierer eines Programms, das OpenMP verwendet, muss Compiler-Direktiven geben an, welche Teile parallel ausgeführt werden könnten. OpenMP bestimmt dann zur Laufzeit, welche Threads welchen Teil welcher Aufgabe ausführen sollen.
Ein Beispiel:
#pragma omp parallel forfor(int i = 0;i < 100000;i ){ array[i] = array[i] * array[i];}In diesem Beispiel ist der Ausdruck #pragma omp parallel für weist darauf hin, dass der Inhalt dieser Programmschleife prinzipiell parallel ausgeführt werden kann. In dieser Schleife ist es nicht wichtig, dass eine vorherige Iteration bereits abgeschlossen wurde. Ob es irgendwann parallel ausgeführt wird und mit wie vielen Threads das erledigt wird, kann OpenMP normalerweise selbst entscheiden.