Sei sulla pagina 1di 56

Curso de Computacin Distribuida

Introduccin a la Programacin Paralela - descomposicin 1 Jorge I. Zuluaga 30 de abril de 2009

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

LA COMPUTACIN COMIENZA AQU


4.Disear o adaptar un algoritmo Receta (lista de instrucciones) para aplicar el mtodo en un mquina, diseo de datos (modelo computacional), entradas y slidas 5.Codificar el algoritmo Convertirlo algoritmos en instrucciones que entienda un computador (mquina real) programa 6.Ejecutar el programa Entregar el programa a un computador, entregar las entradas y recoger las salidas 7.Pruebas/Depuracin, Validacin Verificacin de los resultados, identificacin y correccin de bugs, validacin de los resultados (experimental, terica)
3 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

Computacin en paralelo: mitos y realidades

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

Un modelo general de computacion en paralelo

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

Todo algoritmos paralelo puede pensarse como:

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:

Dividir el problema en un gran nmero de pequeas tareas dependientes o independientes.

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.

Aplicaciones prcticas descomposicin puede enfocarse o priorizarse en uno de ellos:

Desomposicin de dominio: primero identificar los datos del problema y dividirlos.


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

Diseo de un algoritmo paralelo: 2 pasos claves

Descomposicin: Dividir problema en problemas ms pequeos Mapeo: Asignar esos problemas a procesadores individuales

Producto de la descomposicin: tareas

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

Grafo de dependencia entre tareas

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

Ejemplo 2: Solucin 1 del ejemplo 2

28

Jorge I. Zuluaga

30 de abril de 2009

Ejemplo 2: Solucin 2 del ejemplo 2

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

Ejemplo 2: Mximo grado de concurrencia

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

Ejemplo 2: CPL del ejemplo 2


Para TDG1: 27 Para TDG2: 34

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

Ejemplo 2: CPL y DC promedio

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

Special purpose: Descomposicin exploratoria Descomposicin expeculativa


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

Concurrencia es natural: subproblemas son siempre independientes


Jorge I. Zuluaga 30 de abril de 2009

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

Ejemplo 5: Mnimo de una secuencia

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

Descomposicin de datos (Descomposicin de dominio)

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

Ejemplo 6: Multiplicacin de matrices

Problema: Calcular Cnn = AnnxBnn Descomposicin de datos de salida:

Trivial:

40

Jorge I. Zuluaga

30 de abril de 2009

Otras alternativas:

41

Jorge I. Zuluaga

30 de abril de 2009

Ejemplo 7: Frecuencia de patrones

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

Descomposicin de los datos de entrada

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

Ejemplo 7: Descomposicin de datos de entrada

45

Jorge I. Zuluaga

30 de abril de 2009

Ejemplo 7: Descomposicin de datos de entrada y de salida

46

Jorge I. Zuluaga

30 de abril de 2009

Descomposicin de datos intermedios

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

Ejemplo 6. Descomposicin de datos intermedios

Divisin de la multiplicacin en 2 fases

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:

Peligros de la descomposicin exploratoria:

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

Curso de programacin paralela: https://computing.llnl.gov/tutorials/parallel_comp

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

Potrebbero piacerti anche