openmp
Enkelt parallellt exempel
Sök…
Syntax
#pragma omp parallel
indikerar att följande block ska köras av alla trådar.int omp_get_num_threads (void)
: returnerar antalet trådar som arbetar på det parallella området (aka team av trådar).int omp_get_thread_num (void)
: returnerar identifieraren för den ringande tråden (sträcker sig från 0 till N-1 där N är begränsat tillomp_get_num_threads()
).
Anmärkningar
Du kan använda OMP_NUM_THREADS
miljövariabeln eller num_threads
direktivet inom #pragma parallel
att ange antalet exekverande trådar för hela applikationen respektive för det angivna området.
Parallell hejvärld med OpenMP
Följande C-kod använder den parallella programmeringsmodellen OpenMP för att skriva tråd-ID och antal trådar till stdout
med flera trådar.
#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;
}
I Fortran 90+ ser det motsvarande programmet ut:
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
Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow