Ejemplo paralelo simple
En esta página
Sintaxis
-
#pragma omp paralelo
indica que el siguiente bloque será ejecutado por todos los hilos. -
int omp_get_num_threads (void)
: devuelve el número de subprocesos que trabajan en la región paralela (también conocido como equipo de subprocesos). -
int omp_get_thread_num (void)
: devuelve el identificador del subproceso de llamada (va de 0 a N-1 donde N está limitado aomp_get_num_threads()
).
Puede utilizar la variable de entorno OMP_NUM_THREADS
o la directiva num_threads
dentro de #pragma parallel
para indicar el número de subprocesos en ejecución para toda la aplicación o para la región especificada, respectivamente.
Hola mundo en paralelo usando OpenMP
El siguiente código C utiliza el modelo de programación paralela de OpenMP para escribir el ID del subproceso y el número de subprocesos en stdout
utilizando varios subprocesos.
#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;
}
En Fortran 90+, el programa equivalente se ve así:
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