Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Introduccin
Solucin de problemas con la computacin: 1.Definir rigurosamente el problema dominio - datos, rango salidas, preguntas 2.Modelar matemticamente el problema Cuantificar las partes del problema, encontrar relaciones entre las partes 3.Identificar/adaptar/disear un mtodo para resolver el modelo matemtico Encontrar un mtodo, reunir distintos mtodos, reconocer las entradas y las salidas del problema
Jorge I. Zuluaga
30 de abril de 2009
Qu es la computacin paralela?:
Una forma de computacin en la que distintas tareas asociadas con el problema son realizadas simultneamente por la mquina En contraposicin con la computacin serial (una instruccin por vez) La solucin a un problema usando computacin paralela comienza desde el diseo del algoritmo Algoritmos paralelos son normalmente una combinacin de algoritmos seriales y algoritmos de distribucin de tareas La programacin es un reto importante en la computacin exige lenguajes capaces de codificar instrucciones concurrentes, manejar diversas fuentes de datos
Jorge I. Zuluaga 30 de abril de 2009
Programacin en paralelo: la tarea de escribir, probar, depurar, validar y mantener programas que implemente algoritmos paralelos Computacin paralela no es un tema nuevo:
Paralelismo al nivel de los bits: Una forma de paralelismo usada por los procesadores Incremento el tamao de la palabra del procesador Reduccin en el nmero de operaciones que un procesador debe ejecutar para hacer una operacin
Paralelismo al nivel de las instrucciones: ejecucin de varias instrucciones simultneamente dada la independencia de datos que utilizan (Ej. e=a+b,f=c+d,g=e*f) Realizada normalmente por compiladores y procesadores
Jorge I. Zuluaga
30 de abril de 2009
Paralelismo vectorial (procesamiento vectorial): Convierte (cuando es posible) varias instrucciones sobre un conjunto de datos en una sola instruccin sobre vectores Ejemplo:
Normal: for ( i = 0 ; i < 1000 ; i ++ ) c[i] = a[i] * b[i] Vectorizados for ( i = 0 ; i < 1000 ; i+=4) c[i:i+3] = a[i+3] * b[i+3]
Paralelismo embarazoso o paralelismo trivial Porciones de un problema se pueden resolver independientemente, no interrelacin entre las tareas Resultados independientes se recogen para resultado final
Jorge I. Zuluaga
30 de abril de 2009
Computacin en paralelo: pros y contras Pros: - Reduccin en el tiempo de computacin - Solucin de problemas de gran complejidad - Uso efectivo de recursos - Uso de recursos no localizados en el mismo lugar - Reduccin en el costo de loso recursos (muchos, muy baratos) - Superar limites en memoria o capacidad de procesamiento Contras: - Rediseo de los algoritmos - Difcil depuracin y realizacin de pruebas - Lmites impuestos por las tecnologas de comunicaciones (latencia, ancho de banda)
7 Jorge I. Zuluaga 30 de abril de 2009
Mito: El diseo de un algoritmo para computacin en paralelo requiere simplemente identificar que puede hacerse simultaneamente y que no. Realidad: El uso de una metodologa simplifica el proceso y garantiza la evaluacin apropiada de los problemas antes de la implementacin.
Mito: Cas todos los problemas se pueden paralelizar. Realidad: No todos los problemas son susceptibles de paralelizarse aunque siempre es posible encontrar oportunidades de concurrencia sobre todo en problemas muy complejos.
Jorge I. Zuluaga
30 de abril de 2009
Mito: El paralelismo solamente sirve para hacer programas para supercomputadoras. Realidad: cada vez es ms comun encontrarse con plataformas de fcil acceso con posibilidades de ejecucin concurrente. Pensar en paralelo puede explotar esas plataformas. Ejemplos: procesadores con dual core, tecnologia Hyperthreading, boards con multiples procesadores, computadores en red, etc.
Mito: En los programas en paralelo entre ms instancias concurrentes MEJOR. Realidad: hay muchos aspectos que afectan desempeo de programas en paralelo. Con estudios cuantitativos se puede mostrar que ms no siempre es mejor. Hay un punto de saturacin.
Jorge I. Zuluaga
30 de abril de 2009
Mito: para hacer que un programa o software existente corra en paralelo basta tomar el cdigo fuente y REORGANIZARLO para aprovechar la concurrencia de algunos procesos. Realidad: la realidad es que la computacion en paralelo implica muchas veces el rediseo de grandes partes de cdigo existente (por no decir la reescritura completa del cdigo). La programacin en paralelo es un paradigma completamente distinto.
10
Jorge I. Zuluaga
30 de abril de 2009
As como en la programacin secuencial las acciones, los datos, etc. se abstraen usando objetos y conceptos especiales (variables, objetos, procedimientos, etc.)... la programacin en paralelo tiene sus propias abstracciones que son fundamentales para la construccion y el diseo de un algoritmo o una solucin. Los objetos bsicos de ese modelo de abstraccin son las tareas, los canales y los mensajes.
11
Jorge I. Zuluaga
30 de abril de 2009
Todo programa o solucin en paralelo puede considerarse como un conjunto de tareas que se ejecutan concurrentemente y que se conectan a travs de canales por los que intercambian mensajes. Un programa en paralelo puede consistir de un nmero variable de tareas y canales por los que circulan un nmero tambin variable de mensajes.
12
Jorge I. Zuluaga
30 de abril de 2009
conjunto de procesos que realizan tareas que se ejecutan concurrentemente, se conectan a travs de canales por los que intercambian mensajes.
13 Jorge I. Zuluaga 30 de abril de 2009
Procesos: caractersticas y propiedades bsicas Un proceso es la unidad bsica de procesamiento en un PROGRAMA paralelo Un proceso esta formado por la agrupacin de mltiples tareas Al proceso de agrupar varias tareas en un proceso se lo denomina aglomeracin o mapeo
14
Jorge I. Zuluaga
30 de abril de 2009
Metodologa PCAM
Disear con metodologa siempre es conveniente en todas las reas del desarrollo de software. Uso de metodologa en el diseo de algoritmos paralelos garantiza condiciones bsicas (concurrencia, escalabilidad, localidad) Adems de lo que ya sabemos para todo el software (mantenimiento, reusabilidad, pruebas, etc.)
15
Jorge I. Zuluaga
30 de abril de 2009
Una de las metodologas ms conocidas primero propuesta por Ian Foster... Metodologa PCAM En la metodologa PCAM el diseo de un algoritmo se realiza en 4 etapas distintas:
P)articionado Se definen el modo en el que el problema (clculo y datos) se va a partir para resolverlo. C)omunicaciones Se disea la estructura de comunicaciones (canales y mensajes) que se utilizar para comunicar las tareas. A)glomeracin Se renen, por razones de rendimiento y optimizacin de las comunicaciones, tareas que en el particionado estaban separadas en tareas ms grandes. M)apeo Se disea el modo en el que las tareas resultantes de la etapa se asignar a los recursos de computo disponibles.
Jorge I. Zuluaga 30 de abril de 2009
16
17
Jorge I. Zuluaga
30 de abril de 2009
Particionado (descomposicin)
Objetivos bsico:
Trminos relacionados:
Granularidad: define el tamao relativo de las tareas individuales en las que se divide el problema. Un algoritmo o programa es de grano fino cuando es partido en un nmero muy grande de tareas muy pequeas. La granularidad aumenta cuando se aglomeran tareas.
Jorge I. Zuluaga 30 de abril de 2009
18
Descomposicin de dominio y descomposicin funcional: descomposicin de un problema involucra dividir los datos que deben procesarse (entradas, datos intermedios, salidas) y los procedimientos o acciones que deben realizarse sobre esos datos.
una vez partidos los datos se procede a asignar procedimientos y operaciones sobre esa porcion
Jorge I. Zuluaga 30 de abril de 2009
19
Descomposicin funcional: Primero descomponer las operaciones que se realizan sobre los datos. Una vez se logran dividir las operaciones en operaciones disyuntas proceder a examinar si los datos pueden tambin descomponerse. Si en la descomposicin funcional las funciones y datos de las distintas tareas son disyuntas entonces la descomposicin es completa. En la descomposicin funcional los datos pueden sobreponerse.
Jorge I. Zuluaga 30 de abril de 2009
20
Descomposicin: Dividir problema en problemas ms pequeos Mapeo: Asignar esos problemas a procesadores individuales
unidades de computo bsicas Objetivo de la programacin en paralelo es la ejecucin concurrente de esas tareas
Jorge I. Zuluaga 30 de abril de 2009
21
Tamao arbitrario Una vez definidas se consideran indivisibles Toda tarea tiene unas entradas y unas slidas Una tarea puede relacionarse o no con otras tareas en un problema:
Dependencia: la ejecucin de una tarea depende de la conclusin de otra Interaccin: las entradas de una tarea provienen de las salidas de otra o sus salidas alimentan otra tarea
Jorge I. Zuluaga 30 de abril de 2009
22
Ejemplo 1. Multiplicacin matriz-vector Problema: Calcular yn = Ann bn Dominio: Matriz A, vector b Rango: vector y Solucin matemtica:
23
Jorge I. Zuluaga
30 de abril de 2009
Descomposicin:
24
Jorge I. Zuluaga
30 de abril de 2009
Ejemplo 2. Bsqueda en una base de datos Problema: resolver el siguiente query en la base de datos Dominio: Base de datos (..., modelo, ao, color, ...) Rango: Entradas que cumplen con el query Solucin: Evaluar el query en todas las entradas y conservar aquellas para las que es verdadero Descomposicin: Evaluar por separado cada una de las condiciones (modelo, ao, color) y combinarlas hasta obtener las entradas que la cumplen.
25 Jorge I. Zuluaga 30 de abril de 2009
Las tareas en las que se descompone un problema pueden ser o no dependientes En el ejemplo de multiplicacin matriz vector todas las tareas son independientes En el ejemplo de bsqueda en base de datos hay tareas independientes (evaluacin de cada condicin) y otras dependientes (combinacin de resultados) Se pueden representar las relaciones de dependencia entre las tareas usando un Grafo task-dependency graph (TDG)
Jorge I. Zuluaga 30 de abril de 2009
26
Caractersticas:
Grafo directo acclico Nodos representan tareas Aristas representan dependencias Ejecucin de un nodo depende de ejecucin de todos los nodos que lo preceden y estn conectados con l TDG puede ser desconectado Conjunto de aristas puede ser vaco (ejemplo producto matriz-vector) Nodos que no tienen aristas entrantes: nodos iniciales Nodos que no tienen aristas salientes: nodos finales Los pesos del TDG son asignados directamente a los nodos de acuerdo al tiempo de ejecucin de las tareas
Jorge I. Zuluaga 30 de abril de 2009
27
28
Jorge I. Zuluaga
30 de abril de 2009
29
Jorge I. Zuluaga
30 de abril de 2009
Concurrencia
Caracterstica bsica de cualquier programa paralelo Grado de concurrencia (DC): Nmero de tareas concurrentes en un determinado estado de un programa Normalmente es menor al nmero de tareas debido a las dependencias
Mximo DC: Mximo nmero de tareas que pueden ser ejecutadas concurrentemente En el caso en el que TDG es un rbol el mximo grado de concurrencia es igual al nmero de hojas del rbol
30
Jorge I. Zuluaga
30 de abril de 2009
Observando los TDG vemos que el mximo grado de concurrencia se da al principio del rbol Mximo grado de concurrencia es 4
DC promedio: Grado de concurrencia promedio en el programa Una buena medida del rendimiento de un algoritmo paralelo
Ejemplo 2: DC promedio Para el TDG 1, DC promedio es 2.33 Para el TDG 2, DC promedio es 1.75
31
Jorge I. Zuluaga
30 de abril de 2009
DC normalmente se incrementa al disminuir la granularidad Camino crtico (CP): Camino ms largo entre un nodo inicial y un nodo terminal
Longitud de camino crtico (CPL): Suma de los pesos a lo largo del camino crtico
32
Jorge I. Zuluaga
30 de abril de 2009
La comparacin del CPL con la cantidad total de computo en requerido para la ejecucin de todas las tareas... ... medida del grado de concurrencia promedio Mayor CPL menor DC promedio
33
Jorge I. Zuluaga
30 de abril de 2009
Computo total para TDG1: 63, CPL: 27, CPL/TOTAL = 2.33 Computo total para TDG2: 64, CPL: 34, CPL/TOTAL = 1.88
34
Jorge I. Zuluaga
30 de abril de 2009
Tcnicas de descomposicin
La descomposicin de un problema en tareas es una de las operaciones fundamentales en el diseo de un alg. Paralelo La descomposicin debe buscar mximizar el grado de concurrencia Existen diversas tcnicas (no disyuntas) de descomposicin Algunas de las ms usadas: General purpose: Descomposicin recursiva Descomposicin de datos
35
Jorge I. Zuluaga
30 de abril de 2009
Descomposicin Recursiva
Estrategia Divide and conquer (divide y venceras): Problema resuelto dividiendo problema en subproblemas independientes Cada subproblema es a su vez subdividido El proceso continua hasta llegar al nivel de granularidad mnimo
36
Ejemplo 4: Quicksort Problema: ordenar una secuencia A de n elementos Solucin: se selecciona un pivote y se divide la secuencia arriba y abajo del pivote, las secuencias resultantes se dividen a su vez usando otro pivote y as sucesivamente Descomposicin recursiva:
37
Jorge I. Zuluaga
30 de abril de 2009
Problema: encontrar el mnimo elemento de una secuencia A de n elementos Solucin secuencial: comparar cada valor con un mnimo temporal, si el valor es ms pequeo escoger ese como el mnimo temporal y repetir Descomposicin recursiva:
38
Jorge I. Zuluaga
30 de abril de 2009
Muy comunmente utilizada cuando se manipulan grandes cantidades de datos Normalmente 2 pasos: Descomposicin de los datos (entrada, intermedio, salidas) Descomposicin de las tareas de computo
Tipos de particionado de datos Descomposicin de los datos de slida Datos de slida pueden ser computados independientemente como funcin de los datos de entrada
39
Jorge I. Zuluaga
30 de abril de 2009
Trivial:
40
Jorge I. Zuluaga
30 de abril de 2009
Otras alternativas:
41
Jorge I. Zuluaga
30 de abril de 2009
Problema: encontrar con que frecuencia aparecen patrones de smbolos en una base de datos de cadenas Dominio: Base de datos de cadenas, lista de patrones Solucin: buscar matches a travs de todas las cadenas de la base de datos Descomposicin de los datos de salida:
42
Jorge I. Zuluaga
30 de abril de 2009
43
Jorge I. Zuluaga
30 de abril de 2009
En muchos problemas no es posible descomponer los datos de salida (ejemplo: mnimo, suma, etc.) Se hace necesario la descomposicin de los datos de entrada Cada tarea hace clculos sobre datos vecinos y tareas posteriores renen resultados parciales
44
Jorge I. Zuluaga
30 de abril de 2009
45
Jorge I. Zuluaga
30 de abril de 2009
46
Jorge I. Zuluaga
30 de abril de 2009
Muchos algoritmos paralelos involucran la ejecucin de tareas en mltiples fases Las salidas de una fase son las entradas de la fase siguiente La descomposicin de datos intermedios esta relacionada con la divisin de los datos intermedios entre las fases del problema Tip: la descomposicin de datos intermedios puede explotar mejor la concurrencia en el problema
47
Jorge I. Zuluaga
30 de abril de 2009
48
Jorge I. Zuluaga
30 de abril de 2009
49
Jorge I. Zuluaga
30 de abril de 2009
Descomposicin Exploratoria
Descomposicin usada en problemas en donde la solucin la bsqueda en un espacio de soluciones Descomposicin: partir el espacio de soluciones en partes para explorarlas concurrentemente
Ejemplo 8. Rompecabezas de los 15 nmeros Problema: encontrar la combinacin de movimientos que conduce a la solucin del rompecabezas Solucin secuencial: buscar todas las posibilidades y evaluar su xito.
50 Jorge I. Zuluaga 30 de abril de 2009
Descomposicin:
51
Jorge I. Zuluaga
30 de abril de 2009
52
Jorge I. Zuluaga
30 de abril de 2009
Solucin obtenida:
53
Jorge I. Zuluaga
30 de abril de 2009
Descomposicin especulativa
Usada en programas que toman una de varias vas por vez Tcnica:
Evaluar concurrentemente varias de las acciones del proceso antes de que se decida cul ser la que finalmente se ejecute Normalmente se realiza un gasto extra de computo Se mejora escogiendo dentro de las opciones siguientes las ms probables
Jorge I. Zuluaga 30 de abril de 2009
54
Ejemplo 9: Simulacin de eventos discretos en paralelo Problema: simular la sucesin de eventos discretos en un proceso Solucin: se va simulando cada evento. El resultado de un evento determina el evento que se simula a continuacin y as sucesivamente.
55
Jorge I. Zuluaga
30 de abril de 2009
Referencias
Foster, I. Designing and Building Parallel Algorithms, Chapter 2. Addison-Wesley, 1994. Disponible electrnicamente: http://www.csd.uoc.gr/~hy555/dbpp/text/book.html Grama, A. et al. Introduction to Parallel Computing, Chapter 3. Addison-Wesley, 2003.
56
Jorge I. Zuluaga
30 de abril de 2009