1 Objetivos Al término de esta sesión, será capaz de:
Describir los conceptos detrás de los patrones de diseño y patrones de diseño en paralelo Dados códigos seriales o algoritmos, escoger la mejor Estructura Algorítmica en el patrón de diseño (paralelismo de tarea o descomposición geométrica) para usarse en la paralelización del código y defender su selección. Dado el código serial o algoritmos, escoger la mejor Estructura de Soporte en el patrón de diseño (SPMD, Paralelismo de ciclos o Maestro/Esclavo) para usarse en la paralelización de código y defender su selección.
2 Agenda Patrón de estructura de lenguaje El patrón de paralelismo de tareas El patrón de descomposición geométrica Estructuras de Soporte Resumen
3 Agenda Patrón de estructura de lenguaje El patrón de paralelismo de tareas El patrón de descomposición geométrica Estructuras de Soporte Resumen
4 Patrones de Diseño y Patrones de Lenguajes Un patrón de diseño es: Una solución de un problema en un contexto. Una descripción estructurada de soluciones de alta calidad a problemas recurrentes Un intento de codificar experiencia tal que todos los diseñadores puedan capturar que la calidad sin un nombre" que distingue realmente excelentes diseños Un patrón de lenguaje es: Un catálogo estructurado de patrones de diseño que soportan actividades de diseño como redes de patrones de diseño conectadas
5 Referencia Detalla un patrón de lenguaje para diseño de algoritmos paralelos
Ejemplos en MPI, OpenMP y Java
Representa la hipótesis del autor para como los programadores piensan acerca de la programación en paralelo Patterns for Parallel Programming, Timothy G. Mattson, Beverly A. Sanders, Berna L. Massingill, Addison-Wesley, 2005, ISBN 0321228111
6 Patrón de Estructura del Lenguaje El diseño de software puede verse como una serie de mejoras Considera el proceso en términos de 4 espacios de diseño Progresivamente añade al diseño elementos en niveles inferiores
7 Patrón de Estructura del Lenguaje Espacio de diseño Evolución del diseño (Gp:) Mensajes, sincronización, división (Gp:) Mecanismos de implementación
(Gp:) Organización del código fuente, Datos compartidos (Gp:) Estructuras de soporte
(Gp:) Hilo/Estructuras de proceso, planificación (Gp:) Estructura del algoritmo
(Gp:) Tareas, datos compartidos, órdenes parciales (Gp:) Encontrando concurrencia
8 Encontrando Concurrencia del Diseño del Espacio Encontrando el alcance de la paralelización: Comienza con una aplicación secuencial que resuelve el problema original Descompone la aplicación en tareas o conjuntos de datos Analiza la dependencia entre tareas antes de la descomposición
Página siguiente |