Exemple parallèle simple
Sur cette page
Syntaxe
-
#pragma omp parallel
indique que le bloc suivant doit être exécuté par tous les threads. -
int omp_get_num_threads (void)
: renvoie le nombre de threads travaillant sur la région parallèle (c’est-à-dire l’équipe de threads). -
int omp_get_thread_num (void)
: renvoie l’identifiant du thread appelant (de 0 à N-1 où N est borné àomp_get_num_threads()
).
Vous pouvez utiliser la variable d’environnement OMP_NUM_THREADS
ou la directive num_threads
dans le #pragma parallel
pour indiquer le nombre de threads en cours d’exécution pour l’ensemble de l’application ou pour la région spécifiée, respectivement.
Parallèle hello world en utilisant OpenMP
Le code C suivant utilise le modèle de programmation parallèle OpenMP pour écrire l’ID de thread et le nombre de threads sur “stdout” à l’aide de plusieurs threads.
#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;
}
Dans Fortran 90+, le programme équivalent ressemble à :
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