15.11.2013 Views

Esqueleto Algorítmico - ulpgc

Esqueleto Algorítmico - ulpgc

Esqueleto Algorítmico - ulpgc

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!