Esqueleto Algorítmico - ulpgc
Esqueleto Algorítmico - ulpgc
Esqueleto Algorítmico - ulpgc
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Dpto. Estadística, I. O. y Computación. U. de La Laguna<br />
Implementación Secuencial y Paralela de<br />
Técnicas Algorítmicas: Aplicación a<br />
Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto. de Métodos Cuantitativos en<br />
Economía y Gestión<br />
Marzo 2007<br />
Isabel Dorta, Coromoto León, Angélica Rojas<br />
http://nereida.deioc.ull.es/
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
apartados<br />
apartados<br />
Índice<br />
1. Introducción<br />
2. Interfaz de usuario de la librería MaLLBa<br />
subapartados<br />
subapartados<br />
3. Implementación de Patrones de Resolución<br />
o <strong>Esqueleto</strong>s Secuenciales<br />
4. Implementación de Patrones de Resolución<br />
o <strong>Esqueleto</strong>s Paralelos<br />
5. Experimentos Computacionales<br />
6. Conclusiones<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario de MaLLBa<br />
Apartado I: Introducción<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
1. Problema de optimización Combinatoria<br />
2. Técnicas Algorítmicas<br />
• Ramificación y Acotación<br />
• Divide y Vencerás<br />
3. <strong>Esqueleto</strong>s <strong>Algorítmico</strong>s<br />
4. Programación Paralela<br />
• Herramienta MPI<br />
• Herramienta OpenMP<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Optimización<br />
Combinatoria<br />
Técnicas<br />
Algorítmicas<br />
<strong>Esqueleto</strong>s<br />
<strong>Algorítmico</strong>s<br />
Definiciones sobre<br />
Programación<br />
Paralela<br />
Optimización Combinatoria<br />
Un problema de optimización combinatoria es una t-upla<br />
∏=(I, S, f, g) donde:<br />
• I es el conjunto de instancias de ∏. Si x ∈ I se dice que x es<br />
una instancia (o una entrada) de ∏<br />
• Dada una instancia x ∈ I, S(x) denota el conjunto de<br />
soluciones factibles de x<br />
• Dada una instancia x ∈ I y una solución factible σ ∈ S(x),<br />
f(x, σ) representa el costo de σ con respecto a ∏ y x. La<br />
función f se denomina función objetivo<br />
•g ∈{max, min}. El objetivo de ∏ es encontrar una solución<br />
factible que optimice f en función de g: dado un valor x ∈ I,<br />
se trata de determinar una solución óptima σ´∈ S(x) tal que<br />
f(x, σ´) = g {f(x, σ) / σ ∈S(x)}.<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Optimización<br />
Combinatoria<br />
Técnicas<br />
Algorítmicas<br />
<strong>Esqueleto</strong>s<br />
<strong>Algorítmico</strong>s<br />
Definiciones sobre<br />
Programación<br />
Paralela<br />
Definición:<br />
Caso de Estudio: El Problema de la Mochila 0/1<br />
“Se dispone de una mochila<br />
de capacidad C y de un<br />
conjunto de N objetos, siendo<br />
b k y p k el beneficio y<br />
el peso asociado al objeto k.<br />
Sin exceder la capacidad de<br />
la mochila, los objetos deben<br />
ser insertados en ésta<br />
proporcionando el máximo<br />
beneficio”<br />
Formulación como problema de<br />
Optimización<br />
sujeto<br />
a :<br />
max<br />
N<br />
∑<br />
k = 1<br />
x<br />
p<br />
k<br />
∀k<br />
∈<br />
k<br />
N<br />
∑<br />
k = 1<br />
x<br />
k<br />
b<br />
k<br />
x<br />
k<br />
C<br />
{ 0,<br />
1}<br />
{ 1,...,N}<br />
∈<br />
≤<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Caso de Estudio: El Problema de la Mochila 0/1<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
p = 20<br />
b = 100<br />
p = 30<br />
b = 60<br />
p = 2<br />
b = 15<br />
Conclusiones<br />
b = 90<br />
b = 1<br />
Optimización<br />
Combinatoria<br />
Técnicas<br />
Algorítmicas<br />
<strong>Esqueleto</strong>s<br />
<strong>Algorítmico</strong>s<br />
Definiciones sobre<br />
Programación<br />
Paralela<br />
p = 20<br />
p = 40<br />
p = 10<br />
b = 40 b = 15<br />
p = 30<br />
b = 10<br />
C = 102<br />
La capacidad C es 102<br />
Los elementos N son 8<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
p = 60
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Técnicas Algorítmicas<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Optimización<br />
Combinatoria<br />
Técnicas<br />
Algorítmicas<br />
<strong>Esqueleto</strong>s<br />
<strong>Algorítmico</strong>s<br />
Definiciones sobre<br />
Programación<br />
Paralela<br />
Son técnicas de diseño de algoritmos, que se adaptan al<br />
problema particular que se desea resolver.<br />
• Fuerza bruta<br />
• Divide y Vencerás (Divide and Conquer)<br />
• Búsqueda con retroceso (Backtracking)<br />
• Ramificación y Acotación (Branch and Bound)<br />
• Programación Dinámica<br />
• …<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Optimización<br />
Combinatoria<br />
Técnicas<br />
Algorítmicas<br />
<strong>Esqueleto</strong>s<br />
<strong>Algorítmico</strong>s<br />
Definiciones sobre<br />
Programación<br />
Paralela<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
• Árbol de búsqueda<br />
• Nodos:<br />
☺<br />
<br />
<br />
• Vivo : no se han<br />
generado aún todos<br />
sus hijos<br />
• Muerto: no se van a<br />
generar más hijos<br />
• Actual: se están<br />
generando sus hijos<br />
• Lista de Nodos vivos<br />
Ramificación y Acotación<br />
<br />
<br />
<br />
☺<br />
<br />
☺<br />
☺<br />
<br />
<br />
☺
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Optimización<br />
Combinatoria<br />
Técnicas<br />
Algorítmicas<br />
<strong>Esqueleto</strong>s<br />
<strong>Algorítmico</strong>s<br />
Definiciones sobre<br />
Programación<br />
Paralela<br />
Ramificación y Acotación<br />
• Paso 1: Si la lista de nodos vivos está vacía, terminar.<br />
• Paso 2: Extraer un nodo vivo<br />
• Paso 3: Calcular su coste esperado.<br />
• Paso 4: Si el coste esperado es peor que el de la mejor<br />
solución hasta el momento, considerar ese nodo como nodo<br />
muerto y volver al paso 1.<br />
• Paso 5: Si el coste esperado es mejor que el de la mejor<br />
solución actual pero no es solución factible, generar todos<br />
sus hijos y convertirlo en nodo muerto. Ir al paso 1.<br />
• Paso 6: Si el coste esperado es mejor que el de la mejor<br />
solución actual y es solución factible, ésta pasa a ser la<br />
mejor solución. Ir al paso 1.<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Optimización<br />
Combinatoria<br />
Técnicas<br />
Algorítmicas<br />
<strong>Esqueleto</strong>s<br />
<strong>Algorítmico</strong>s<br />
Definiciones sobre<br />
Programación<br />
Paralela<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
<br />
No<br />
Caso de Estudio: El Problema de la Mochila 0/1<br />
Cres = 102<br />
obj = 2<br />
pf = 0<br />
Cres = 102<br />
obj = 1<br />
pf = 0<br />
Cres = 102<br />
obj = 0<br />
pf = 0<br />
No Si<br />
Cres = 82<br />
obj = 1<br />
pf = 100<br />
No Si No Si<br />
Si<br />
Cres = 90<br />
obj = 2<br />
pf = 30<br />
<br />
Cres = 82<br />
obj = 2<br />
pf = 100<br />
Espacio de búsqueda, organizado como un árbol<br />
No<br />
<br />
. . . . . .<br />
. . . . . .<br />
Cres = 52<br />
obj = 2<br />
pf = 115<br />
Si
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Problema de Ordenación<br />
Patrones<br />
Secuenciales<br />
b = 100<br />
b = 60<br />
b = 15<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Optimización<br />
Combinatoria<br />
Técnicas<br />
Algorítmicas<br />
p = 20<br />
b = 90<br />
p = 20<br />
b = 10<br />
p = 30<br />
b = 1<br />
p = 10<br />
b = 15<br />
p = 2<br />
b<br />
p<br />
1<br />
1<br />
≥<br />
b<br />
p<br />
2<br />
2<br />
≥<br />
b<br />
p<br />
3<br />
3<br />
≥<br />
...<br />
≥<br />
b<br />
p<br />
Beneficios b k = {15,100, 90, 60, 40, 15, 10, 1}<br />
Pesos p k = { 2, 20, 20, 30, 40, 30, 60, 10}<br />
N<br />
N<br />
<strong>Esqueleto</strong>s<br />
<strong>Algorítmico</strong>s<br />
p = 60<br />
p = 30<br />
Definiciones sobre<br />
Programación<br />
Paralela<br />
b = 40<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
p = 40<br />
1 2 3 4 5 6 7 8
Cres = 102<br />
obj = 2<br />
pf = 0<br />
Cres = 102<br />
obj = 1<br />
pf = 0<br />
No Si<br />
No Si No Si<br />
. . .<br />
Cres = 82<br />
obj = 2<br />
pf = 100<br />
. . .<br />
Cres = 102<br />
obj = 0<br />
pf = 0<br />
Cres = 100<br />
obj = 2<br />
pf = 15<br />
. . .<br />
<br />
Cres = 100<br />
obj = 1<br />
pf = 15<br />
No<br />
Cres = 80<br />
obj = 3<br />
pf = 115<br />
Cres = 80<br />
obj = 2<br />
pf = 115<br />
No<br />
Si<br />
Cres = 60<br />
obj = 3<br />
pf = 205<br />
Cres = 30<br />
obj = 6<br />
pf = 265<br />
<br />
. . .<br />
No<br />
Cres = 30<br />
obj = 5<br />
pf = 265<br />
No<br />
Si<br />
Cres = 30<br />
obj = 4<br />
pf = 265<br />
Cres = 0<br />
obj = 7<br />
pf = 280<br />
Si<br />
Cres = 0<br />
obj = 6<br />
pf = 280<br />
Si<br />
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
No Si<br />
<br />
Optimización<br />
Combinatoria<br />
Técnicas<br />
Algorítmicas<br />
. . . No<br />
<strong>Esqueleto</strong>s<br />
<strong>Algorítmico</strong>s<br />
Definiciones sobre<br />
Programación<br />
Paralela<br />
Mª Isabel Dorta González<br />
Árbol de Búsqueda:<br />
Problema de la Mochila<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Optimización<br />
Combinatoria<br />
Técnicas<br />
Algorítmicas<br />
<strong>Esqueleto</strong>s<br />
<strong>Algorítmico</strong>s<br />
Definiciones sobre<br />
Programación<br />
Paralela<br />
Divide y Vencerás<br />
• Descomponer el problema a resolver en<br />
un cierto número de subproblemas más<br />
pequeños que el original, pero con la<br />
misma estructura<br />
• Resolver independientemente cada<br />
subproblema<br />
• Combinar los resultados obtenidos para<br />
obtener la solución al problema original<br />
Aplicar esta técnica recursivamente<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Optimización<br />
Combinatoria<br />
Técnicas<br />
Algorítmicas<br />
<strong>Esqueleto</strong>s<br />
<strong>Algorítmico</strong>s<br />
Definiciones sobre<br />
Programación<br />
Paralela<br />
Divide y Vencerás<br />
• Paso 1: Si x es suficientemente simple resolverlo,<br />
devolver la solución e ir al paso 6. En caso contrario ir<br />
al paso 2.<br />
• Paso 2: descomponer x en casos más pequeños<br />
x 1 ,x 2 ,…,x k<br />
• Paso 3: para i = 1, …, k aplicar el mismo<br />
procedimiento hasta obtener y i = Divide y Vencerás (x i )<br />
• Paso 4: recombinar los y i , para obtener una solución y<br />
de x<br />
• Paso 5: devolver y<br />
• Paso 6: finalizar<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Problema<br />
de<br />
Ordenación<br />
b<br />
p<br />
1<br />
1<br />
b<br />
><br />
p<br />
2<br />
2<br />
> ... ><br />
b<br />
p<br />
N<br />
N<br />
1 0,1 5 2 7,5 4,5 0,1 0,5<br />
Optimización<br />
Combinatoria<br />
Técnicas<br />
Algorítmicas<br />
<strong>Esqueleto</strong>s<br />
<strong>Algorítmico</strong>s<br />
Definiciones sobre<br />
Programación<br />
Paralela<br />
Fase<br />
de<br />
división<br />
1 0,1 5 2 7,5 4,5 0,1 0,5<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
1 0,1 5 2 7,5 4,5 0,1 0,5
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
1 0,1 5 2 7,5 4,5 0,5 0,1<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Fase de<br />
combinación<br />
Optimización<br />
Combinatoria<br />
Técnicas<br />
Algorítmicas<br />
5 2 1 0,1 7,5 4,5 0,5 0,1<br />
<strong>Esqueleto</strong>s<br />
<strong>Algorítmico</strong>s<br />
Definiciones sobre<br />
Programación<br />
Paralela<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
7,5 5 4,5 2 1 0,5 0,1 0,1
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Optimización<br />
Combinatoria<br />
Técnicas<br />
Algorítmicas<br />
<strong>Esqueleto</strong>s<br />
<strong>Algorítmico</strong>s<br />
Definiciones sobre<br />
Programación<br />
Paralela<br />
La definición que se da de esqueleto<br />
en el diccionario de la Lengua<br />
Española de la Real Academia es la<br />
que sigue:<br />
“Anat. Conjunto de piezas duras y<br />
resistentes, por lo regular trabadas y<br />
articuladas entre sí, que da<br />
consistencia al cuerpo de los<br />
animales, sosteniendo o protegiendo<br />
sus partes blandas. Armazón que<br />
sostiene algo. Col., Cos. Rica, Guat.,<br />
Méx., y Nic., Modelo o patrón<br />
impreso en el que se dejan blancos<br />
que se rellenan a mano.”<br />
<strong>Esqueleto</strong>s<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
<strong>Esqueleto</strong> <strong>Algorítmico</strong><br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Optimización<br />
Combinatoria<br />
Técnicas<br />
Algorítmicas<br />
<strong>Esqueleto</strong>s<br />
<strong>Algorítmico</strong>s<br />
Definiciones sobre<br />
Programación<br />
Paralela<br />
<strong>Esqueleto</strong> algorítmico: conjunto de procedimientos<br />
que constituyen el armazón con el que<br />
desarrollar programas para resolver un<br />
problema dado utilizando una técnica particular.<br />
Este software tiene algunos blancos que se han<br />
de rellenar para adaptarlo a la resolución de un<br />
problema concreto.<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Definiciones sobre Programación Paralela<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Modelo<br />
Algoritmo<br />
Implementación<br />
Secuencial<br />
Conclusiones<br />
Optimización<br />
Combinatoria<br />
Técnicas<br />
Algorítmicas<br />
<strong>Esqueleto</strong>s<br />
<strong>Algorítmico</strong>s<br />
Definiciones sobre<br />
Programación<br />
Paralela<br />
MPI,<br />
Java Sockets,<br />
OpenMP,<br />
Herramientas:<br />
esqueletos<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
Implementación Paralela
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Herramienta<br />
MPI<br />
Definiciones sobre Programación Paralela<br />
Multicomputador o<br />
Modelo Multiprocesador con Paso de Mensaje<br />
Red de interconección<br />
Optimización<br />
Combinatoria<br />
Técnicas<br />
Algorítmicas<br />
<strong>Esqueleto</strong>s<br />
<strong>Algorítmico</strong>s<br />
Definiciones sobre<br />
Programación<br />
Paralela<br />
Mensajes<br />
Procesador<br />
Memoria<br />
local<br />
Mª Isabel Dorta González<br />
Computadores<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Definiciones sobre Programación Paralela<br />
Modelo Multiprocesador de Memoria Compartida<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Optimización<br />
Combinatoria<br />
Técnicas<br />
Algorítmicas<br />
<strong>Esqueleto</strong>s<br />
<strong>Algorítmico</strong>s<br />
Definiciones sobre<br />
Programación<br />
Paralela<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
Herramienta<br />
OpenMP<br />
Memoria compartida<br />
Red de interconección<br />
Procesadores
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Definiciones sobre Programación Paralela<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
• Contenido<br />
Conclusiones<br />
Mensaje<br />
Optimización<br />
Combinatoria<br />
Técnicas<br />
Algorítmicas<br />
<strong>Esqueleto</strong>s<br />
<strong>Algorítmico</strong>s<br />
Definiciones sobre<br />
Programación<br />
Paralela<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
• Sobre<br />
• Qué procesador envía el mensaje<br />
• Dónde están los datos en el procesador<br />
emisor<br />
• Qué clase de datos se están enviando y<br />
cuántos.<br />
• Qué procesador(es) tienen que recibir el<br />
mensaje.<br />
• Dónde se deben dejar los datos en el<br />
procesador receptor.<br />
• Cuántos datos debe estar el procesador<br />
receptor preparado para recibir
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Tiempo de ejecución:<br />
Definiciones sobre Programación paralela<br />
• programa secuencial t(n)<br />
Conclusiones<br />
• programa paralelo<br />
t(n,p)= ta(n,p) + tc(n,p)<br />
Optimización<br />
Combinatoria<br />
Técnicas<br />
Algorítmicas<br />
<strong>Esqueleto</strong>s<br />
<strong>Algorítmico</strong>s<br />
Definiciones sobre<br />
Programación<br />
Paralela<br />
- ta(n,p) : suma de los tiempos de las distintas partes de<br />
computación<br />
- tc(n,p) : suma de los tiempos de las distintas partes de<br />
comunicación<br />
- Desbalanceo de la carga<br />
Aceleración (Speed-up)<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
S(n,p) = t(n) / t(n,p)
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Apartado II: Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
1. Interfaz de Usuario Genérica de MaLLBa<br />
2. Interfaz de Usuario para Ramificación y Acotación<br />
1. Clases Requeridas<br />
2. Ejemplo: El Problema de la Mochila 0/1<br />
3. Interfaz de Usuario para Divide y Vencerás<br />
1. Clases requeridas<br />
2. Ejemplo: Problema de Ordenación<br />
4. Clases Proporcionadas<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
MaLLBa ofrece un conjunto de<br />
técnicas de resolución para<br />
resolver problemas de<br />
Optimización Combinatoria.<br />
Cada técnica se encapsula en<br />
un “esqueleto”.<br />
Interfaz de Usuario de MaLLBa<br />
Combinador de<br />
<strong>Esqueleto</strong>s<br />
Interfaz de Usuario<br />
de MaLLBa<br />
Interfaz Ramificación<br />
y Acotación<br />
Interfaz Divide y<br />
Vencerás<br />
Clases<br />
Proporcionadas<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
Las entidades de un esqueleto<br />
algorítmico MaLLBa son:<br />
• Programador de<br />
<strong>Esqueleto</strong>s<br />
• Programador de<br />
Soluciones<br />
• Usuario de <strong>Esqueleto</strong>s<br />
• Combinador de<br />
<strong>Esqueleto</strong>s<br />
Usuario de<br />
<strong>Esqueleto</strong>s<br />
Programador de<br />
Soluciones<br />
Programador de<br />
<strong>Esqueleto</strong>s
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Interfaz de Usuario de MaLLBa<br />
Patrones<br />
Secuenciales<br />
Técnica.req.cc<br />
Solution<br />
Setup<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Proporcionadas<br />
Setup<br />
Solver<br />
Técnica.pro.cc<br />
Interfaz de Usuario<br />
de MaLLBa<br />
Solver<br />
Técnica.hh<br />
Interfaz Ramificación<br />
y Acotación<br />
Interfaz Divide y<br />
Vencerás<br />
Solution<br />
Problem<br />
Specific<br />
classes<br />
Clases<br />
Proporcionadas<br />
Specific<br />
Classes<br />
Setup<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
Requeridas<br />
Solver
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Requeridas<br />
Interfaz de Usuario de MaLLBa::BnB: Esquema UML<br />
Solution Problem Setup SubProblem<br />
+ lower_bound()<br />
+ upper_bound()<br />
+ branch()<br />
Interfaz de Usuario<br />
de MaLLBa<br />
Proporcionadas<br />
«interface»<br />
Solver<br />
Interfaz Ramificación<br />
y Acotación<br />
Interfaz Divide y<br />
Vencerás<br />
Solver_Seq<br />
Solver_Lan<br />
Solver_SM<br />
Clases<br />
Proporcionadas<br />
Solver_Centralized<br />
Solver_Distributed<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Clases Requeridas <strong>Esqueleto</strong> B&B<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Interfaz de Usuario<br />
de MaLLBa<br />
Interfaz Ramificación<br />
y Acotación<br />
Interfaz Divide y<br />
Vencerás<br />
Clases<br />
Proporcionadas<br />
• Problem<br />
• Solution<br />
• SubProblem<br />
• initSubProblem<br />
• branch<br />
• lower_bound<br />
• upper_bound<br />
Solution<br />
Problem<br />
SubProblem<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Interfaz de Usuario<br />
de MaLLBa<br />
Interfaz Ramificación<br />
y Acotación<br />
Interfaz Divide y<br />
Vencerás<br />
Ejemplo: EL Problema de la Mochila 0/1<br />
requires class Problem {<br />
public:<br />
Number C, // Capacidad<br />
N; // Número de objetos<br />
vector p, // beneficios<br />
w; // pesos<br />
Problem ();<br />
~Problem ();<br />
inline Direction direction() const {return Maximize;};<br />
. . .<br />
friend opacket& operator> (ipacket& is, Problem& pbm);<br />
};<br />
requires class Solution {<br />
public:<br />
vector s;<br />
Clases<br />
Proporcionadas<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
}<br />
Solution ();<br />
~Solution ();<br />
. . .<br />
friend opacket& operator> (ipacket& is, Solution& sol);
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Interfaz de Usuario<br />
de MaLLBa<br />
Ejemplo: EL Problema de la Mochila 0/1<br />
requires class SubProblem {<br />
public:<br />
Number CRest, // capacidad actual<br />
obj, // objeto siguiente<br />
profit; // beneficio actual<br />
Solution sol; // Solución actual<br />
SubProblem (); // constructor<br />
~SubProblem (); // destructor<br />
...<br />
Interfaz Ramificación<br />
y Acotación<br />
Interfaz Divide y<br />
Vencerás<br />
Clases<br />
Proporcionadas<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
};<br />
friend opacket& operator> (ipacket& is, SubProblem& sp);<br />
void initSubProblem (const Problem& pbm);<br />
void branch (const Problem& pbm,<br />
branchQueue& subpbms);<br />
Bound upper_bound (const Problem& pbm, Solution& ls);<br />
Bound lower_bound (const Problem& pbm, Solution& us);
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Ejemplo: EL Problema de la Mochila 0/1<br />
void SubProblem::initSubproblem (const Problem& pbm)<br />
{<br />
Crest = pbm.C;<br />
obj = 0;<br />
profit = 0;<br />
}<br />
Interfaz de Usuario<br />
de MaLLBa<br />
Interfaz Ramificación<br />
y Acotación<br />
Interfaz Divide y<br />
Vencerás<br />
Clases<br />
Proporcionadas<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
void SubProblem::branch (const Problem& pbm,<br />
container& subpbms)<br />
{<br />
SubProblem spNO = SubProblem(CRest,obj+1,profit);<br />
subpbms.insert(spNO);<br />
Number newC = CRest - pbm.w[obj];<br />
if (newC >= 0) {<br />
SubProblem spYES = SubProblem (newC, obj+1, profit +<br />
pbm.p[obj]);<br />
subpbms.insert(spYES);<br />
}<br />
}
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Interfaz de Usuario<br />
de MaLLBa<br />
Interfaz Ramificación<br />
y Acotación<br />
Interfaz Divide y<br />
Vencerás<br />
Clases<br />
Proporcionadas<br />
Ejemplo: EL Problema de la Mochila 0/1<br />
Bound Subproblem::upper_bound (const Problem& pbm, Solution& sl)<br />
{<br />
Bound upper, weigth, pft;<br />
Number i;<br />
}<br />
for (i = obj, weigth = 0, pft = profit; weigth
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Interfaz de Usuario<br />
de MaLLBa<br />
Interfaz Ramificación<br />
y Acotación<br />
Interfaz Divide y<br />
Vencerás<br />
Clases<br />
Proporcionadas<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
Ejemplo: EL Problema de la Mochila 0/1<br />
Bound Subproblem::lower_bound (const Problem& pbm, Solution& us)<br />
{<br />
Bound lower, weigth, pft;<br />
Number i, tmp;<br />
}<br />
us = sol;<br />
for(i = obj, weigth = 0, pft = profit; weigth
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Clases Requeridas <strong>Esqueleto</strong> D&C<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
• Problem<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
• SubProblem<br />
• initSubProblem<br />
• easy<br />
Solution<br />
Problem<br />
Interfaz de Usuario<br />
de MaLLBa<br />
Interfaz Ramificación<br />
y Acotación<br />
• solve<br />
• divide<br />
• Solution<br />
• combine<br />
SubProblem<br />
Auxiliar<br />
Interfaz Divide y<br />
Vencerás<br />
• Auxiliar<br />
Clases<br />
Proporcionadas<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Ejemplo: Problema de Ordenación<br />
void SubProblem::initSubProblem (const Problem& pbm) {<br />
for (unsigned i = 0; i < pbm.l.size(); i++)<br />
l.push_back(pbm.l[i]);<br />
}<br />
Interfaz de Usuario<br />
de MaLLBa<br />
Interfaz Ramificación<br />
y Acotación<br />
Interfaz Divide y<br />
Vencerás<br />
Clases<br />
Proporcionadas<br />
bool SubProblem::easy () {<br />
return (l.size()
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Ejemplo: Problema de Ordenación<br />
void SubProblem::divide (const Problem& pbm,<br />
vector& subpbms,<br />
Auxiliar& aux){<br />
SubProblem sp1, sp2;<br />
unsigned i, middle = l.size() / 2;<br />
Interfaz de Usuario<br />
de MaLLBa<br />
Interfaz Ramificación<br />
y Acotación<br />
Interfaz Divide y<br />
Vencerás<br />
Clases<br />
Proporcionadas<br />
}<br />
for (i = 0; i < middle; i++)<br />
sp1.l.push_back(l[i]);<br />
for (i = middle; i < l.size(); i++)<br />
sp2.l.push_back(l[i]);<br />
subpbms.push_back(sp1);<br />
subpbms.push_back(sp2);<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Interfaz de Usuario<br />
de MaLLBa<br />
Interfaz Ramificación<br />
y Acotación<br />
Interfaz Divide y<br />
Vencerás<br />
Clases<br />
Proporcionadas<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
Ejemplo: Problema de Ordenación<br />
void Solution::combine (const Problem& pbm,<br />
{<br />
}<br />
const Auxiliar& aux,<br />
const vector& subsols)<br />
vector::const_iterator i = subsols[0].l.begin();<br />
vector::const_iterator j = subsols[1].l.begin();<br />
while ((i!=subsols[0].l.end()) &&<br />
(j!=subsols[1].l.end())) {<br />
}<br />
if (*i < *j) { l.push_back(*i); i++; }<br />
else { l.push_back(*j); j++; }<br />
while (i != subsols[0].l.end()) {<br />
l.push_back(*i); i++; }<br />
while (j != subsols[1].l.end()) {<br />
l.push_back(*j); j++; }
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Interfaz de Usuario<br />
de MaLLBa<br />
Interfaz Ramificación<br />
y Acotación<br />
Interfaz Divide y<br />
Vencerás<br />
Clases<br />
Proporcionadas<br />
• SetUp: por ej: tipo<br />
de búsqueda:<br />
• en profundidad,<br />
• en anchura,<br />
• primero-el mejor<br />
• Solver: Implementa<br />
la estrategia a seguir.<br />
Compuesta por ella y:<br />
• Solver_Seq<br />
• Solver_Lan<br />
• Solver_SM<br />
Clases Proporcionadas<br />
Solver<br />
Setup<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Apartado III: Patrones de Resolución Secuenciales<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
1. Patrón de Resolución Secuencial para la<br />
técnica Ramificación y Acotación<br />
2. Patrón de Resolución Secuencial para la<br />
técnica Divide y Vencerás<br />
3. Combinación de esqueletos<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Algoritmo Secuencial para el <strong>Esqueleto</strong> MaLLBa:BnB<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Estructura de datos<br />
BranchQueue Head<br />
SP<br />
P N<br />
Patrón de Resolución<br />
Ramificación y<br />
Acotación Secuencial<br />
SP<br />
P N<br />
SP<br />
P N<br />
Patrón de Resolución<br />
Divide y Vencerás<br />
Secuencial<br />
Combinación de<br />
<strong>Esqueleto</strong>s<br />
SP<br />
P N<br />
SP<br />
P N<br />
SP<br />
P N<br />
SP<br />
P N<br />
BranchQueue Tail<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Patrón de Resolución<br />
Ramificación y<br />
Acotación Secuencial<br />
Patrón de Resolución<br />
Divide y Vencerás<br />
Secuencial<br />
Combinación de<br />
<strong>Esqueleto</strong>s<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
Algoritmo Secuencial para el <strong>Esqueleto</strong> MaLLBa:BnB<br />
1 Bound BB (const Problem& pbm, const SubProblem& sp,<br />
2 Solution& sol) {<br />
3 branchQueue bqueue;<br />
4 Solution sl;<br />
5 Bound high, low;<br />
Maximización<br />
6 SubProblem sp;<br />
7 bqueue.insert(sp);<br />
8 while (!bqueue.empty()) {<br />
9 sp = bqueue.remove();<br />
10 high = sp.upper_bound (pbm, sl);<br />
11 if (high > bestSol){<br />
12 low = sp.lower_bound(pbm, sl);<br />
13 if (low > bestSol) {<br />
14 bestSol = low;<br />
15 sol = sl;<br />
16 }<br />
17 if (low != high)<br />
18 sp.branch(pbm, bqueue);<br />
19 } }<br />
20 return(bestSol);<br />
21 }
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Patrón de Resolución<br />
Ramificación y<br />
Acotación Secuencial<br />
Patrón de Resolución<br />
Divide y Vencerás<br />
Secuencial<br />
Combinación de<br />
<strong>Esqueleto</strong>s<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
Algoritmo Secuencial para el <strong>Esqueleto</strong> MaLLBa:DnC<br />
1 procedure DandC(pbm, sol) {<br />
2 Local DivQueue, ComQueue;<br />
3<br />
4 push(DivQueue, pbm);<br />
/** Fase División **/<br />
5 while (not empty(DivQueue)) {<br />
6 subProblem = pop(DivQueue);<br />
7 if (easy(subProblem)) {<br />
8 solve(subProblem, subSol);<br />
9 push(ComQueue, subSol);<br />
10 } else {<br />
11 divide(subProblem, subpbm);<br />
12 for i := 1 to numProblem() do<br />
13 push(DivQueue, subpbm[i]);<br />
14 } }<br />
15<br />
/** Fase Combinación **/<br />
16 while (not empty(ComQueue)) {<br />
17 for (int i=0; i
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de<br />
Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Patrón de Resolución<br />
Ramificación y<br />
Acotación Secuencial<br />
Patrón de Resolución<br />
Divide y Vencerás<br />
Secuencial<br />
Combinación de<br />
<strong>Esqueleto</strong>s<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
p<br />
w<br />
1<br />
1<br />
≥<br />
p<br />
w<br />
2<br />
2<br />
≥<br />
p<br />
w<br />
3<br />
3<br />
≥<br />
...<br />
≥<br />
p<br />
w<br />
N<br />
N<br />
Instanciación de los esqueletos<br />
1 int main (int argc, char** argv) {<br />
2 Knapsack::Problem pbm;<br />
3 Knapsack::Solution ksol;<br />
4 Knapsack::Bound bs;<br />
5 ...<br />
6 Knapsack::Problem opbm; //ordered problem<br />
7 QuickSort::Solution ssol;<br />
8 ...<br />
9 QuickSort::Solver_Seq svs(pbm);<br />
10 svs.run();<br />
11 ssol = svs.solution();<br />
12 ...<br />
13 opbm.setN(pbm.N);<br />
14 opbm.setCapacity(pbm.C);<br />
15 for (Knapsack::Number i = 0; i < n ; i++) {<br />
16 opbm.setWeight(pbm.w[ssol.l[i]]);<br />
17 opbm.setProfit(pbm.p[ssol.l[i]]);<br />
18 }<br />
19 Knapsack::Solver_Seq svk(opbm, st);<br />
20 svk.run();<br />
21 bs = svk.bestSolution(); ksol = svk.solution(); . . .<br />
22 }
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones<br />
Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Apartado IV: Patrones de Resolución Paralelos<br />
1. Patrones de Resolución Paralelos para la<br />
técnica Ramificación y Acotación<br />
a. Esquema Centralizado<br />
b. Esquema Distribuido<br />
c. Esquema para Memoria Compartida<br />
2. Patrón de Resolución Paralelo para la técnica<br />
Divide y Vencerás<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones<br />
Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Patrón B&B Paralelo<br />
Centralizado<br />
Patrón B&B Paralelo<br />
Distribuido<br />
Patrón B&B Memoria<br />
Compartida<br />
Patrón D&C Paralelo<br />
• Paso de Mensaje<br />
• Estrategia Maestro/Esclavo<br />
• Maestro:<br />
• Tareas de Monitorización<br />
• Gestión de las Colas<br />
• Distribución de<br />
subproblemas<br />
• Recepción de Mensajes<br />
• Esclavo:<br />
• Recepción de mensajes<br />
• Trabajar en los procesos<br />
propios de la técnica<br />
• Esquema Centralizado<br />
• Esquema Distribuido<br />
• Memoria Compartida<br />
<strong>Esqueleto</strong>s MaLLBa:BnB Paralelos<br />
Maestro<br />
Esclavos<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Esquema Paralelo Centralizado MaLLBa:BnB<br />
Patrones<br />
Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Patrón B&B Paralelo<br />
Centralizado<br />
Patrón B&B Paralelo<br />
Distribuido<br />
<br />
<br />
Patrón B&B Memoria<br />
Compartida<br />
Patrón D&C Paralelo<br />
Maestro<br />
Esclavos<br />
Maestro<br />
Esclavos<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones<br />
Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Estructura de datos<br />
Esquema Paralelo Centralizado de MaLLBa:BnB<br />
Processor Master<br />
BranchQueue Head<br />
SP<br />
PN<br />
SP<br />
SP<br />
SP<br />
SP<br />
Patrón B&B Paralelo<br />
Centralizado<br />
PN<br />
PN<br />
PN<br />
PN<br />
Patrón B&B Paralelo<br />
Distribuido<br />
BranchQueue Tail<br />
Patrón B&B Memoria<br />
Compartida<br />
Patrón D&C Paralelo<br />
Head<br />
Processor slave<br />
Head<br />
Processor slave<br />
SP<br />
SP<br />
SP<br />
SP<br />
SP<br />
SP<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
PN<br />
PN<br />
Tail<br />
PN<br />
PN<br />
PN<br />
Tail<br />
PN
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones<br />
Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Código MPI Centralizado de MaLLBa:BnB: Maestro<br />
1 busy[0] = 1; for i = 1, nProcs { busy[i] = 0; }<br />
2 idle = nProcs - 1;<br />
3 auxbqueue; // queue of subproblems sent by the slave<br />
4 bqueue.insertAtBack(sp); // Insert the subproblem into the queue<br />
5 while ((!bqueue.empty()) || (idle < groupSize)) { // Stop condition<br />
6 while ((!bqueue.empty()) && (idle > 0)) {<br />
7 auxSp = bqueue.removeFromFront();<br />
Patrón B&B Paralelo<br />
Centralizado<br />
Patrón B&B Paralelo<br />
Distribuido<br />
Patrón B&B Memoria<br />
Compartida<br />
Patrón D&C Paralelo<br />
8 op.send(firstidle, auxSp, bestSol, sol);<br />
9 idle--;<br />
10 IDLE2WORKING(busy, lastIdle); mark slave as working<br />
11 }<br />
12 MLB_Probe(MPI_ANY_SOURCE, MPI_ANY_TAG, flag, status)<br />
13 while (flag) {<br />
14 if (MPI_SOLVE_TAG) {<br />
15 ip.recv(source, bestSol, sol);<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
16 WORKING2IDLE(busy, source); // mark the slave as idle<br />
17 }
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones<br />
Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Código MPI Centralizado de MaLLBa:BnB: Maestro<br />
18 if (MPI_BnB_TAG) {<br />
19 ip.recv(source, bstemp, high); // Receive the best solution<br />
20 if ( high > bestSol) {<br />
21 bestSol = bstemp;<br />
22 op
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones<br />
Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Código MPI Centralizado de MaLLBa:BnB: Esclavo<br />
1 while (1) {<br />
2 MLB_Probe(MASTER,MPI_ANY_TAG, flag, status)<br />
3 if (flag) {<br />
4 switch(status.MPI_TAG) {<br />
5 if (END_TAG){ // Ending message<br />
6 ip.recv(MASTER, MPI_END_TAG);<br />
7 return;<br />
Patrón B&B Paralelo<br />
Centralizado<br />
Patrón B&B Paralelo<br />
Distribuido<br />
Patrón B&B Memoria<br />
Compartida<br />
Patrón D&C Paralelo<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
8 }<br />
9 if (PBM_TAG){ // Receive the problem to branch<br />
10 ip.recv(MASTER, MPI_PBM_TAG, auxSp, bestSol, auxSol);<br />
11 high = auxSp.upper_bound(pbm, auxSol);<br />
12 if ( high > bestSol ) {<br />
13 low = auxSp.lower_bound(pbm, auxSol);<br />
14 if ( low > bestSol ) {<br />
15 bestSol = low;<br />
16 sol = auxSol;<br />
17 } }
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones<br />
Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Código MPI Centralizado de MaLLBa:BnB: Esclavo<br />
18 if ( high = low ) {<br />
19 // send best solution to Master<br />
20 op.send(MASTER, MPI_SOLVE_TAG, bestSol);<br />
21 }<br />
22 else {<br />
23 op.send(MASTER, MPI_BnB_TAG, bestSol, high);<br />
24 }<br />
Patrón B&B Paralelo<br />
Centralizado<br />
Patrón B&B Paralelo<br />
Distribuido<br />
Patrón B&B Memoria<br />
Compartida<br />
Patrón D&C Paralelo<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
25 // Receive from Master the indication to branch or not<br />
26 ip.recv(MASTER, MPI_QUEUEREQUEST_TAG);<br />
27 ip >> count;<br />
28 if ( count = 1) { // to branch the subproblem<br />
29 auxSp.branch(pbm, bqueue);<br />
30 op.send(MASTER, bqueue);<br />
31 }<br />
32 bqueue.clean();<br />
33 } } // switch<br />
34 } } // while
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Esquema Paralelo Distribuido de MaLLBa:BnB<br />
Patrones<br />
Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Patrón B&B Paralelo<br />
Centralizado<br />
Patrón B&B Paralelo<br />
Distribuido<br />
Patrón B&B Memoria<br />
Compartida<br />
Patrón D&C Paralelo<br />
Maestro<br />
Esclavos<br />
Maestro<br />
Esclavos<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Esquema Paralelo Distribuido de MaLLBa:BnB<br />
Patrones<br />
Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Estructura de datos<br />
Processor 0: Master<br />
BranchQueue Head<br />
SP<br />
PN<br />
Patrón B&B Paralelo<br />
Centralizado<br />
Patrón B&B Paralelo<br />
Distribuido<br />
Patrón B&B Memoria<br />
Compartida<br />
Processor 1: slave<br />
SP<br />
PN<br />
Processor 2: slave<br />
SP<br />
PN<br />
Patrón D&C Paralelo<br />
SP<br />
SP<br />
SP<br />
SP<br />
SP<br />
SP<br />
PN<br />
PN<br />
PN<br />
PN<br />
PN<br />
PN<br />
Mª Isabel Dorta González<br />
Tail<br />
Tail<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones<br />
Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Patrón B&B Paralelo<br />
Centralizado<br />
Patrón B&B Paralelo<br />
Distribuido<br />
Patrón B&B Memoria<br />
Compartida<br />
Patrón D&C Paralelo<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
Código MPI Distribuido de MaLLBa:BnB: Maestro<br />
1 busy[0] = 1; for i = 1, nProcs { busy[i] = 0;}<br />
2 idle = nProcs - 1;<br />
3 // Send initial subproblem to first idle slave<br />
4 auxSp = sp.initSubProblem();<br />
5 op.send(firstIdle, auxSp, bestSol, sol);<br />
6 idle--;<br />
7 IDLE2WORKING(busy,firstIdle); // mark this slave like working<br />
8 while (idle < (groupSize-1)) { // while there are working slaves<br />
9 recv(source, flag);<br />
10 while(flag) {<br />
11 if (SOLVE_TAG) { // receive the final solution<br />
12 ip.recv(source, bestSol, sol);<br />
13 }<br />
14 if (BnB_TAG) { // receive a slave request<br />
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />
30 }<br />
31 if (IDLE_TAG) { // receive the signal of an idle slave<br />
32 ip.recv(source, IDLE);<br />
33 idle++;<br />
34 WORKING2IDLE(busy,source); // mark this slave like idle<br />
35 }<br />
36 recv(source, flag);<br />
37 } } // while (idle < (groupSize-1))<br />
38 // Send the ending message<br />
39 for i = 1, groupSize { op.send(i, END); }
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones<br />
Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Patrón B&B Paralelo<br />
Centralizado<br />
Patrón B&B Paralelo<br />
Distribuido<br />
Patrón B&B Memoria<br />
Compartida<br />
Patrón D&C Paralelo<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
Código MPI Distribuido de MaLLBa:BnB: Maestro<br />
14 if (BnB_TAG) { // receive a slave request<br />
15 ip.recv(source,<br />
16 high, // upper bound associated to the problem<br />
17 nSlaves); // the number of required slaves<br />
18 if ( high > bestSol) { // the problem must be branched<br />
19 total= ((nSlaves
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones<br />
Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Patrón B&B Paralelo<br />
Centralizado<br />
Patrón B&B Paralelo<br />
Distribuido<br />
Patrón B&B Memoria<br />
Compartida<br />
Patrón D&C Paralelo<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
Código MPI Distribuido de MaLLBa:BnB: Esclavo<br />
1 while (1) {<br />
2 recv(source, flag);<br />
3 while (flag) {<br />
4 if (END_TAG){ // receive the finishing message<br />
5 ip.recv(MASTER, END); return;<br />
6 }<br />
7 if (PBM_TAG){ // receive the problem to be branched<br />
8 ip.recv(source, // receive from a slave or the Master:<br />
9 auxSp, // the initial subproblem<br />
10 bestSol, // the best solution value<br />
11 sol); // the current solution<br />
12 auxSol = sol;<br />
13 bqueue.insert(auxSp); // insert it in the local queue<br />
14 while(!bqueue.empty()) {<br />
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />
37 }<br />
38 op.send(MASTER, IDLE_TAG); // send the signal Idle<br />
39 }<br />
40 recv(source, flag);<br />
41 } // while (flag)<br />
42 } // while(1)
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones<br />
Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Patrón B&B Paralelo<br />
Centralizado<br />
Patrón B&B Paralelo<br />
Distribuido<br />
Patrón B&B Memoria<br />
Compartida<br />
Patrón D&C Paralelo<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
Código MPI Distribuido de MaLLBa:BnB: Esclavo<br />
14 while(!bqueue.empty()) {<br />
15 auxSp = bqueue.remove(); // pop a problem from the local queue<br />
16 high = auxSp.upper_bound(pbm,auxSol);<br />
17 if ( high > bestSol ) {<br />
18 low = auxSp.lower_bound(pbm,auxSol);<br />
19 if ( low > bestSol ) {<br />
20 bestSol = low;<br />
21 sol = auxSol;<br />
22 op.send(MASTER, SOLVE_TAG, bestSol, sol);<br />
23 }<br />
24 if ( high != low ) {<br />
25 // the number of required slaves<br />
26 rSlaves = bqueue.getNumberOfNodes();<br />
27 op.send(MASTER, BnB_TAG, high, rSlaves);<br />
28 ip.recv(MASTER, nfSlaves, bestSol, rank {1,..., nfSlaves});<br />
29 if ( nfSlaves >= 0) {<br />
30 auxSp.branch(pbm,bqueue); //branch and save in the local queue<br />
31 for i=0, nfSlaves{ // send subproblems to the assigned slaves<br />
32 auxSp = bqueue.remove();<br />
33 // send to the slave:<br />
34 op.send(rank, PBM_TAG, auxSp, bestSol, sol);<br />
35 }<br />
36 } // if nfSlaves == DONE the problem is bounded (cut)<br />
37 } }
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones<br />
Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Esquema para Memoria Compartida de MaLLBa:BnB<br />
<br />
<br />
<br />
<br />
Patrón B&B Paralelo<br />
Centralizado<br />
Patrón B&B Paralelo<br />
Distribuido<br />
Patrón B&B Memoria<br />
Compartida<br />
Patrón D&C Paralelo<br />
Procesadores<br />
Procesadores<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones<br />
Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Esquema de MaLLBa:BnB para Memoria Compartida<br />
Estructura<br />
de datos<br />
BranchQueue Head<br />
SP<br />
P N<br />
SP<br />
P N<br />
SP<br />
P N<br />
Patrón B&B Paralelo<br />
Centralizado<br />
Patrón B&B Paralelo<br />
Distribuido<br />
SP<br />
P N<br />
SP<br />
P N<br />
SP<br />
P N<br />
SP<br />
P N<br />
Patrón B&B Memoria<br />
Compartida<br />
SP<br />
P N<br />
SP<br />
P N<br />
BranchQueue<br />
Tail<br />
Patrón D&C Paralelo<br />
SP<br />
SP<br />
SP<br />
SP<br />
SP<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
Threads<br />
P<br />
N<br />
P<br />
N<br />
P<br />
N<br />
P<br />
N<br />
P<br />
N
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones<br />
Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Patrón B&B Paralelo<br />
Centralizado<br />
Patrón B&B Paralelo<br />
Distribuido<br />
Patrón B&B Memoria<br />
Compartida<br />
Patrón D&C Paralelo<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
Pseudocódigo OpenMP para Solver_SM<br />
1 // shared variables {bqueue, bstemp, soltemp, data}<br />
2 // private variables {auxSol, high, low}<br />
3 // the initial subproblem is inserted in the global shared queue<br />
4 while(!bqueue.empty()) {<br />
5 nn = bqueue.getNumberOfNodes(); // the number of needed threads<br />
6 nt = (nn > maxthread)?maxthread:nn;<br />
7 data = new SubProblem[nt]; // compute the subproblem for each thread<br />
8 for (int j = 0; j < nt; j++)<br />
9 data[j] = bqueue.remove();<br />
10 set.num.threads(nt); // establish the number of threads<br />
11 parallel forall (i = 0; i < nt; i++) {<br />
12 high = data[i].upper_bound(pbm,auxSol);<br />
13 if ( high > bstemp ) {<br />
14 if ( low > bstemp ) { // critical region<br />
15 // only one thread can change the value at any time<br />
16 bstemp = low;<br />
17 soltemp = auxSol;<br />
18 }<br />
19 if ( high != low ) { // critical region<br />
20 // just one thread can insert subproblems<br />
21 // in the queue at any time<br />
22 data[i].branch(pbm,bqueue);<br />
23 } } } }<br />
24 bestSol = bstemp;<br />
25 sol = soltemp;
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones<br />
Paralelos<br />
Experimentos<br />
Computacionales<br />
Esquema Paralelo D&C<br />
Fase de División<br />
Conclusiones<br />
Patrón B&B Paralelo<br />
Centralizado<br />
Patrón B&B Paralelo<br />
Distribuido<br />
Patrón B&B Memoria<br />
Compartida<br />
Patrón D&C Paralelo<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones<br />
Paralelos<br />
Experimentos<br />
Computacionales<br />
Esquema Paralelo D&C<br />
Fase de Combinación<br />
Conclusiones<br />
Patrón B&B Paralelo<br />
Centralizado<br />
Patrón B&B Paralelo<br />
Distribuido<br />
Patrón B&B Memoria<br />
Compartida<br />
Patrón D&C Paralelo<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Apartado V: Experimentos Computacionales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
• Descripción de las Máquinas<br />
• Resultados Computacionales<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Descripción de las<br />
Máquinas<br />
Resultados<br />
computacionales<br />
• Sunfire 6800 SMP, con la siguiente configuración:<br />
• 24 procesadores 750 MHz UltraSPARC-III,<br />
• 48 Gbyte de memoria compartida cada uno y<br />
• 120 Gbyte de disco duro.<br />
• Origin 3000, con la siguiente configuración:<br />
• 160 procesadores 600 MHz MIPS R14000,<br />
• 1 Gbyte de memoria<br />
• 900 Gbyte de disco<br />
Descripción de las Máquinas<br />
• Un heterogéneo Cluster de PCs, con la siguiente configuración<br />
• 2 Procesadores 750 MHz AMD Duron,<br />
• 4 Procesadores 800 MHz AMD Duron,<br />
• 7 Procesadores 500 MHz AMD-K6 3D,<br />
• 256 Mbyte de memoria,<br />
• 32 Gbyte de disco duro<br />
EPCC (Edinburgh Parallel<br />
Computing Center)<br />
CIEMAT (Centro de<br />
Investigaciones Energéticas,<br />
Medioambientales y<br />
Tecnológicas)<br />
Cluster de PCs del Grupo de<br />
Paralelismo de la Universidad<br />
de La Laguna<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Resultados computationales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
SIZE FIFO LIFO PRIORITY<br />
1,000 0.181 0.072 0.100<br />
1,500 0.073 0.103 0.131<br />
5,000 2.533 3.326 3.441<br />
Descrición de las<br />
Máquinas<br />
Resultados<br />
computacionales<br />
10,000 2.109 5.491 5.566<br />
50,000 128.980 391.767 389.987<br />
100,000 652.969 1,780.297 1,793.152<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Resultados computationales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
TAMAÑO FIFO LIFO TREESET<br />
1,000 1.568 1.163 1.237<br />
1,500 0.657 1.239 1.287<br />
Descrición de las<br />
Máquinas<br />
Resultados<br />
computacionales<br />
5,000 50.488 55.938 107.830<br />
10,000 23.672 102.677 102.344<br />
50,000 2,500.708 -- --<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
FIFO LIFO PRIORITY<br />
TAMAÑO N_GEN N_VISIT N_GEN N_VISIT N_GEN N_VISIT<br />
1,000 21,824 11,620 12,402 11,520 20,858 10,857<br />
1,500 5,161 3,106 9,877 8,587 4,724 2,823<br />
5,000 93,589 58,444 166,333 159,712 113,886 79,293<br />
10,000 37,886 22,108 135,372 128,002 38,303 22,266<br />
50,000 404,802 202,617 2,172,245 2,137,110 406,361 203,513<br />
100,000 1,158,033 608,696 4,750,148 4,680,425 1,140,929 599,641<br />
Mª Isabel Dorta González<br />
Table 1. Número de nodos generados y visitados (prime 107)<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Resultados computationales<br />
KNP N = 50,000<br />
Experimentos<br />
Computacionales<br />
7,00<br />
Conclusiones<br />
6,00<br />
5,00<br />
Descrición de las<br />
Máquinas<br />
Resultados<br />
computacionales<br />
Speedup<br />
4,00<br />
3,00<br />
2,00<br />
Sunfire-NoSol<br />
Origin-NoSol<br />
Sunfire-Sol<br />
Origin-Sol<br />
1,00<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
0,00<br />
2 3 4 8 16 24 32<br />
Procesadores
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Resultados computationales<br />
KNP no Sol, Size = 100,000<br />
Conclusiones<br />
7,00<br />
Descrición de las<br />
Máquinas<br />
Resultados<br />
computacionales<br />
Speedup<br />
6,00<br />
5,00<br />
4,00<br />
3,00<br />
2,00<br />
1,00<br />
0,00<br />
2 3 4 8 16 24 32<br />
Processors<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
Sunfire 6800 Origin 3000 PC Cluster
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
No solution vector<br />
7,00<br />
Resultados computationales<br />
Sunfire vs. Origin<br />
Descrición de las<br />
Máquinas<br />
Resultados<br />
computacionales<br />
Speedup<br />
6,00<br />
5,00<br />
4,00<br />
3,00<br />
2,00<br />
1,00<br />
Sunfire-100,000<br />
Origin-100,000<br />
Sunfire-50,000<br />
Origin-50,000<br />
Sunfire-10,000<br />
Origin-10,000<br />
0,00<br />
2 3 4 8 16 24 32<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
Procesadores
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
7,00<br />
6,00<br />
5,00<br />
Resultados computationales<br />
KNP no Sol, Size = 100,000<br />
Descrición de las<br />
Máquinas<br />
Resultados<br />
computacionales<br />
Speedup<br />
4,00<br />
3,00<br />
2,00<br />
1,00<br />
0,00<br />
2 3 4 8 16 24 32<br />
Procesadores<br />
Mª Isabel Dorta González<br />
Marzo, 2007<br />
Sunfire-MPI Origin-MPI Origin-OpenMP
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Conclusiones<br />
• Diseño de un nuevo esqueleto para la técnica de<br />
Ramificación y Acotación:<br />
MaLLBa:BnB<br />
• Diferentes implementaciones de resolutores:<br />
• Uno Secuencial<br />
• Dos resolutores usando Paso de Mensaje:<br />
• Centralizado<br />
• Distribuido<br />
• Uno para Memoria Compartida<br />
Mª Isabel Dorta González<br />
Marzo, 2007
Implementación Secuencial y Paralela de Técnicas Algorítmicas:<br />
Aplicación a Problemas de Optimización Combinatoria<br />
Seminario Invitado: Dpto Métodos Cuantitativos en Economía y Gestión<br />
Introducción<br />
Interfaz de Usuario<br />
Patrones<br />
Secuenciales<br />
Patrones Paralelos<br />
Experimentos<br />
Computacionales<br />
Conclusiones<br />
Conclusiones<br />
• Metodología de trabajo para la resolución de<br />
Problemas de Optimización Combinatoria<br />
mediante la técnica de Ramificación y<br />
Acotación<br />
• Implementación de problemas académicos:<br />
Mochila y TSP<br />
• Resultados Computacionales<br />
• Supercomputadores<br />
• Redes de PC<br />
Mª Isabel Dorta González<br />
Marzo, 2007