La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

El Diseño de Algoritmos Paralelos

Presentaciones similares


Presentación del tema: "El Diseño de Algoritmos Paralelos"— Transcripción de la presentación:

1 El Diseño de Algoritmos Paralelos
Capítulo 3

2 El Modelo Tarea/Canal El modelo tarea/canal consiste de “tareas” y “canales”. Una tarea consiste de un programa, una memoria local y una coleccion de puertas de entrada/salidas. Un canal es una cola de mensajes que conecta la puerta de salida de una tarea a la puerta de entrada de otra tarea.

3 Tareas Bloqueadas Una tarea que recibe está bloqueada, si trata de recibir un mensaje que no ha llegado Una tarea que envia nunca bloquea aun si mensajes que mandó previamente por el mismo canal no se han recibido. Recibir es una operación sincrona y enviar es una operación asincrona

4 La Metodologia de Diseño de Foster
Particionar la computación y los datos en pedazos Determinar los patrones de comunicaciónes entre las tareas Aglomerar tareas Asignar tareas a procesadores. Ian Foster, Designing and Building Parallel Programs: Concepts and Tools for Parallel Software Engineering, Addison-Wesley,1995

5 Particionar Es el proceso de dividir la computación y los datos en pedazos. Descomposición de dominio consiste de dividir los datos en pedazos y luego determinar como asociar computaciones con los datos. Descomposición funcional consiste de dividir la computación en pedazos y luego asociar datos con las computaciones.

6 Particionar (cont) Los pedazos de computación se llaman tareas primitivas. Es deseable determinar tantas tareas primitivas como sea posible para maximizar el grado de paralelismo.

7 Lista de Cotejos para Evaluar la Calidad de Particionar
Hay un orden de magnitud de tareas primitivas mayor que la cantidad de procesadores en la computadora que se usará Computaciones redundantes y estructuras de datos redundantes se han minimizados Tareas primitivas son aproximadamente del mismo tamaño La cantidad de tareas es una función creciente del tamaño de problema.

8 Comunicaciones Determinar los patrones de comunicaciones entre tareas primitivas. Cuando un número pequeño de tareas necesitan valores de otras tareas se crean canales entre las tareas envueltas. Esta es comunicación local. Comunicación global occure cuando todas o casi todas tareas necesitan valores de las otras tareas.

9 Lista de Cotejos para Evaluar la Calidad de Comunicaciones
Deben ser balanceadas entre las tareas. Cada tarea comunique con un número pequeño de sus vecinos. Las tareas pueden llevar a cabo sus comunicaciones en paralelo. Las tareas pueden llevar a cabo sus computaciones en paralelo.

10 Aglomeración Aglomeración es el proceso de agrupar tareas en tareas mas grandes para mejorar el rendimiento o simplificar la programación.

11 Las Metas de Aglomeración
Reducir la cantidad de comunicaciones (“overhead”) Mantener la escabilidad del diseño paralelo Reducir el costo de ingenieria de software

12 Reducir la Cantidad de Comunicaciones
Aglomerar tareas primitivas que se comuniquen una con otra. Es decir, aumentar localidad. Combinar grupos de recibos y envios.

13 Mantener la Escabilidad del Diseño Paralelo
De la enciclopedia Wikipedia: “…scalabiity is a desirable property of a system, a network, or a process, which indicates its ability to handle growling amounts of work in a graceful manner…” Un diseño paralelo es escalable si el mismo diseño funciona cuando se aumenta el número de procesadores.

14 Reducir el Costo de Ingenieria de Software
Por ejemplo, hacer uso de código secuencial existente.

15 Lista de Cotejos para Evaluar la Calidad de Aglomeración
La aglomerición que se ha llevado a cabo ha aumentado localidad. Computaciones replicadas requieren menos tiempo que las comunicaciones que se reemplazan. La cantidad de datos replicados es suficientemente pequeña para que el algoritmo se pueda escalar

16 Lista de Cotejos para Evaluar la Calidad de Aglomeración (cont)
Tareas aglomeradas tienen costos de computación y comunicación parecidos La cantidad de tareas es tan pequeña como sea posible, pero tan grande como la cantidad de procesadores disponibles

17 Asignar Tareas a Procesadores
La meta es maximizar la utilización de procesores y minimizar las comunicaciones entre procesadores. Balancear la computación entre los procesadores maximiza la utilización de procesador (el porcentaje de tiempo que los procesadores están ocupados). Comunicaciones entre procesadores decrecen cuando dos tareas se asignan al mismo procesador.

18 Asignar Tareas a Procesadores (cont)
Aumentar la utilización de procesadores y a la vez reducir las comunicaciones entre procesadores pueden conflijar uno con otro. Por ejemplo, si se asigna cada tarea al mismo procesador, entonces, no hay comunicaciones entre procesadores, pero la utilicación de procesadores es 1/p, donde p es el número de procesadores. El problema de optimizar la asignación de tareas a procesadores es NP-hard.

19 “Dynamic Load Balencing”
Se necesita cuando tareas se crean y destruyen durante de la ejecutación. Ejemplo: La paradigma “gerente-trabajador”: El gerente mantiene una lista de tareas que hay que llevar a cabo y las asigna a los trabajadores. Cuando un trabajador termina una tarea, pide otra del gerente,


Descargar ppt "El Diseño de Algoritmos Paralelos"

Presentaciones similares


Anuncios Google