Anda di halaman 1dari 3

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. Se compone de un conjunto de directivas de compilador,
rutinas de biblioteca, y variables de entorno que influyen el comportamiento en tiempo de
ejecucin.
Definido conjuntamente por proveedores de hardware y de software, OpenMP es un
modelo de programacin portable y escalable que proporciona a los programadores una
interfaz simple y flexible para el desarrollo de aplicaciones paralelas, para plataformas que
van desde las computadoras de escritorio hasta supercomputadoras. Una aplicacin
construida con un modelo de programacin paralela hbrido se puede ejecutar en
un cluster de computadoras utilizando OpenMP y MPI, o a travs de las extensiones de
OpenMP para los sistemas de memoria distribuida.
Modelo de Ejecucin
Cuando se incluye una directiva OpenMP esto implica que se incluye una sincronizacin
obligatoria en todo el bloque. Es decir, el bloque de cdigo se marcar como paralelo y se
lanzarn hilos segn las caractersticas que nos d la directiva, y al final de ella habr una
barrera para la sincronizacin de los diferentes hilos (salvo que implcitamente se indique
lo contrario con la directiva nowait). Este tipo de ejecucin se denomina fork-join.
Constructores

parallel: Esta directiva nos indica que la parte de cdigo que la comprende puede
ser ejecutada por varios hilos.

for: Igual que parallel pero optimizado para los bucles for. Su formato es:

#pragma omp parallel for [clusula, ... , clusula]

section y sections: Indica secciones que pueden ejecutarse en paralelo pero por
un nico hilo.

single: La parte de cdigo que define esta directiva, slo se puede ejecutar un
nico hilo de todos los lanzados, y no tiene que ser obligatoriamente el hilo padre.

master: La parte de cdigo definida, slo se puede ejecutar por el hilo padre.

critical: Slo un hilo puede estar


crticas o condiciones de carrera.

en

esta

seccin.

Definen secciones

atomic: Se utiliza cuando la operacin atae a slo una posicin de memoria, y


tiene que ser actualizada slo por un hilo simultneamente.

flush: Esta directiva resuelve la consistencia, al exportar a todos los hilos un valor
modificado de una variable que ha realizado otro hilo en el procesamiento paralelo.

shared: Los datos de la regin paralela son compartidos, lo que significa que son
visibles y accesibles por todos los threads.

private: Los datos de la regin paralela son privados para cada thread, lo que
significa que cada thread tendr una copia local que la usar como variable
temporal. Por definicin, el contador de iteraciones en OpenMP es privado.

default: Permite al programador que todas las variables de la regin paralela sean
shared o no para C/C++, o shared, firstprivate, private, o none para Fortran.

firstprivate: Como private pero se inicializa con el valor original.

reduction:Hace una operacin(suma, resta, multiplicacin, etc) privada en cada


iteracin y al final suma cada resultado.

Ley de Amdahl
En la programacin de computadoras, la ley de Amdahl, trata que cuando se ejecuta un
programa en procesamiento paralelo, las instrucciones aunque sean restringidas pueden
ser un factor que limite el funcionamiento para la obtencin de los resultados, de manera
que al aadirse ms procesadores puedan realizar el programa ms rpido. Hay
determinadas aplicaciones que se pueden paralelizar y que necesitan solamente un
procesador para que se compile. Esta ley nos dice en dos puntos importantes, que:
1.- La fraccin de tiempo de clculo de la mquina, originalmente se pueda utilizar para
optimizar la mejora, y se le denomina fraccin mejorada (fm) y [fm 1].
2.- La optimizacin lograda por el modo de ejecucin mejorada; es decir, es el tiempo de
modo original con respecto al tiempo del modo mejorado y siempre es mayor que 1 y se le
denomina aceleracin mejorada (Am), [Am >1].

Donde:
A= Aceleracin global de un sistema con una determinada mejora en un elemento.
Fm= Fraccin mejorada de tiempo que utiliza el elemento mejorado.
Am= Aceleracin mejorada conseguida para el elemento aislado.

Anda mungkin juga menyukai