15.11.2013 Views

Esqueleto Algorítmico - ulpgc

Esqueleto Algorítmico - ulpgc

Esqueleto Algorítmico - ulpgc

SHOW MORE
SHOW LESS

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

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

Saved successfully!

Ooh no, something went wrong!