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 |