Por: Mario Felaco Mercedes Martinez Sistemas Operativos III Ene-Mar 2007.
-
Upload
maria-isabel-montes-ponce -
Category
Documents
-
view
225 -
download
0
Transcript of Por: Mario Felaco Mercedes Martinez Sistemas Operativos III Ene-Mar 2007.
![Page 1: Por: Mario Felaco Mercedes Martinez Sistemas Operativos III Ene-Mar 2007.](https://reader034.fdocumento.com/reader034/viewer/2022051419/5665b4cf1a28abb57c93e402/html5/thumbnails/1.jpg)
Por:Mario Felaco
Mercedes Martinez
Sistemas Operativos IIIEne-Mar 2007
![Page 2: Por: Mario Felaco Mercedes Martinez Sistemas Operativos III Ene-Mar 2007.](https://reader034.fdocumento.com/reader034/viewer/2022051419/5665b4cf1a28abb57c93e402/html5/thumbnails/2.jpg)
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++
![Page 3: Por: Mario Felaco Mercedes Martinez Sistemas Operativos III Ene-Mar 2007.](https://reader034.fdocumento.com/reader034/viewer/2022051419/5665b4cf1a28abb57c93e402/html5/thumbnails/3.jpg)
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
![Page 4: Por: Mario Felaco Mercedes Martinez Sistemas Operativos III Ene-Mar 2007.](https://reader034.fdocumento.com/reader034/viewer/2022051419/5665b4cf1a28abb57c93e402/html5/thumbnails/4.jpg)
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
Terminología
![Page 5: Por: Mario Felaco Mercedes Martinez Sistemas Operativos III Ene-Mar 2007.](https://reader034.fdocumento.com/reader034/viewer/2022051419/5665b4cf1a28abb57c93e402/html5/thumbnails/5.jpg)
Algunas cláusulas 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
![Page 6: Por: Mario Felaco Mercedes Martinez Sistemas Operativos III Ene-Mar 2007.](https://reader034.fdocumento.com/reader034/viewer/2022051419/5665b4cf1a28abb57c93e402/html5/thumbnails/6.jpg)
![Page 7: Por: Mario Felaco Mercedes Martinez Sistemas Operativos III Ene-Mar 2007.](https://reader034.fdocumento.com/reader034/viewer/2022051419/5665b4cf1a28abb57c93e402/html5/thumbnails/7.jpg)
Algunas cláusulas 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
![Page 8: Por: Mario Felaco Mercedes Martinez Sistemas Operativos III Ene-Mar 2007.](https://reader034.fdocumento.com/reader034/viewer/2022051419/5665b4cf1a28abb57c93e402/html5/thumbnails/8.jpg)
Algunas directivas 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.
![Page 9: Por: Mario Felaco Mercedes Martinez Sistemas Operativos III Ene-Mar 2007.](https://reader034.fdocumento.com/reader034/viewer/2022051419/5665b4cf1a28abb57c93e402/html5/thumbnails/9.jpg)
Ejemplo del uso de OpenMP
![Page 10: Por: Mario Felaco Mercedes Martinez Sistemas Operativos III Ene-Mar 2007.](https://reader034.fdocumento.com/reader034/viewer/2022051419/5665b4cf1a28abb57c93e402/html5/thumbnails/10.jpg)
Un ejemplo más elaborado
![Page 11: Por: Mario Felaco Mercedes Martinez Sistemas Operativos III Ene-Mar 2007.](https://reader034.fdocumento.com/reader034/viewer/2022051419/5665b4cf1a28abb57c93e402/html5/thumbnails/11.jpg)
Desempeño
![Page 12: Por: Mario Felaco Mercedes Martinez Sistemas Operativos III Ene-Mar 2007.](https://reader034.fdocumento.com/reader034/viewer/2022051419/5665b4cf1a28abb57c93e402/html5/thumbnails/12.jpg)
¿Cuándo usar OpenMP? 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