OpenMP
Z Wikipedii
OpenMP jest specyfikacją dyrektyw kompilatora, bibliotek i zmiennych środowiskowych na potrzeby przetwarzania współbieżnego w Fortranie i C/C++ opartego o mechanizm pamięci współdzielonej oraz wątki. Zaprojektowany przez głównych twórców sprzętu i oprogramowania zapewnia przenośne i skalowalne wspólne API dla różnych platform sprzętowych i programowych.
Ideą OpenMP jest stworzenie prostego mechanizmu wspierającego programowanie wielowątkowe, bez konieczności posiadania szczegółowej wiedzy o tworzeniu, synchronizacji i niszczeniu wątków. Zamiast tego programista otrzymuje możliwość bezpośredniego określania, które partie programu i jak mają być wykonane.
Przykładowy program typu "hello world":
#include <omp.h> #include <stdio.h> int main (int argc, char *argv[]) { int id, nthreads; #pragma omp parallel private(id) { id = omp_get_thread_num(); printf("Hello World from thread %d\n", id); #pragma omp barrier if ( id == 0 ) { nthreads = omp_get_num_threads(); printf("There are %d threads\n",nthreads); } } }
Przykład kompilacji (dla kompilatora Intel C++):
$ icc -openmp program.cpp -o program
Uruchomienie programu dla czterech wątków:
$ env OMP_NUM_THREADS=4 ./program