Title: Programacin Paralela
1Programación Paralela
- Particionado y Divide Vencerás
- Dto. De Informática
- UNSL
2 Indice
- Particionado
- Particionado de Datos
- Particionado de Funciones
- Divide y vencerás
- Hipercubos
- Práctica
3Particionado
- Simplemente consiste en dividir el problema en
partes. - Es la base de toda programación paralela.
- Estrategia Embarrasengly Parallel es una forma
de particionado.
4Particionado
- Una buena estrategia divide en partes tanto el
cómputo asociado con un problema, como los datos
sobre los que este cómputo opera. - Generalmente, el particionado se enfoca sobre los
datos, es decir determinan divisiones apropiadas
para los datos y finalmente asocian el cómputo
con datos. - El enfoque alternativo primero descompone el
cómputo y luego trata con la asignación de los
datos.
DESCOMPOSICIÓN DE DOMINIO
DESCOMPOSICION FUNCIONAL
5Descomposición de DominioParticionado de Datos
- Los datos pueden ser inputs, outpus, o valores
intermedios. - Pueden surgir diferentes particiones, basadas en
diferentes estructuras de datos.
6Descomposición FuncionalParticionado de Funciones
7Descomposición FuncionalParticionado de Funciones
- Esta descomposición representa un forma diferente
y complementaria de pensamiento acerca de la
solución de un problema. - El foco está en la computación más que en los
datos manipulados por la computación. - Primero se intenta dividir la computación en
tareas disjuntas y luego se ven los
requerimientos de datos que tienen.
8Divide Vencerás
- Es un método elegante de resolver problemas.
- Simplemente se divide el problema en problemas
más pequeños de la misma clase, luego se
resuelven las partes separadamente y se combinan
los resultados parciales para obtener la solución
final. - Este método es utilizado recursivamente para
dividir las partes en problemas mas y mas
pequeños hasta alcanzar un punto donde el
problema es trivial de resolver.
9DV Secuencial
- 1 type table array1..n of T
- 2 seqDV(tabla, first, last)
- 3
- 4 if first lt last then
- 5
- 6 divide(tabla, first, last, middle)
- 7 seqDV(tabla, first, middle)
- 8 seqDV(tabla, middle1, last)
- 9 combine(a, first, last, middle)
- 10
- 11
10DV Paralelo
- 1 parDV(tabla, first, last)
- 2
- 3 if firstltlast then
- 4
- 5 divide(tabla, first, last, middle)
- PARALLEL(parDV(tabla, first, middle),
- parDV(tabla,
middle1, last)) - 7 combine(tabla, first, last, middle)
- 8
- 9 else soluciontrivial(tabla)
- 10
11DC Paralelo
12DV Paralelo
- Esta formulación crea un árbol binario de
procesos - Al inicio, el proceso raÃz del árbol toma un
problema, y lo divide en dos problemas mas
chicos. - La división del problema es repetida hasta que
las hojas del árbol han recibido los problemas
más básicos. - Alternativamente, los procesos hojas pueden
resolver el problema en forma secuencial si
faltaran procesadores para llegar a la solución
trivial. - Cada hoja retorna la solución de su problema a su
nodo padre - Cada proceso padre combina y/o aplica alguna
operación a las soluciones entregadas por sus
hijos en una única solución que es retornada al
padre de éste. - Eventualmente, la raÃz genera la solución al
problema original.
13Asignación de procesadoresDV Paralelo
P0
Un procesador para cada nodo 2m sub-tareas,
requieren 2m1-1
P2
P1
P4
P5
P6
P3
14Asignación de procesadoresDV Paralelo
P0
Rehusar los procesadores en cada nivel del árbol
2m sub-tareas, requieren 2m procesadores
P1
P0
P2
P1
P3
15Asignación de procesadoresDV Paralelo
La jerarquÃa de procesos de algoritmos DV
generalmente se asocian a un estructura que es
topológicamente similar a un hipercubo
16Asignación de procesadores en MPIDV Paralelo
En cada nÃvel, el proceso Pi, con qué proceso Pj
se debe comunicar?
17Asignación de procesadores en MPIDV Paralelo
Asignación cÃclica
En cada nÃvel, el proceso Pi, con qué proceso Pj
se debe comunicar?
18DV Paralelo
- Tipos de Algoritmos (Input-Output)
- En el caso paralelo, existe una clasificación de
problemas atendiendo a la naturaleza de las
variables de entrada y salida - Común - Común (CC) es aquél cuyas variables
paralelas de entrada como de salida son comunes
(replicadas ) a todo los procesadores del grupo.
- Común - Privado (CP) es aquél cuyas variables
de entrada son comunes pero las variables de
resultado quedan privadas en cada procesador - Privado - Común (PC) es aquél cuyas variables
de entrada son privadas en cada procesador y los
resultados quedan replicados en todos los
procesadores - Privado - Privado (PP) es aquél cuyas variables
de entrada y salida son privadas a cada
procesador.
19Fase de División DV Paralelo
Común-Común
20Fase de Conquista y Comunicación DV Paralelo
Común-Común
Comunicación Combinación
21Comunicación DV Paralelo
Común-Común
22 DV No Binarios
Común- Común
1
0
3
4
2
6
5
7
8
4
5
3
1
2
0
7
8
6
4
3
5
2
0
1
8
6
7
23 DV No BinariosHipercubo Ternario de 2
dimensiones
24 DV No BinariosPolitopos (polytopes) de 3
dimensiones
1
0
3
4
2
5
4
1
0
5
2
3
4
0
1
5
2
3
1
0
2
3
25Caso de Estudio Algoritmo Shortest-Path
Es un problema importante en la teorÃa de grafos
y tiene gran aplicación en problemas de
comunicaciones y otros problemas computacionales.
Grafo G
Matriz de
Adyacencia A
26Caso de Estudio Algoritmo Shortest-Path
- El Problema all-pairs shortest-path involucra
encontrar el paso mas corto entre todos los
pares de vértices en un grafo. - Un grafo G(V,E) con V el conjunto de vértices y
N conjunto de arcos conectando vértices en V. - En un grafo dirigido, cada eje tienen también una
dirección. De modo que los ejes (vi,vj) y (vj,vi)
con i ltgt j, son distintos. - Un grafo puede ser representado como una matriz
de adyacencia A en la cual cada elemento (i,j)
representa el arco entre los elementos i y j. - Aij 1 si existe un arco del vértice i a j.
- Aij 0 en otro caso.
27Caso de Estudio Algoritmo Shortest-Path
- Un paso desde el vértice vi hasta el vértice vj
es una secuencia de arcos (vi, vk) (vk, vr) (vt,
vj) en la cual ningún arco aparece dos veces - El paso más corto entre dos vértices de un grafo
es el paso que tiene el menor número de ejes. - El problema all-pairs shortest-path requiere
que encontremos el paso mas corto entre todos los
paresde vértices en un grafo. - El algoritmo toma como entrada una matriz de
adyacencia A (de NxN) y computa la matriz S (de
NxN). - Sij tendrá la longitud del paso más corto entre
i y j o -1 ( o ? )
28Caso de Estudio Algoritmo Shortest-Path
.
La idea es determinar si el paso desde vi a vj
vÃa vk es mas corto que el mejor paso conocido
desde vi a vj.
29Caso de Estudio Algoritmo Shortest-Path
- El algoritmo deriva la matriz S en N pasos,
construyendo en cada paso k una matriz intermedia
I(k) que contiene la distancia mas corta conocida
entre cada par de nodos. - Inicialmente Iij(0) es la longitud entre (vi,vj)
(si existe el arco, de lo contrario será cero
(0)). - Durante el k-ésimo paso evaluarán nuevamente
todos los valores de Iij para determinar si - El mejor paso conocido entre vi y vj es más largo
que las longitudes combinadas desde vi a vk y
desde vk a vj. De serlo Iij es actualizada para
reflejar el paso más corto.
Algoritmo de Floyd Secuencial
30Caso de Estudio Algoritmo Shortest-Path
Algoritmo de Floyd Secuencial
31Caso de Estudio Algoritmo Shortest-Path
.
- for k 0 to N-1
- for i local_i_start to local_i_end
- for j 0 to N-1
- Iij(k1) min(Iij(k), Ii,k(k)
Ik,j(k)) - endfor
- endfor
- endfor
Algoritmo Paralelo de Floyd
32Caso de Estudio Algoritmo Shortest-Path
(K, i, j)
33Caso de Estudio Algoritmo Shortest-Path
34Caso de Estudio Algoritmo Shortest-Path
- Paralelizar las filas
- Este algoritmo puede utilizar a lo sumo N
procesadores. - Cada tarea tiene la responsabilidad de generar
una o más filas de la Matriz I. - En cada k-paso, cada tarea requiere los valores
de la k-ésima fila de I. Es decir en cada paso
algún tarea deberá comunicar esta fila al resto
de las tareas