La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Por: Mario Felaco Mercedes Martinez Sistemas Operativos III Ene-Mar 2007.

Presentaciones similares


Presentación del tema: "Por: Mario Felaco Mercedes Martinez Sistemas Operativos III Ene-Mar 2007."— Transcripción de la presentación:

1 Por: Mario Felaco Mercedes Martinez Sistemas Operativos III Ene-Mar 2007

2  Es un API (Application Program Interface) que se puede utilizar para poner explícitamente directivas de manejo de multi-hilos y paralelismo de memoria compartida  También es un poderoso modelo de programación, que aunque ligero, es el estándar para la programación de memoria compartida  Soporta Fortran y C/C++

3  Memoria Compartida en Base a Threads.  Los threads pueden accesar las variables compartidas, las variables privadas sólo las pueden accesar sus dueños  Paralelismo Explicito.  Sincronización principalmente implícita  Modelo Fork-Join

4  OpenMP Team := Master + Workers  Una Región Paralela es un bloque de código que ejecutan todos los hilos simultáneamente  El hilo principal siempre tiene ID 0  Una cláusula if se puede usar para guardar la región paralela; en caso de que la condición sea falsa, el código se ejecuta de manera secuencial

5  if (expresión)  Ejecuta en paralelo sólo si la expresión es true  De lo contrario ejecuta secuencialmente  private (lista)  No tiene asociación de almacenamiento con el objeto original  Todas las referencias son para el objeto local  Las variables son no definidas al entrar y al salir  Excepción: firstprivate y lastprivate  shared (lista)  Datos accesibles a todos los threads del equipo  Todos los threads accesan el mismo espacio físico

6

7  nowait  reduction (operador | lista)  Genera código que evita una condición de carrera  La variable tiene una copia local en cada hilo  Los valores se “reducen” a una variable local, de acuerdo al operador

8  omp for  omp do  omp workshare (sólo Fortran) En cada una de las directivas se puede hacer balanceo de carga para los casos en donde el trabajo no sea uniforme. De manera predeterminada se reparten las iteraciones en partes iguales.

9 Ejemplo del uso de OpenMP

10

11

12  El compilador puede no ser capaz de paralelizar como quieres:  Un ciclo no es paralelizado  El análisis de dependencias no es capaz de determinar si es seguro paralelizar o no  La granularidad no es suficientemente alta  El compilador no tiene suficiente información  Se desea que el programa sea escrito de manera tal que la versión secuencial todavía sea posible


Descargar ppt "Por: Mario Felaco Mercedes Martinez Sistemas Operativos III Ene-Mar 2007."

Presentaciones similares


Anuncios Google