Sie sind auf Seite 1von 19

El Diseo de Algoritmos Paralelos

Captulo 3

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.

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 operacin sincrona y
enviar es una operacin asincrona

La Metodologia de Diseo de
Foster
Particionar la computacin y los datos en
pedazos
Determinar los patrones de
comunicacines 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

Particionar
Es el proceso de dividir la computacin y los
datos en pedazos.
Descomposicin de dominio consiste de
dividir los datos en pedazos y luego
determinar como asociar computaciones con
los datos.
Descomposicin funcional consiste de
dividir la computacin en pedazos y luego
asociar datos con las computaciones.

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

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 tamao
La cantidad de tareas es una funcin
creciente del tamao de problema.

Comunicaciones
Determinar los patrones de comunicaciones
entre tareas primitivas.
Cuando un nmero pequeo de tareas
necesitan valores de otras tareas se crean
canales entre las tareas envueltas. Esta es
comunicacin local.
Comunicacin global occure cuando todas o
casi todas tareas necesitan valores de las
otras tareas.

Lista de Cotejos para Evaluar la


Calidad de Comunicaciones
Deben ser balanceadas entre las
tareas.
Cada tarea comunique con un nmero
pequeo de sus vecinos.
Las tareas pueden llevar a cabo sus
comunicaciones en paralelo.
Las tareas pueden llevar a cabo sus
computaciones en paralelo.

Aglomeracin
Aglomeracin es el proceso de agrupar
tareas en tareas mas grandes para
mejorar el rendimiento o simplificar la
programacin.

Las Metas de Aglomeracin


Reducir la cantidad de
comunicaciones (overhead)
Mantener la escabilidad del diseo
paralelo
Reducir el costo de ingenieria de
software

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

Mantener la Escabilidad del Diseo


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 diseo paralelo es escalable si el
mismo diseo funciona cuando se
aumenta el nmero de procesadores.

Reducir el Costo de Ingenieria de


Software
Por ejemplo, hacer uso de cdigo
secuencial existente.

Lista de Cotejos para Evaluar la


Calidad de Aglomeracin
La aglomericin 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 pequea para que el
algoritmo se pueda escalar

Lista de Cotejos para Evaluar la


Calidad de Aglomeracin (cont)
Tareas aglomeradas tienen costos de
computacin y comunicacin parecidos
La cantidad de tareas es tan pequea
como sea posible, pero tan grande como
la cantidad de procesadores disponibles

Asignar Tareas a Procesadores


La meta es maximizar la utilizacin de
procesores y minimizar las comunicaciones
entre procesadores.
Balancear la computacin entre los
procesadores maximiza la utilizacin de
procesador (el porcentaje de tiempo que los
procesadores estn ocupados).
Comunicaciones entre procesadores
decrecen cuando dos tareas se asignan al
mismo procesador.

Asignar Tareas a Procesadores


(cont)
Aumentar la utilizacin 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
utilicacin de procesadores es 1/p, donde p
es el nmero de procesadores.
El problema de optimizar la asignacin de
tareas a procesadores es NP-hard.

Dynamic Load Balencing


Se necesita cuando tareas se crean y
destruyen durante de la ejecutacin.
Ejemplo: La paradigma gerentetrabajador: 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,