Está en la página 1de 4

OpenMP

ING. ALBERTO BALDA


mabalda@sangregorio.edu.ec

Qu es OpenMP?
OpenMP es una interfaz de programacin de aplicaciones (API) para la programacin
multiproceso de memoria compartida en mltiples plataformas. Permite aadir concurrencia a
los programas escritos en C, C++ y Fortran sobre la base del modelo de ejecucin fork-join. Est
disponible en muchas arquitecturas, incluidas las plataformas de Unix y de Microsoft Windows.
Se compone de un conjunto de directivas de compilador, rutinas de biblioteca, y variables de
entorno que influyen el comportamiento en tiempo de ejecucin.

Qu es OpenMP?
Un conjunto de directivas de compilacin usadas para la comunicacin.

OpenMP comprende de tres componentes complementarios:

Una librera de funciones en tiempo de ejecucin que habilita los parmetros paralelos
que se van a usar, tal como nmero de threads que van a participar y el nmero de cada
threads.

Un nmero limitado de las variables de entorno que pueden ser usadas para definir en
tiempo de ejecucin parmetros del sistema en paralelo tales como el nmero de threads.

Directivas de OpenMP
OpenMP comienza a travs de directivas, con funciones propias (que pueden ser condicionalmente compiladas) y
variables de entorno, que pueden modificar el comportamiento en tiempo de ejecucin.
Directiva de formato. Cada directiva inicia con #pragma omp ...

#pragma omp directive-name[clause[,] clause]...


Constructor paralelo. Las siguientes directivas definen una regin paralela, la cual es una parte del programa que puede
ser ejecutada por mltiples threads en paralelo. Este es el constructor fundamental que inicia la ejecucin paralela.

bloque de cdigo

#pragma omp parallel [clause[,] clause]...


{

Directivas OpenMp
if(expresin escalar)
private(lista de variables)
firstprivate(lista de variables)
default(shared | none)
shared(lista de variables)
copyin(lista de variables)
reduction(operador:lista de variables)
num_threads(expresin entera)

La clusula puede ser:

Libreras

Funciones

Ejemplo 1.
#include <omp.h>
#include <stdio.h>

}
return 0;

printf("Soy el thread=%d\n",pid);

pid = omp_get_thread_num(); // entrega el # de thread

#pragma omp parallel private( pid )

int pid;

#include <stdlib.h>
int main( )
{

También podría gustarte