openmp
Einfaches Parallelbeispiel
Suche…
Syntax
#pragma omp parallel
gibt an, dass der folgende Block von allen Threads ausgeführt werden soll.int omp_get_num_threads (void)
: gibt die Anzahl der Threads zurück, die in der parallelen Region arbeiten (auch bekannt als Team von Threads).int omp_get_thread_num (void)
: gibt den Bezeichner des aufrufenden Threads zurück (reicht von 0 bis N-1, wobei N anomp_get_num_threads()
gebunden ist).
Bemerkungen
Sie können die Umgebungsvariable OMP_NUM_THREADS
oder die Direktive num_threads
in der #pragma parallel
, um die Anzahl der ausgeführten Threads für die gesamte Anwendung bzw. für den angegebenen Bereich anzugeben.
Parallele Hallo Welt mit OpenMP
Der folgende C-Code verwendet das parallele OpenMP-Programmiermodell, um die Thread-ID und die Anzahl der Threads mithilfe mehrerer Threads in stdout
zu schreiben.
#include <omp.h>
#include <stdio.h>
int main ()
{
#pragma omp parallel
{
// ID of the thread in the current team
int thread_id = omp_get_thread_num();
// Number of threads in the current team
int nthreads = omp_get_num_threads();
printf("I'm thread %d out of %d threads.\n", thread_id, nthreads);
}
return 0;
}
In Fortran 90+ sieht das entsprechende Programm folgendermaßen aus:
program Hello
use omp_lib, only: omp_get_thread_num, omp_get_num_threads
implicit none
integer :: thread_id
integer :: nthreads
!$omp parallel private( thread_id, nthreads )
! ID of the thread in the current team
thread_id = omp_get_thread_num()
! Number of threads in the current team
nthreads = omp_get_num_threads()
print *, "I'm thread", thread_id, "out of", nthreads, "threads."
!$omp end parallel
end program Hello