OpenMP ist weit verbreiteter Standard für Parallelisierung und unterstützt verschiedene Sprachen (C, C++, Fortran)
OpenMP wird gesteuert über C++ Pre-Prozessoranweisungen und speziellen Link-Optionen:
// compile: g++ -fopenmp -o helloOMP helloOMP.C // #include <omp.h> #include <iostream> using namespace std; int main() { #pragma omp parallel // Bereich in {} wird in multiple threads parallel ausgefuehrt { int ID = omp_get_thread_num(); cout << " hello" << ID; cout << " world " << ID << endl; } // Ende paralleler Bereich }
OpenMP macht ein sinnvolles Thread-Pool Management auf den Systemen/Umgebung im CIP, d.h. abhängig von Zahl der vorhandenen CPU-Cores wird eine entsprechende Zahl von Threads gestartet, die gleichzeitig laufen.
Intel Threading Building Blocks - TBB
sind ein weiterer weit-verbreiteter Standard für multi-threaded Programmieren. TBB erlaubt wie OpenMP einfache parallele for-loops, aber flexibler und moderner mit vielen weiteren Features (parallel-reduce, Thread-safe Container, ...).
Ein schöner Überblick ist in diesem Kurs zu Super Computing.
GDuckeck 2019-08-01