ALGORITMOS DE BALANCE DE CARGA CON MANEJO DE ´ INFORMACION PARCIAL Para obtener el grado de MAESTRO EN CIENCIAS (Ciencias y Tecnolog´ de la Informaci´n

) ıas o PRESENTA Ing. Juan Santana Santana

Asesores Dr. Manuel Aguilar Cornejo Dr. Miguel Alfonso Castro Garc´ ıa

Sinodales Presidente: Dr. Ricardo Marcel´ Jim´nez ın e Secretario: Dr. Miguel Alfonso Castro Garc´ ıa Vocal: Dr. Jos´ Oscar Olmedo Aguirre e

M´xico - D.F. e Enero de 2010

Resumen
El balance de carga es un elemento esencial del c´mputo paralelo, tiene por objetivo o mantener el equilibrio del volumen de carga entre los procesadores a tiempo de ejecuci´n, para o reducir el tiempo de respuesta de las aplicaciones. Actualmente existen algunas propuestas para realizar balance de carga en aplicaciones paralelas, sin embargo, la mayor´ manejan ıa informaci´n global, es decir, implica el uso de una gran cantidad de mensajes provocando o que la reducci´n del tiempo de respuesta no siempre sea la esperada, adem´s de presentar o a problemas de escalabilidad. En esta tesis proponemos dos algoritmos de balance carga con manejo de informaci´n parcial cuyas comunicaciones siguen una topolog´ de toroide y de o ıa ´rbol binario. El objetivo de los algoritmos, es reducir de mejor forma el tiempo de respuesta a y el problema de escalabilidad. En los experimentos realizados para evaluar el desempe˜ o de n los algoritmos se utilizaron dos aplicaciones (est´tica y din´mica), la primera permite realizar a a multiplicaci´n de matrices y la segunda resuelve el problema de las N-Reinas. Los resultados o obtenidos muestran que cuando las aplicaciones utilizan los algoritmos propuestos, el tiempo de respuesta y el problema de escalabilidad se reducen.

i

ii

Agradecimientos
A Dios por llenar mi vida de dicha y bendiciones. A la Universidad Aut´noma Metropolitana Iztapalapa y al Consejo Nacional de Ciencia o y Tecnolog´ CONACYT por el apoyo brindado para la realizaci´n de mis estudios. ıa o Al departamento de Ingenier´ El´ctrica y al Laboratorio de Superc´mputo y Visualizaıa e o ci´n en Paralelo, por las facilidades otorgadas durante mis estudios y en especial a la comisi´n o o de la Maestr´ por confiar en que pod´ sacar este proyecto adelante. ıa ıa A mis Asesores, Dr. Manuel Aguilar Cornejo y Dr. Miguel Alfonso Castro Garc´ a quienes ıa, antes que mis asesores considero amigos, por sus ense˜ anzas, consejos y apoyo durante la n realizaci´n de este proyecto. o A la Dra. Graciela Rom´n Alonso, por todo el apoyo brindado, tanto en la realizaci´n de a o este proyecto como en la escritura del art´ ıculo publicado con los resultados de este trabajo. A los profesores con quienes tuve la fortuna de tomar clase, por su disposici´n y ayuda o brindadas. A mis compa˜ eros y amigos de la MCyTI, Ismael, Carlos, Benjam´ Nayeli, Jos´ Luis, n ın, e Luis A., Jorge, Mart´ Apolo, con quienes tuve la fortuna de convivir durante buena parte ın, de mi estancia en la Maestr´ por su confianza y apoyo. ıa, Por ultimo, pero no menos importante, quiero agradecer a mis Padres, Juan y Ernestina, ´ a quienes agradezco de todo coraz´n por su amor, cari˜ o y comprensi´n. En todo momento o n o los llevo conmigo. A mis Hermanos, Eli, Blanquita y Lalito, por la compa˜´ y el apoyo que me brindan. nıa

iii

iv

Contenido

Lista de Figuras Lista de Tablas 1. Introducci´n o 1.1. C´mputo paralelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 1.2. Justificaci´n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 1.3. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4. Metodolog´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ıa 1.5. Estructura de la tesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Balance de carga 2.1. Introducci´n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 2.2. Algoritmos de Balance de Carga . . . . . . . . . . . . . . . . . . . . . . . . . 2.3. Pol´ ıticas de balance de carga . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4. Taxonom´ de los algoritmos de balance de carga . . . . . . . . . . . . . . . ıa 2.5. Herramientas de desarrollo de aplicaciones paralelas con balance de carga . . 2.5.1. The Zoltan Parallel Data Services Toolkit . . . . . . . . . . . . . . . 2.5.2. SAMBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.3. DDLB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.4. DLML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v

IX

1 3 3 5 6 7 7 9 9 9 10 13 17 17 20 23 24

o 3. . . . . . . Resultados .2. . . . 4. . . . . . . . . . . . . . . o 5. . . . . . . . . . . . . N-Reinas . . .3. .3. . . . . . . . . .2. . . . . . . . . . .1. . . . . . . . . . . . . . . . . . . . . .2. Etapa de inicializaci´n . . . Introducci´n . . . . . . . . . . . . . . Etapa de balance de carga . . . . . Interfaz de programaci´n de DLML . . . . 5.4. . vi . . . . . . . .1.3. . . . . . . . . . . . . . . . . . . . . . .2. . . . . . . . . . o 4. .3. . . . . . 3. . . . . . . . . . . . . . . . . . . . Algoritmo ´rbol binario . . . . . . . . . . 4. . . . . Programaci´n con listas de datos en DLML o . . . . .3. . . Tiempos de respuesta en la aplicaci´n de las N-Reinas o . .3. Algoritmos de balance de carga con manejo de informaci´n parcial o 4. . Arquitectura de DLML . . . Infraestructura . . . . .1. . . . .1.1. . . . . .CONTENIDO 3. . .5. Introducci´n . . . .2. . . .1. . .3. . . . . . . . . .2. . . Aplicaciones . . . . Etapa de terminaci´n . . . . o 4. . . . . . . . . . . . Multiplicaci´n de matrices . u 4. . . . . Distribuci´n de carga en N-Reinas . . .2. . . . . . . Etapa de balance de carga . 5. . Plataforma de experimentaci´n y resultados o 5. . . Algoritmo de balance de carga . . . . . . . o 4. u 4. . . . . . . . . . . . Escalabilidad en N-Reinas . . . . . . . . . .1. .2. . . . . . . .3. . . . . . . . . . 5. . . . . . . . . . . . Etapa de b´ squeda de una vista global de carga . . . Etapa de inicializaci´n . .1. . . . . . . . . .3. . . . . . . . . . . . . . . . . . 4. . DLML 3. . . . o 4. . . . . . .3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4. .3. . . . . . . . . . . . . . . a 4. . . . . . . . . . . .2. . . . . . . . . . . . . . . . . . . . . . . 27 27 28 31 32 34 39 39 45 45 46 51 57 58 59 60 61 62 67 67 67 69 72 73 73 74 77 3. .2. . . . . . . . . . . . . . . . . Etapa de b´ squeda de una vista global de carga . . . . . . . . . . . . . . . . . . . . . . . . . 5. . . . . .2. . . . . . . . . . . o 5. . . . . . o 5. . . Etapa de terminaci´n . o 4. . . . . . . . . 3. . . . . . . . .3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Algoritmo toroide . . . . . .3. . . . . . . . .1. . . . . . . . . . . . . . . . . . . . . 5. .4. . . . . . . .

. . . . . . . . . . . 5. . .CONTENIDO 5. . . . .1. . . . . . . . . Trabajo a futuro . . . o 6. . . . . . . . .5. . . . . . . . . . . . . . . . . . . .3. . . . . . . . Conclusiones .3. . . . . . . .4. . . . . . . . . . .2. . Tiempos de respuesta en Multiplicaci´n de Matrices . . . . . . Conclusiones y trabajo a futuro 6. . . . . . . 6. . . . . . Referencias 79 80 85 85 87 97 vii . . Mesajes utilizados en N-Reinas .

CONTENIDO viii .

. . 3. . . . . . . . Manejo de la lista de datos en la multiplicaci´n de matrices . . . . . . Topolog´ l´gicas de comunicaci´n toroide (a) y ´rbol binario (b) . . . 4. . Multiplicaci´n de matrices . . ıas o o a 4. . . . . . . . o ıa a 5. . . . . Algoritmo de subasta para la topolog´ toroide . . . . . . . . . . . . . . . . . . . .1. . . . . . . . .5. . . . . . . .1. o 3. . . . . Lista de datos en un ambiente paralelo . o 4. . . . .4. . .2. . . . . . . . . . . . Arbol formado en tiempo de ejecuci´n del protocolo PIF . . Recolecci´n de resultados en la topolog´ de ´rbol binario . . . . . ıas o 4. . . Ejecuci´n del algoritmo PIF en la topolog´ toroide . . . . Secuencia de propagaci´n de mensajes con el protocolo PI . . . . o 4. . . . . . Algoritmo de subasta global en DLML . . . . . . . . . . . .10. 3. . . . . . Secuencia de propagaci´n de mensajes con el protocolo PIF . . .4. . . . . . . . . . o ´ 4.2. . . ıa 3. . . . . . o ıa 4. . . . . . . . . . . .1.1. . . . . o o 2.Lista de Figuras 1. . .7. o o ıa a 4. . . . . . . . . . . . . . Algoritmo de subasta global en DLML con terminaci´n . . . . . o ix 4 14 29 30 31 33 40 41 43 44 47 48 52 54 55 59 63 68 68 . . o 4. . . . . . .3. . . . . . . . .9. . . Arquitectura DLML . . . . . . . . . . . .1. . . . . . . . Paralelizaci´n de una aplicaci´n . . . . . . . . .3. . . . o 4. Configuraci´n de comunicaci´n de la topolog´ de ´rbol binario . . . . . . . . . . .6. . . . . . . . . . . . . . . . . . Taxonom´ de los algoritmos de balance de carga . Topolog´ de comunicaci´n con esquema de vecinos y global . . . . . . . . . . . . .8.11. . . . . . . . . .2. . ıa 4. Notificaci´n de disponibilidad de procesamiento . . Ejecuci´n del algoritmo PIF modificado . . . . . . . . . . . . o 5.

. . Mensajes utilizados en aplicaci´n N-Reinas con N=16 . . . . . o a u 5. . . . o 5. .4.10. . . . . Manejo de la lista de datos en la exploraci´n del ´rbol de b´ squeda . . . . o 5. . o 5. . . . . . . . . . . o 5. o 5. . . . . . . . . . . Tiempos de respuesta y escalabilidad con aplicaci´n N-Reinas con N=16 . . a u 5. .8. . . . . . . . . . . . . . . . . . . . .13. . . . . . . Tiempos de respuesta y escalabilidad en aplicaci´n N-Reinas con N=17 . . Distribuci´n de carga con algoritmos global.3. . . . . Mensajes utilizados en aplicaci´n N-Reinas con N=17 . . .LISTA DE FIGURAS 5. . . . Distribuci´n de carga con algoritmos global. .12. .5. .7. . . . . . . Tiempos de respuesta para multiplicaci´n de matrices de tama˜ o 1000 x 1000 o n 5. . toroide y ´rbol binario en aplicao a ci´n N-Reinas con N=16 . . . . . . o 5. . . Soluciones y ´rbol de b´ squeda en 4 Reinas . . . . . . . . . Tiempos de respuesta para multiplicaci´n de matrices de tama˜ o 1200 x 1200 o n 76 78 79 80 81 82 83 75 74 70 71 x . . .9. . . . . . . . . . . . . . . .6. . . . .11. . . . . e 5. . . . . Tiempos de respuesta en aplicaci´n N-Reinas con N=14-19 con cluster heteo rog´neo . . toroide y ´rbol binario en aplicao a ci´n N-Reinas con N=17 . . . . . . . . . . .

. . . . . . . Tiempos de respuesta obtenidos en minutos para la aplicaci´n N-Reinas con o N=14 y N=19 . . . . . . . . . 5. o 3. . . . . . . . . . . . . . . . 5. . o 5. . . . . . . . . . . .1. . 5. . .1. . . . . Funciones de recopilaci´n . . . . . . . . . n o 3. . . . . . . .3. . . . . . . . . Cluster homog´neo Aitzaloa . . . . . . . . . . . . . . . . . . . . . . .2. . . . . .Lista de Tablas 2. . . .1. Funciones de se˜ alizaci´n . . . .2. . .5. . . . . . . . . . Funciones de manipulaci´n . . . .3. . . . Soluciones conocidas para el problema de las N-Reinas . . Clasificaci´n de los algoritmos de balance de carga . . . . . . . . . . . e 5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Desviaci´n est´ndar (σ) de las soluciones exploradas con N=17 . . . . . . . . . o a 73 77 18 34 35 37 69 72 73 1 . . . . . Cluster heterog´neo Pac´ e ıfico . . . . . . . . . . . . . . . . . o 3. . . .4. . . .

LISTA DE TABLAS 2 .

la cual no a o a 3 . educaci´n. 1. justificaci´n y metodolog´ propuesta para la realizaci´n de esta o o ıa o tesis. Estas aplicaciones secuenciales hasta hace algunos a˜ os. ıas.1. han surgido nuevos a o problemas de mayor complejidad que implican un aumento considerable en la cantidad de c´lculos requeridos para conocer su soluci´n. del tal forma que sea posible ejecutar una aplicaci´n secuencial que resuelve un problema complejo en un o tiempo razonable. C´mputo paralelo o Muchas de las aplicaciones que actualmente conocemos. Sin embargo. de esta forma las aplicaciones ´ se modelan como series de instrucciones que posteriormente ser´n ejecutadas de forma sea cuencial. La primera puede a ıa ser la de disponer de una computadora con gran capacidad de procesamiento.Cap´ ıtulo 1 Introducci´n o En este cap´ ıtulo se presentan los conceptos b´sicos del c´mputo paralelo y el balance a o din´mico de carga. han sido desarrolladas para ejecutarse en una sola computadora utilizando un unico procesador. los objetivos. industria. n Ante esta problem´tica se podr´ pensar en dos posibles soluciones. siempre existir´ alguna aplicaci´n m´s compleja. Sin embargo. provocando que la soluci´n secuencial pueda a o o tomar d´ semanas o a˜ os. posteriormente se presenta la problem´tica que motiva este trabajo de a a investigaci´n. hab´ sido adecuadas para n ıan resolver algunos de los problemas del quehacer diario de los seres humanos en sus distintas ´reas de trabajo como ciencia. etc.

Este conjunto de computadoras es conocido como cluster. esta etapa es la de distribuci´n.1: Paralelizaci´n de una aplicaci´n o o 4 . La inclusi´n de estas etapas es lo que llamamos o paralelizaci´n de la aplicaci´n y se muestran en la Figura 1. Despu´s de realizar el particionamiento ser´ necesario distribuirlas entre los a e a procesadores donde habr´n de ejecutarse. C´mputo paralelo o se podr´ resolver en el tiempo requerido. o o como resultados parciales o el resultado final. as´ el poder de o ı c´mputo de todas permitir´ disponer de una gran capacidad de procesamiento como si se o ıa tratara de una computadora con una gran cantidad de recursos. se deben considerar etapas o adicionales a las consideradas en el desarrollo de una aplicaci´n secuencial. Esta segunda soluci´n es mejor conocida como o o c´mputo paralelo. o o Tareas Procesadores Aplicación Particionamiento Distribución Comunicación Figura 1. La etapa de particionamiento considera la o o divisi´n de la aplicaci´n en diferentes tareas. de tal manera que estas puedan ejecutarse sio o mult´neamente. Una vez que las a o tareas se han distribuido entre los procesadores. por lo general se requerir´ que puedan comua nicarse entre s´ esto para ejecutar operaciones de sincronizaci´n o intercambiar informaci´n ı. de manera que una aplicaci´n o que resuelve un problema complejo podr´ ejecutarse en todas las computadoras permitiendo ıa encontrar la soluci´n en un tiempo adecuado.1. o Pero para que una aplicaci´n pueda ejecutarse en paralelo.1. a La segunda soluci´n puede ser la de contar con un conjunto de computadoras que trabajen o en colaboraci´n. estas etapas son: o particionamiento. distribuci´n y comunicaci´n.1.

provocando que el tiempo de respuesta est´ en funci´n de los nodos e o ocupados. Para evitar que el desempe˜ o de la aplicaci´n se vea afectado surge el balance n o de carga. o 1. o capacidad de procesamiento de los procesadores. es decir que hay procesadores con mayor poder de c´mputo que otros. El balance de carga consiste en mantener un equilibrio entre la carga procesada por cada procesador. Dado que la cantidad de datos que se puede o a generar no se conoce con anticipaci´n. se tenga que 5 . el simple hecho de paralelizar una aplicaci´n no garantiza que el tiempo de o respuesta obtenido sea el m´ ınimo. [15]. es dif´ mantener un equilibrio en la cantidad de o ıcil datos asignados a cada procesador. esto ocasiona o que algunas tareas finalicen su ejecuci´n antes que otras.1. o a El primer caso se presenta cuando el cluster est´ formado por procesadores de distinta a capacidad. entonces el tiempo de respuesta de o la aplicaci´n depender´ de los procesadores con menor poder de c´mputo. Finalmente. Justificaci´n o Actualmente existen muchos trabajos en los que se presentan estrategias que permiten balancear carga [3]. la mayor´ de ellos requieren de conocer ıa el estado de carga global del sistema. la generaci´n din´mica de datos puede presentarse en aplicaciones o a que durante su ejecuci´n generen m´s datos. [10]. principalmente cuando se presenten los casos en los que el cluster utilizado sea heterog´neo. esto por lo general se ve reflejado en que el tiempo de respuesta de la aplicaci´n no es tan bueno. Esto implica que para balancear carga. Esto significa que varios usuarios pueden ejecutar tareas adicionales o ajenas en ciertos procesadores. para ello se requiere de algoritmos que permitan redistribuir carga a tiempo de ejecuci´n considerando la cantidad de carga en un procesador y/o en el sistema. Por otro lado. cluster no dedicado y/o que se trate de una aplicaci´n con e o generaci´n din´mica de datos. Introducci´n o Sin embargo. costo de procesamiento de la carga y costo de comunicaci´n.2. [14]. o Todos estos casos o inconvenientes provocan que el desempe˜o de una aplicaci´n paralela n o se deteriore. o a o decimos que un cluster es no dedicado cuando la infraestructura es compartida entre varios usuarios. sin embargo.

o Los objetivos espec´ ıficos son los siguientes: Dise˜ ar algoritmos con manejo de informaci´n parcial. Objetivos El objetivo general de este trabajo es dise˜ ar algoritmos de balance de carga con manejo n de informaci´n parcial. toroide y ´rbol binario. y comparamos el desempe˜ o del algoritmo original contra los desarrollados en esta tesis para n verificar si efectivamente se reduce el problema de escalabilidad. DLML (Data List Management Library) es una herramienta que permite desarrollar aplicaciones paralelas mediante el uso de funciones t´ ıpicas sobre listas. Para ello se propone implementar algunas topolog´ de comunicaci´n l´gica que permitan ıas o o organizar a los procesadores en un esquema de vecinos. Con el fin de verificar que el manejo de informaci´n parcial logra reducir el problema de o escalabilidad y el tiempo de respuesta. En consecuencia este tipo u de estrategias presentan problemas de escalabilidad al aumentar el n´ mero de procesadores. El objetivo de ´ utilizar informaci´n parcial es minimizar el n´ mero de comunicaciones requeridas en el bao u lance.1. en donde un procesador pueda balancear carga unicamente con los procesadores que se encuentren en su vecindad.3. de esta forma se pretende reducir el problema de escalabilidad y el tiempo de respuesta de las aplicaciones. u Nuestro trabajo propone balancear carga utilizando informaci´n parcial. es decir que el o balance puede ser ejecutado sin necesidad de conocer el estado de carga de todo el sistema. n o 6 . DLML ya incluye un algoritmo de balance de carga con manejo de informaci´n global llamado o subasta. requiriendo una gran cantidad de comunicaciones y por ende aumento en el tiempo de respuesta (sobre todo cuando el n´ mero de procesadores participantes es considerable). Los algoritmos fueron adaptados ıas o o a en la herramienta DLML [5].3. Objetivos recolectar el estado de carga de todos los procesadores que integran el sistema. se han dise˜ ado dos algoritmos que implementan dos n topolog´ de comunicaci´n l´gica. dicho algoritmo lo substituimos por los nuestros para realizar las pruebas necesarias. 1.

Estudio del balance de carga en la herramienta DLML. o o o 4.1. En el Cap´ a o ıtulo 4 presentamos la propuesta de los algoritmos de balance de carga con manejo de informaci´n o 7 . o 6. o o Verificar que los tiempos de respuesta de las aplicaciones que utilicen los algoritmos propuestos. Comparar la distribuci´n de carga de los algoritmos dise˜ados con el algoritmo que o n DLML incluye. Metodolog´ ıa La metodolog´ para la realizaci´n de la tesis consisti´ de las siguientes etapas: ıa o o 1. Adaptaci´n de los algoritmos propuestos en la herramienta DLML. 1. Selecci´n de aplicaciones e infraestructura de pruebas. Evaluaci´n de los resultados.4.5. 3. o 2. disminuyen con respecto al algoritmo original de DLML. Estructura de la tesis El resto de la tesis se encuentra organizada de la siguiente manera: en el Cap´ ıtulo 2 se presentan los conceptos b´sicos del balance din´mico de carga y los trabajos relacionados. Elaboraci´n y discusi´n de los algoritmos de balance con manejo de informaci´n parcial. o 5. Probar la escalabilidad de los nuevos algoritmos bajo un escenario con diferentes patrones (tipo de aplicaci´n y ambiente de ejecuci´n). El a a Cap´ ıtulo 3 est´ dedicado a presentar la biblioteca de programaci´n DLML. o 1. Revisi´n de literatura relacionada con los algoritmos de balance de carga. Introducci´n o Adaptar los algoritmos para ser usados bajo la herramienta DLML como algoritmos de balance de carga.

Estructura de la tesis parcial.5. Por ultimo. en el Cap´ ´ ıtulo 6 se presentan las conclusiones y trabajo a futuro.1. mediante la implementaci´n de topolog´ de comunicaci´n de ´rbol binario y toroide. o ıas o a En el Cap´ ıtulo 5 presentamos la plataforma de experimentaci´n as´ como los resultados o ı obtenidos. 8 .

y que resulte eficiente u considerando las condiciones de operaci´n tales como plataforma de ejecuci´n y tipo de o o aplicaci´n. o o debe contar con alg´ n algoritmo que le permitan realizar esta tarea.1. Introducci´n o Como ya mencionamos. a las pol´ ıticas en las que basan su funcionamiento. Algoritmos de Balance de Carga Este tipo de algoritmos permiten redistribuir carga entre procesadores a tiempo de ejecuci´n. el balance de carga es parte fundamental en el c´mputo paralelo o pues permite obtener tiempos de respuesta menores mediante la redistribuci´n de carga.Cap´ ıtulo 2 Balance de carga Este cap´ ıtulo est´ dedicado al balance de carga. Para o que una aplicaci´n paralela tenga la posibilidad de balancear carga en tiempo de ejecuci´n. Esto implica la reducci´n de los tiempos de respuesta. taxonom´ y clasificaci´n. ıa o Adem´s se presentan algunas herramientas que permiten desarrollar aplicaciones paralelas a en donde se incorpora uno o m´s algoritmos de balance de carga. a los algoritmos que implementan el a balance de carga.2. reducci´n del problema de o o escalabilidad mediante uso eficientemente de recursos de c´mputo y minimizaci´n del efecto o o 9 . a 2. El objetivo fundamental de estos algoritmos es mejorar el desempe˜ o de una aplicaci´n o n o paralela. o 2.

localizaci´n e informaci´n [12]. A continuaci´n se describen cada una de ellas. en el dise˜ o de este tipo de algoritmos se deben n tomar en cuenta aspectos como: la cantidad de carga en un procesador y/o en el sistema. costo de procesamiento de la carga. as´ un nodo puede considerarse e ı descargado. selecci´n. Pol´ ıticas de balance de carga de factores de desbalance como el uso de un cluster heterog´neo. si la pol´ ıtica considera dos umbrales. poder de c´mputo de los procesadores. o o Pol´ ıtica de transferencia Esta pol´ ıtica determina si la carga debe ser transferida a otro procesador o no. Las pol´ o ıticas de umbral se pueden clasificar en pol´ ıticas de umbral absoluto y umbral relativo. Pol´ ıticas de balance de carga Las pol´ ıticas de transferencia. existen pol´ ıticas que facilitan la identificaci´n de estos aspectos y o ayudan a dise˜ ar el algoritmo de balance de tal forma que sea eficiente. determinan el o o o comportamiento del algoritmo as´ como su desempe˜ o en aplicaciones y ambientes de ejecuı n ci´n distintos. Las pol´ ıticas de umbral relativo adem´s de considerar el estado local. Con este fin. costo de comunicaci´n. Las pol´ ıticas de umbral absoluto consideran unicamente su propio estado local y no consi´ deran el de otros nodos. as´ cuando el estado de carga cruza uno de estos umbrales se puede ı tomar la decisi´n de realizar o no una transferencia de carga. o o entre otros. principalmente se usan valores de umbral. cargado o sobrecargado si su estado local es menor. n 2. las regiones de carga son tres: descargado.3. los cuales son el l´ ımite que divide dos regiones de carga. a tambi´n consideran el estado de carga del procesador destino. cluster compartido y/o e generaci´n din´mica de datos. Dependiendo del n´ mero de umbrales se tiene el n´ mero de regiones de carga (por u u ejemplo.3. cargado y sobrecargado). o a Para que el objetivo pueda alcanzarse. 10 . Para ello. igual o mayor al del resto de los nodos respectivamente.2.

en este se debe considerar si el costo de a realizar la transferencia puede ser mayor al de permitir que contin´ e su ejecuci´n. La o primera se presenta cuando se transfiere la tarea. e Pol´ ıtica de localizaci´n o La pol´ ıtica de localizaci´n tiene por objetivo encontrar alg´ n nodo para transferir parte o u de la carga una vez que se ha decidido realizar la transferencia de carga. La pol´ ıtica “preferente” permite transferir una tarea que se ha ejecutado parcialmente. o o por lo que no se requiere la transferencia del estado de ejecuci´n de la tarea. Sin embargo. implicando un costo de comunicaci´n adicional. Una vez que o a la pol´ ıtica de trasferencia decide que un procesador se encuentra en estado de sobrecargado. es decir cada nodo mantiene la informaci´n del estado de carga o de todos los dem´s procesadores. La otra situaci´n se presenta o o o cuando la tarea elegida est´ a punto de finalizar. Esta pol´ ıtica puede ser clasificada en tres categor´ selecci´n aleatoria. o o a En la selecci´n aleatoria se elige al azar al nodo al cual se transferir´ la carga (sin tomar o a en cuenta su estado de carga). Balance de carga Pol´ ıtica de selecci´n o La pol´ ıtica de selecci´n determina que tarea (carga) deber´ ser transferida. existe o u o e a la posibilidad de que el nodo elegido no sea el adecuado. o o e 11 . sin embargo. la pol´ ıtica de selecci´n elige una tarea para ser transferida. esto requiere que la informaci´n almacenada en cada nodo a o se necesite actualizar de forma peri´dica. esta situaci´n se puede presentar o cuando al momento de la elecci´n la informaci´n del estado en el nodo no est´ actualizada. Esta pol´ ıtica es r´pida en la elecci´n.2. en este caso tambi´n se debe transferir e el estado de ejecuci´n en el que se encontraba para que el nodo receptor pueda continuar o su ejecuci´n. A´ n cuando la elecci´n tambi´n es r´pida. a La selecci´n din´mica permite seleccionar al nodo destino considerando el estado de carga o a mantenido en cada nodo. transferir tareas que ya han estado en ejecuci´n conlleva a dos situaciones. ıas. selecci´n din´mica y polling de estado. puede a o suceder que un nodo sobrecargado reciba m´s carga. esta pol´ o ıtica puede ser clasificada en preferente y no preferente. ni existe riesgo o de transferir tareas que est´n a punto de finalizar. Por otro u o lado la pol´ ıtica “no preferente” selecciona s´lo las tareas que no han comenzado la ejecuci´n.

o o En la primera estrategia no se maneja informaci´n del estado de carga.). Con esta estrategia la elecci´n del procesador puede no ser la m´s adecuada. De esta forma. o u sin embargo. permitiendo que la e o elecci´n sea m´s adecuada. o intercambio peri´dico y difusi´n de cambio de estado.3. u En el enfoque bajo demanda. los algoritmos de balance de carga pueden estar como puestos por una o m´s pol´ a ıticas de balance que determinan su comportamiento. o La difusi´n de cambio de estado consiste en propagar el estado de cada procesador siempre o que este sufra un cambio. a Como anteriormente se mencion´. a Pol´ ıtica de informaci´n o Esta pol´ ıtica determina cu´ndo la informaci´n del estado de carga de otros procesadores a o se debe recolectar. en el intercambio peri´dico. la decisi´n con respecto o a qu´ procesador transferir carga se basa en la informaci´n obtenida. la informaci´n es obtenida o o de otros procesadores de forma peri´dica a´ n y cuando no se inicie el balance de carga. as´ la elecci´n se toma con ı o base en la informaci´n recolectada. porcentaje de uso de CPU. bajo demanda. etc. la elecci´n o o del procesador al que se ha de realizar la transferencia es aleatoria. d´nde se encuentra y qu´ informaci´n ser´ considerada como indicador o e o a del estado de carga (cantidad de datos o procesos. De acuerdo 12 . es decir. la informaci´n del estado de carga de los dem´s procesadores o a se obtiene al momento de iniciar el balance de carga. Pol´ ıticas de balance de carga El esquema de polling consiste en consultar el estado de carga de algunos o todos los nodos al momento en que se pretende ejecutar la transferencia. o a A diferencia del enfoque anterior. Las estrategias m´s utilizadas para implementar est´ pol´ a a ıtica son: sin informaci´n. pues existe la posibilidad de sobrecargar o a a alg´ n procesador. es complicado establecer un intervalo apropiado para recolectar y actualizar la informaci´n que asegure la exactitud del estado de carga obtenido y que no represente un o costo elevado en comunicaci´n. La ventaja de este esquema es que la elecci´n del nodo o o por lo general es la m´s adecuada pero es lenta con respecto a las anteriores. as´ cuando el balance sea ejecutado la informaci´n del estado de ı o carga estar´ disponible.2.

Basada en la pol´ ıtica de informaci´n. 2. es posible establecer diferentes tipos de clasificaciones. es decir que se ejecuta cuando o a hay un cambio en el estado de carga y puede dividirse en: iniciada por el emisor e iniciada por el receptor. Balance de carga a las pol´ ıticas que utilicen estos algoritmos. mientras que las estrategias peri´dicas tiene menor complejidad de implementaci´n o o pero presentan un costo extra cuando la carga se encuentra balanceada. Taxonom´ de los algoritmos de balance de carga ıa La taxonom´ de Osman (Figura 2.4. Cuando el mecanismo ejecutado se ejecuta de forma peri´dica se o o requiere establecer previamente un intervalo de tiempo para la ejecuci´n del mecanismo. 13 . o Iniciaci´n o La estrategia de iniciaci´n se encarga de especificar que mecanismo invoca las actividades o de balance de carga. en este trabajo hemos considerado la taxonom´ propuesta por Osman [18]. Estas estrategias determinan el grupo al que pertenece o o un algoritmo de balance de carga. Si es iniciada por el emisor. En ella se considera la existencia de cuatro estrategias principales: inicializaci´n. o localizaci´n. Aunque a la fecha se han propuesto varias clasificaciones. La o iniciaci´n bajo demanda est´ basada en el estado de carga local. se consideran dos mecanismos: o peri´dico y bajo demanda. A continuaci´n se describen cada una de estas estrategias. en donde cada familia puede dividirse en dos o m´s a subgrupos. Con esta taxonom´ es posible clasificar ıa ıa un gran n´ mero de algoritmos cuyo dise˜ o est´ basado en estas pol´ u n e ıticas.2.1) tiene como prop´sito proveer una terminolog´ y ıa o ıa un medio para describir y clasificar distintos algoritmos de balance que a la fecha se han propuesto. intercambio y selecci´n. si es iniciada por el receptor entonces el procesador se encuentra descargado. Las estrategias bajo demanda generalmente tienen mejor respuesta en condiciones de desbalance. significa que el procesador que transferir´ parte a de su carga se encuentra sobrecargado.

Taxonom´ de los algoritmos de balance de carga ıa Iniciación Localización del balanceador de carga Intercambio de información Selección de carga Periódico Bajo demanda Procesador Carga Central Distribuido Comunicación Toma de decisión Síncrono Asíncrono Local Global Iniciado por Emisor Iniciado por Receptor Topología Intercambio de tarea Uniforme Aleatoria Local Global .4.14 Figura 2.1: Taxonom´ de los algoritmos de balance de carga ıa Balance Dinámico de Carga 2.

obtenida de los e o procesadores vecinos o de todos los procesadores del sistema. u Intercambio de informaci´n o Basada en la pol´ ıtica de informaci´n. comunicaciones puede ser alto sobre todo cuando el n´ mero de procesadores es considerable. el costo de comunicaci´n es muy bajo pero por lo general la decisi´n tomada no es o o muy acertada pues s´lo se considera el estado de carga local. Balance de carga Localizaci´n del balanceador de carga o Esta estrategia indica en donde el algoritmo de balance es ejecutado. este puede ser ejecutado en cualquier momento por cualquier procesador sin importar si ya est´ siendo ejecutado por otros procea sadores. La informaci´n usada puede ser: local. pero la decisi´n tomada por lo o a o 15 . un inconveniente es la existencia de un cuello de botella en el sistema. esto se debe a que un solo procesador es el encargado de ejecutar el algoritmo. Si la informaci´n utilizada es o o obtenida de los vecinos. Tanto la estrategia centralizada como la distribuida pueden presentar inconvenientes. En la estrategia distribuida al requerir que los procesadores se comuniquen entre s´ el costo en ı. de tal forma que cuando el algoritmo es invocado los procesadores detienen el procesamiento de la aplicaci´n y realizan el balance de carga. el costo en comunicaci´n es el m´s elevado. o En el caso de un algoritmo de balance as´ ıncrono. si es ejecutado por varios ´ procesadores se dice que es distribuida. ı o Estos algoritmos a su vez pueden ser clasificados en s´ ıncronos y as´ ıncronos.2. esta estrategia se encarga de especificar de d´nde o o se obtiene la informaci´n usada para tomar la decisi´n de balancear carga y cu´l es el flujo o o a de la carga a trav´s del sistema. En la estrategia centralizada. Cuando es ejecutado por un unico procesador se dice que es una estrategia centralizada. En caso de utilizar informaci´n obtenida de todos o o los procesadores. Si la informaci´n utilizada es o local. Los algoritmos distribuidos requieren que todos los procesadores se comuniquen entre s´ para compartir informaci´n como su estado de carga. Un algoritmo s´ ıncrono se ejecuta simult´neamente en todos los procesadores participantes a del sistema. el costo de comunicaci´n se incrementa en funci´n del n´ mero de o o u vecinos pero se logra una mejor decisi´n.

o o Central. se han considerado algunos algoritmos que sirven para mostrar que la taxonom´ propuesta por Osman. uno de los prop´sitos de la taxonom´ es proveer una clasificaci´n o o ıa o para los algoritmos de balance. A continuaci´n se presentan algunos algoritmos estudiados. o La estrategia de comunicaci´n permite especificar la topolog´ de comunicaci´n de los o ıa o procesadores en el sistema. En el caso ıa o del algoritmo Central. Rendez-vous y Aleatorio: Estos algoritmos fueron propuestos en [11]. y aleatoria en caso contrario. efectivamente permite realizar ıa una clasificaci´n de los algoritmos independientemente de las pol´ o ıticas y estrategias utilizadas en su dise˜ o. una topolog´ se considera uniforme o u ıa aleatoria. El prop´sito o o de formar grupos es que un procesador pueda establecer comunicaci´n s´lo con los o o procesadores pertenecientes a su grupo. Taxonom´ de los algoritmos de balance de carga ıa general es m´s acertada. su dise˜ o est´ basado en las propuestas de [6] y [7]. Esta estrategia es combinada con la de comunicaci´n. Rake y Vecino: En estos algoritmos [18] el patr´n de comunicaci´n o o considerado es regular y consiste en la formaci´n de grupos de procesadores.1 se muestra la clasificaci´n). Dependiendo del n´ mero de vecinos por procesador. una de sus principales caracter´ ısticas es el patr´n de comunicaci´n que utilizan. X-Tiling. Con este fin.2. Se dice que una topolog´ es uniforme cuando el n´ mero de vecinos por procesador ıa u es constante. es decir que un procesador puede comunicarse o con cualquier otro sin seguir alguna topolog´ de comunicaci´n en particular.4. n a Tiling. as´ como una breve n o ı descripci´n (en la Tabla 2. Para que la comunicaci´n entre grupos se pueda o 16 . en este caso o o consideran una comunicaci´n irregular. e a Como se mencion´. Mediante la consideraci´n de algunas topolog´ es posible tener o ıas un esquema de comunicaci´n de vecinos sin importar el esquema de comunicaci´n f´ o o ısico. sobre todo a o cuando la informaci´n se obtiene de procesadores vecinos. Selecci´n de carga o La estrategia permite especificar qu´ procesadores ser´n los involucrados en el intercambio e a de carga y qu´ parte de la carga es la m´s adecuada para ser transferida.

1.1. Esto significa que los usuarios pueden dedicar mayor parte de su tiempo en dise˜ar la estrategia para resolver n un problema en particular.5. aunque por ahora s´lo se consideraron algunos. existe una gran cantidad. Las herramientas que describimos son: Zoltan. Herramientas de desarrollo de aplicaciones paralelas con balance de carga En esta secci´n se presentan algunas herramientas que permiten desarrollar aplicaciones o paralelas con balance de carga. esto a trav´s de la implementaci´n de algunos e o algoritmos que se encuentran disponibles en sus bibliotecas de funciones. En la siguiente secci´n se presentan algunas de estas o herramientas. se permite que un procesador pertenezca a dos grupos. De los algoritmos presentados. es posible tener una clasificaci´n de los algoritmos o mediante la taxonom´ propuesta. que en los detalles propios de la paralelizaci´n de la aplicaci´n y o o de alg´ n algoritmo de balance en particular. DDLB y DLML.2. algunos ´ de ellos han sido utilizados para construir herramientas que permiten desarrollar aplicaciones paralelas con balance de carga. Los servicios se ofrecen mediante un conjunto de utilidades entre las que se encuentran: Herramientas de migraci´n de datos. The Zoltan Parallel Data Services Toolkit Zoltan [8] es una biblioteca de programaci´n a trav´s de la cual se ofrecen servicios para el o e manejo de datos [16] en aplicaciones paralelas. 2. o 17 .5. pero adem´s ofrecen la posibilidad de a incluir balance de carga en sus aplicaciones. Como se observa en la Tabla 2. u SAMBA. de esta manera sirve como puente entre un grupo y otro. Balance de carga dar. cabe menıa o cionar que no son los unicos. El objetivo de estas herramientas es facilitar el proceso de desarrollo de aplicaciones paralelas a los usuarios. 2.

Herramientas de desarrollo de aplicaciones paralelas con balance de carga Iniciaci´n o Algoritmo Localizaci´n o del BC Intercambio de Informaci´n o Comunicaci´n o interprocesador Selecci´n de carga o Central Periodica Central Global (Global aleatoria) - Empareja procesado- Divide la carga entre el n´ mero de procesadou res ociosos res sobrecargados con ociosos Empareja procesado- RendezVous Periodica Central Global (Global aleatoria) Divide la carga entre el n´ mero de parejas de u procesadores Cada nueva tarea se distribuye mente aleatoria- res m´s cargados con a menos cargados Aleatoria Random Periodica As´ ıncrono distribuido Local (Global aleatoria) Tilling Periodica S´ ıncrono distribuido Local (Local uniforme) - Por cada etapa de balance se forman parejas de procesadores llamadas ventanas La carga es distribuida entre los procesadores de la ventana X-Tillin Periodica S´ ıncrono distribuido Local (GlobalUniforme) - Los procesadores balancean carga conectados mediante una topolog´ llamada hiperıa cubo La carga se distribuye entre los procesadores a trav´s del hipercubo e Rake Periodica S´ ıncrono distribuido Local (Local uniforme) - Procesadores centes Adya- La carga sobre el promedio es transferida al procesador adyacente Tabla 2.1: Clasificaci´n de los algoritmos de balance de carga o 18 .2.5.

e e • Bisecci´n recursiva coordinada (RBC). Zoltan considera dos clases de algoritmos para balancear o ´ carga: basados en m´todos geom´tricos y basados en topolog´ La diferencia fundamental e e ıa. o o Un paquete de depuraci´n de memoria. El prop´sito de ofrecer diferentes algoritmos de balance. • Particionado de Hipergrafo (HYPERGRAPH). o • Particionado basado en refinamiento (REFTREE). o • Bisecci´n recursiva inercial (RIB). Balance de carga Directorios de datos distribuidos que hacen eficiente la localizaci´n de datos fuera del o procesador. A´ n y cuando o u el usuario no sea capaz de decidir con exactitud el algoritmo que su aplicaci´n requiere. Generaci´n de sub-listas para la distribuci´n de datos. o Un conjunto de herramientas de balance din´mico de carga y particionado paralelo que a permiten distribuir datos sobre un conjunto de procesadores. es permitir a los usuarios elegir o el algoritmo m´s adecuado de acuerdo a las caracter´ a ısticas de su aplicaci´n.2. o o Un paquete de comunicaci´n para simplificar la comunicaci´n interprocesador. En relaci´n al ultimo punto. Los algoritmos son los ı siguientes: Basados en m´todos geom´tricos. Basados en topolog´ ıa. entre estas clases de algoritmos radica en la forma en que los datos son redistribuidos en los procesadores (particionado). • Particionado de grafo (GRAPH). da e origen a un algoritmo. Cada m´todo de particionado que se utilice en cada clase. de ah´ que cada clase incluye varios algoritmos. el o 19 .

a a Samba ofrece los siguientes algoritmos: Est´tico. Multiple Load Balancing) [2] es una herramienta que permite el desarrollo de aplicaciones paralelas con balance de carga bajo el modelo de programaci´n o SPMD.5. que en los detalles del balanceador. Colectivo. El objetivo de la herramienta es facilitar el desarrollo de aplicaciones bajo este modelo de programaci´n. Herramientas de desarrollo de aplicaciones paralelas con balance de carga contar con varios algoritmos abre la posibilidad de realizar comparaciones del desempe˜ o de n la aplicaci´n del usuario con cada uno de los algoritmos. Global. din´mico. bajo demanda. Particionado. Distribuido. Centralizado. vecinos. Distribuido.2. Individual. Adem´s de poder usar los algoritmos. y as´ determinar cu´l es el algoritmo o ı a m´s adecuado. tambi´n se tiene la posibilidad de a a e modificarlos con el objetivo de mejorar su desempe˜ o. Colectivo. Zoltan ofrece varios algoritmos de balance. basado en transferencia. de tal manera que permita al usuario enfocarse m´s en el problema a o a resolver. Colectivo. a Bajo demanda. Global. los cuales pueden ser optimizados para una aplicaci´n en espec´ o ıfico. n A manera de resumen.2. o e o 2. poniendo especial ´nfasis en facilitar la elecci´n e o del algoritmo de balance de carga m´s adecuado para su aplicaci´n. SAMBA SAMBA (Single Application. Esto implica que antes de o que los usuarios puedan desarrollar un algoritmo.5. primero tenga que familiarizarse con el c´digo fuente de la herramienta y los m´todos de partici´n implementados. 20 . por tal motivo los algoritmos requieren ser modificados para adaptarlos a las necesidades de cada aplicaci´n. El dise˜ o de la biblioteca a o n de balance estuvo basado en los siguientes criterios de clasificaci´n de algoritmos de balance: o est´tico. Local. Global. y orientado a eventos. Distribuido.

por lo que la carga que se asigna a un procesador unicamente se procesa por ´ste. e este env´ un mensaje a los dem´s procesadores pidi´ndoles ejecutar balance de carga. a Distribuido. ´ e Bajo demanda Un procesador maestro asigna un conjunto inicial de tareas a cada procesador.2. Con este enfoque a e cada procesador se le asigna el mismo n´ mero de tareas sin que haya una redistribuci´n u o posterior. Colectivo Un procesador maestro distribuye el conjunto inicial de tareas en partes iguales a todos los procesadores. incluy´ndose. solicita al procesador maestro le asigne m´s tareas. Balance de carga Distribuido. Si esta condici´n se cumple cada procesador calcula el intercambio o de tareas necesario para alcanzar una distribuci´n exacta y ejecutar los intercambios en los o cuales est´ involucrado. A continuaci´n se describe brevemente cada uno de estos algoritmos. Cuando un procesador ha procesado las tareas recibidas. en caso contrario simplemente se considera que la carga del sistema a es demasiado baja como para realizar balance. incluy´ndose el mismo. Individual. Basado en vecinos. Local. 21 . Cada vez que un procesador termina con el procesamiento de las tareas que le fueron asignadas. En ıa a e la etapa de balance. u A continuaci´n los procesadores verifican si el ´ o ındice de carga de al menos un procesador excede cierto umbral. caracterizado por el n´ mero de tareas que se encuentran pendientes por procesar. Global. o Est´tico a En este algoritmo un procesador maestro es el encargado de distribuir el conjunto inicial de tareas (datos) entre todos los procesadores. cada procesador env´ a los dem´s procesadores su ´ ıa a ındice de carga interno.

Despu´s de recibir la informaci´n de todos. la diferencia se encuentra en que el intercambio de carga ocurre unicamente entre procesadores del mismo ´ grupo. tiene como meta corregir una condici´n de o desbalance en un unico procesador. Particionado. Global. env´ mensajes a los dem´s procesadores. quienes en respuesta le o ıa a env´ su ´ ıan ındice de carga. Los grupos son definidos mediante un esquema de vecinos. Global. si esto sucede. De esta forma el balance de o carga es ejecutado al interior de cada grupo. se env´ una solicitud de transferencia al procesador m´s cargado.2. Individual Este algoritmo a diferencia de los dos anteriores. Para ello. las decisiones son tomadas por un procesador central. que no necesariamente representa la topolog´ de comunicaci´n f´ ıa o ısica y en donde un procesador puede pertenecer 22 . s´lo que ahora o se considera la partici´n de procesadores para formar grupos. Local. Global. Colectivo Este algoritmo es muy similar al algoritmo Distribuido. de ser as´ ser´ el encargado de definir los intercambios necesarios e ı a informar a cada procesador de las transferencias de tareas en las cuales est´ involucrado. a ıen despu´s de recibir la informaci´n de todos los procesadores el procesador central decide si e o el balance es necesario. Individual Esta estrategia es similar al algoritmo Distribuido. Basado en vecinos.5. env´ un mensaje ıa a los dem´s procesadores para pedirles que env´ su estado de carga al procesador central. Colectivo. ıa a Distribuido. el procesador que se e o encuentre descargado verifica si hay al menos un procesador con carga por encima del umbral. Por a ultimo cada procesador ejecutar´ las transferencias indicadas. Cuando un procesador ha concluido el procesamiento de las tareas recibidas. siempre que un procesador finaliza la ejecuci´n ´ o de las tareas que recibi´. Global. Colectivo A diferencia del algoritmo anterior. Local. Herramientas de desarrollo de aplicaciones paralelas con balance de carga Centralizado. o Distribuido. Individual. la formaci´n de los grupos est´ definida mediante o a un archivo de configuraci´n que el usuario debe crear. ´ a Distribuido.

Nuevamente la definici´n de los grupos se realiza mediante un archivo a o de configuraci´n.3. Las estrategias de balance que DDLB ofrece son: Transferencia de carga solicitada por el procesador cargado y Transferencia de carga de destino. Balance de carga a m´s de una grupo. en DDLB cada procesador tiene una lista de procesadores con los cuales se comunica. DDLB considera est´ ultima t´cnica para balancear a a´ e carga. es considerado un procesador descargado por el procesador que recibe la solicitud. o Cualquier procesador que solicite carga. Para realizar balance de carga. y la otra de nodos sobrecargados. Para resolver este inconveniente se utiliz´ el algoritmo de detecci´n de terminaci´n o o o de Dijkstra [9]. mismas que o o se distribuyen a los dem´s procesadores.2. provee una biblioteca con algoritmos que pueden ser utilizados a seg´ n las necesidades espec´ u ıficas de cada aplicaci´n. Una tabla contiene informaci´n referente a la o o localizaci´n de nodos descargados. esta estrategia requiere del uso o de un algoritmo de detecci´n de terminaci´n. esto se debe a que los procesadores no puede o o determinar si contin´ an o finalizan su ejecuci´n porque no conocen el estado de carga del u o sistema. Como se ha podido observar.5. DDLB considera como carga a los procesos que se ejecutan en un procesador. Tambi´n se considera que cada procesador maneja e dos tablas locales con informaci´n del sistema. En este sentido. SAMBA es una herramienta que pone especial ´nfasis en el e balance din´mico de carga. DDLB DDLB (Distributed Dynamic Load Balancing) [17] es un framework que ofrece dos estrategias de balance de carga en aplicaciones paralelas. el balance se puede realizar a trav´s de la mie graci´n de procesos completos o mediante la divisi´n de los procesos en tareas. El procesador descargado selecciona un procesador sobrecargado de su tabla (la primer entrada en la tabla) y env´ un mensaje solicitando la ıa 23 . o 2. Adem´s. A diferencia de otras herramientas. cada procesador maneja una cola de procesos cuya lona gitud permite conocer su ´ ındice de carga. A diferencia de los algoritmos anteriores.

4. y que adem´s incluye un algoritmo de balance de carga. la arquitectura de DDLB contempla un conjunto de procesos por procesador. solicita a todos los procesadores informaci´n de su ´ o ındice de carga. responsables de recolectar y actualizar peri´dicamente esta informaci´n o o 2. por ello la primera elecci´n es aleatoria.5. esto permite que el desarrollo de una aplicaci´n paralela se o facilite y que el tiempo requerido para ejecutar la aplicaci´n se reduzca. o o Con respecto a la actualizaci´n de la informaci´n de las tablas de nodos cargados y o o descargados. La arquitectura de DLML contempla dos procesos para cada procesador: proceso aplicaci´n y proceso distribuidor. La subasta con informaci´n global consiste en que cuando un procesador se queda o sin carga. e 24 . Herramientas de desarrollo de aplicaciones paralelas con balance de carga transferencia de carga. o o Soporte t´cnico por parte de sus autores. escogiendo al procesador con m´s carga para solicitarle le o a transfiera parte de su carga. DLML se encuentra implementada en lenguaje C y utiliza la biblioteca de paso de mensajes MPI. o El algoritmo de balance que DLML ofrece es conocido como subasta y utiliza informaci´n o global. El procesador recibe la informaci´n y la analiza. EL proceso aplicaci´n es el encargado de realizar las operaciones o o propias del problema que se pretenda resolver. Con o a DLML los detalles relacionados al manejo de datos y el mecanismo de balance carga son transparentes para los usuarios.2. Los motivos por los cuales DLML ha sido elegida como plataforma de experimentaci´n son los siguientes: o C´digo fuente y documentaci´n disponible. El proceso distribuidor ser´ el encargado de a efectuar todo lo relacionado con el balance de carga. Inicialmente la tabla se encuentra vac´ puesto que no existe inforıa maci´n referente al estado de los procesadores.5. DLML DLML (Data List Management Library) [5] es una biblioteca de programaci´n mediante o listas de datos que facilita el desarrollo de aplicaciones paralelas bajo el modelo de programaci´n por paso de mensajes.

o a su arquitectura y el algoritmo de balance de carga que incluye. 25 .2. Balance de carga Algoritmo de balance de carga con manejo de informaci´n global con el cual comparar o los resultados de los algoritmos propuestos. En el siguiente cap´ ıtulo se presenta una descripci´n m´s detallada de la biblioteca DLML.

2. Herramientas de desarrollo de aplicaciones paralelas con balance de carga 26 .5.

Las ventajas de utilizar una lista para el manejo de los datos son las siguientes: Es posible insertar o eliminar elementos en cualquier parte de la lista sin considerar un orden de inserci´n o eliminaci´n. o o Los elementos de las listas pueden ser procesados de forma simult´nea. un algoritmo de balance de carga.Cap´ ıtulo 3 DLML En este cap´ ıtulo se presenta de forma m´s detallada la herramienta DLML y el algoritmo a de balance de carga con que DLML cuenta. Introducci´n o DLML (Data List Management Library) es una biblioteca de programaci´n que facilita el o desarrollo de aplicaciones paralelas en clusters. Esta biblioteca es de gran utilidad en aplicaciones en donde los datos se pueden organizar como elementos de una lista. y que adem´s incorpora de forma transparente a para el programador. Para acceder a los elementos de una lista.1. 3. interna´ mente DLML trabaja con varias listas que se encuentran distribuidas entre los procesadores 27 . a Las listas pueden ser divididas formando sub-listas. mismas que podr´n ser repartidas a conservando las propiedades de la lista original. DLML utiliza funciones t´ ıpicas tales como get() e insert(). Aunque aparentemente los datos se encuentran organizados en una unica lista.

1. Algoritmo de balance de carga de un cluster. W y R (c´ ırculos). De esta forma los datos del sistema son redistribuidos entre los procesadores hasta que no haya m´s datos que procesar.1. La ejecuci´n de este algoritmo inicia cuando la lista local de un procesador o se queda vac´ En este punto el procesador con la lista local vac´ solicita a los dem´s ıa. a lista local remota no vac´ localizada en un procesador Y. esto significa que cada procesador del cluster tiene su propia lista con sus propios datos. Algoritmo de balance de carga Para mejorar los tiempos de respuesta.1.a el procesador X termina el procesamiento de los datos en su lista local cuya longitud es 0. El n´ mero que aparece dentro de cada c´ u ırculo representa el ´ ındice de carga del procesador. debido a que para poder realizar esta elecci´n o se requiere conocer el ´ ındice de carga de todos los procesadores. en este caso el procesador Y con 200 elementos a en su lista. Cuando los procesadores responden (Figura 3. Una vez elegido al procesador m´s cargado. DLML incluye un algoritmo de balance de carga cuyo dise˜ o est´ basado en la pol´ n a ıtica de subasta [22]. se dice que este algoritmo maneja informaci´n global.3. Posteriormente se env´ un mensaje a Y para solicitar que le transfiera parte de ıa 28 . ıa. o a o En la Figura se considera un sistema con cinco procesadores X. El algoritmo consiste en ofrecer poder de c´mputo por parte de un procesador al resto de o los procesadores.2. a estas listas les ll´mamos listas locales. En la siguiente secci´n se describe a o el algoritmo de balance de carga de DLML. Y. Una explicaci´n gr´fica de la ejecuci´n de este algoritmo se muestra en la Figura 3. Cuando un lista local en un a procesador X no tiene m´s elementos (lista local vac´ DLML obtiene m´s datos de una a ıa).b). mediante la ejecuci´n del algoritmo ıa o de balance de carga subasta. u Eventualmente el procesador recibe la informaci´n solicitada y la analiza con el fin de elegir o al procesador cuyo ´ ındice de carga sea mayor. 3.2. bajo est´ condici´n inicia el algoritmo enviando un mensaje a todos a o los procesadores solicitando su ´ ındice de carga. En efecto. S. En la Figura 3. X identifica al procesador m´s cargado. el siguiente paso es o a solicitarle parte de su carga. a procesadores su ´ ındice de carga (n´ mero de elementos en la lista local de cada procesador).

2). En cuanto a la pol´ ıtica de transferencia. la distribuci´n de carga o es iniciada al momento en que un procesador se queda sin carga.1: Algoritmo de subasta global en DLML Una condici´n posible en la ejecuci´n del algoritmo es cuando los ´ o o ındices de carga de los procesadores son 0.1. a W 183 Y 200 W 183 Y 200 índice? índice? 183 200 S 85 índice? índice? 39 R S 85 85 39 39 R X 0 a) X 0 b) W 183 Y 200 W 183 Y 100 S dame datos 85 39 R S 85 39 R X 0 c) X 100 d) Figura 3. Finalmente Y responde enviando la mitad de su lista. En la figura los pasos a y b son iguales a los de la Figura o 3. en este caso X env´ un mensaje de terminaci´n a todos los ıa o procesos DLML para indicarles que pueden finalizar su ejecuci´n.c). as´ el proceso ı X y Y tendr´n en sus listas 100 elementos (Figura 3. la diferencia se presenta en que los ´ ındices de carga ahora son 0 y ning´ n procesador es u elegible para solicitarle carga.1. DLML su carga (Figura 3.1.d). o Las pol´ ıticas de balance en este algoritmo son consideradas de la siguiente manera: la pol´ ıtica de localizaci´n se basa en la pol´ o ıtica de informaci´n. en donde la informaci´n utilizada o o es obtenida globalmente.3. Esto significa que no hay m´s carga en el sistema y que es posible a finalizar la ejecuci´n (Figura 3. respecto a qui´n inicia la e 29 .

as´ puede ser uno o varios elementos de la lista. son todos los procesadores (control distribuido).2.3. Para que una aplicaci´n paralela desarrollada con DLML maneje los datos a trav´s de o e listas y que utilice el algoritmo de balance de carga aqu´ descrito. esta forma se evita que los datos se transfieran de un procesador a otro sin ser procesados. y cu´ntos datos o a transferir. depende del n´ mero de solicitudes. lo que se considerada carga son los elementos de las listas (datos). Algoritmo de balance de carga W Y W Y 0 0 0 0 índice? índice? 0 0 S 0 índice? índice? 0 R S 0 0 0 0 R X 0 a) W Y X 0 b) 0 0 termina termina S 0 termina termina 0 R X 0 a) Figura 3. Finalmente en la pol´ o ıtica de selecci´n. 30 .2: Algoritmo de subasta global en DLML con terminaci´n o distribuci´n. u ı con la unica restricci´n de que la lista del procesador que transfiere datos no quede vac´ de ´ o ıa. se considera la siguiente ı arquitectura.

Aplicación Lista local Aplicación Variable compartida Transferencia de datos Balance de carga Balanceador Balanceador procesador 0 procesador 1 Figura 3.3. El proceso Aplicaci´n es el o o encargado de ejecutar el c´digo escrito por el programador para la soluci´n de un problema o o particular. o o Con la llamada a la funci´n Get. un proceso Aplicaci´n puede obtener un elemento de o o su lista.3. un proceso llamado Aplicaci´n y otro proceso llamado Balanceador (Figura 3. cuando la lista est´ vac´ el proceso Aplicaci´n env´ un mensaje a ıa o ıa al proceso Balanceador para indicarle que debe obtener m´s datos que se encuentran en a otros procesadores. DLML 3. el proceso Aplicaci´n permanece en espera de un o mensaje de respuesta del proceso Balanceador. A partir de este punto. y de las llamadas a las funciones b´sicas de listas. Arquitectura de DLML La arquitectura de DLML consta de dos procesos por cada procesador. sin embargo. El proceso Balanceador por su a parte se encarga de comunicarse con sus contrapartes (procesos balanceadores) localizados en otros procesadores cuando la pol´ ıtica de balance requiera ejecutarse.3: Arquitectura DLML Los procesos Aplicaci´n pueden comunicarse con su respectivo proceso Balanceador para o intercambiar informaci´n referente a la sincronizaci´n o transferencia de datos. 31 .3).

ante esta situaci´n es necesario definir una o estrategia de terminaci´n.4.4. de esta forma el proceso Aplicaci´n detiene el o procesamiento de los datos y transfiere los datos al Balanceador. e o A continuaci´n se describe la forma en que se realiza la programaci´n de una aplicaci´n o o o con listas de datos en DLML. DLML sigue el modelo de proo a 32 . Cuando el proceso Balanceador encargado de recolectar los resultados o parciales conoce el resultado global. 3. Para ello uno de los procesos Balanceador es el encargado de recolectar estos resultados. En este e caso.3. o Cuando un proceso Balanceador recibe una solicitud de transferencia de carga. Programaci´n con listas de datos en DLML o El mensaje de respuesta puede tener dos posibilidades: transferencia de los datos solicitados por el Balanceador y solicitud de terminaci´n. modifica el valor de una variable booleana compartida con su proceso Aplicaci´n (1 indica que o hay peticiones de transferencia de carga ). Programaci´n con listas de datos en DLML o La programaci´n de una aplicaci´n paralela con listas de datos en DLML es similar a o o la programaci´n secuencial. La primera posibilidad se presenta o despu´s de que el Balanceador ha ejecutado el balance y ha podido obtener datos. La estrategia de terminaci´n se ejecuta cuando se ha descubierto que las listas remotas o no tienen m´s elementos. el resto unicamente le env´ su resultado parcial y posteriormente ´ ıan finalizan su ejecuci´n. En esta parte es necesario recolectar los o a o resultados parciales que se encuentran distribuidos en cada procesador. La segunda posibiliıa o dad se presenta despu´s de ejecutar el balance y no obtener datos (esto indica que las listas e de las otras aplicaciones tambi´n est´n vac´ e a ıas). con la finalidad de conocer el resultado global. el Balanceador env´ un mensaje a su proceso a o ıa Aplicaci´n indic´ndole que finalice su ejecuci´n. bajo esta condici´n. El c´digo que se muestra a continuaci´n es un programa simple o o o que representa el modelo de programaci´n b´sico de DLML. el Balanceador env´ los datos obtenidos al proceso Aplicaci´n. Posteriormente el proceso Balanceador regresa los datos que no se hayan transferido al proceso Aplicaci´n y cambia el o valor de la variable compartida a 0. tambi´n finaliza su ejecuci´n.

1 ´ o ındica que la funci´n fue exitosa y 0 que no hay m´s datos en el sistema. &L). El tipo de retorno de la funci´n es booleano. un proceso Aplicaci´n puede insertar algunos elementos en su lista o L. 4. 1. sin considerar alg´ n orden y de forma simult´nea. en el cual la funci´n DLML Get o es invocada sucesivamente. insertar eliminar Procesadores Figura 3. Dependiendo del tipo de o a aplicaci´n y como consecuencia del procesamiento de un elemento (L´ o ınea 3). Al inicio (L´ ınea 1). 2. A trav´s de esta funci´n es posible obtener elementos de la lista e o de datos L para ser procesados. De esta forma cada procesador puede obtener y agregar elementos como si se tratar´ de una unica lista.3. es posible que nuevos elementos tengan que ser agregados a la lista L. a ´ L A B C D E processing(item. Multiple Data) [23]. es necesario definir un bucle principal. initialize(&L). } 5. Posteriormente. o a ´ u a 33 . item) ) { 3.4: Lista de datos en un ambiente paralelo En la Figura 3. while ( DLML_Get(&L. DLML gramaci´n SPMD (Single Program. de esta forma el c´digo es copiado o o y ejecutado en cada procesador que forma parte del cluster. final_protocol().4 varios procesadores pueden ejecutar operaciones de inserci´n y eliminao ci´n como si se tratar´ de una unica lista.

3. debido a la necesidad de una estrategia de terminaci´n en la cual se pueda ´ o conocer el resultado global. Interfaz de programaci´n de DLML o La interfaz actual de DLML est´ integrada por un conjunto de funciones que han sido a clasificadas en funciones de se˜ alizaci´n. n o o o Se˜alizaci´n n o Las funciones de se˜ alizaci´n permiten se˜ alizar o marcar los l´ n o n ımites del ´mbito de DLML. los organice en o una lista y maneje con las funciones definidas en la biblioteca DLML. a as´ como implementar mecanismos de control entre procesos (acceso a secci´n cr´ ı o ıtica). DLML Only Esta funci´n permite que un solo proo cesador ejecute las instrucciones contenidas en ´sta funci´n y se delimita por e o llaves {}. Interfaz de programaci´n de DLML o Por ultimo.3. prop´sito y sintaxis. manipulaci´n y recolecci´n. o o Funci´n o DLML Init Prop´sito o Inicializa listas de datos y las hace vac´ ıas. Tabla 3. La tabla 3. se ha implementado la funci´n final protocol. DLML Finalize Asegura el no procesamiento de la lista y devuelve el control al sistema operativo.5.5. o Bajo este modelo.1: Funciones de se˜ alizaci´n n o DLML Only One {} void DLML Finalize(void) Sintaxis void DLML Init(Lista *) 34 .1 muestra a las funciones pertenecientes a esta clasificaci´n. el desarrollo de una aplicaci´n paralela con DLML unicamente requiere o ´ que el programador identifique los datos a ser procesados en su aplicaci´n.

3.2 muestra las funciones pertenecientes a ´sta clasificaci´n. e cales de forma transparente al programador. DLML Query Realiza lo mismo que DLML Get pero el elemento no es eliminado de la lista. char DLML Query(Lista *. node) void DLML Get(Lista *. para obtener e insertar elementos respectivamente. node *) void DLML Insert(Lista *. el cual indica la longitud de lista local. El primero apunta a la lista y el segundo apunta al elemento obtenido de la lista. e o Funci´n o DLML Length Prop´sito o Devuelve un entero. La Tabla 3. DLML se encarga de insertar elementos en la lista local cuando queda vac´ suprimi´ndolos de otras listas loıa. DLML Get devuelve un valor FALSE. En caso de no existir m´s elea mentos a procesar en todo el sistema.2: Funciones de manipulaci´n o 35 . DLML Get Esta funci´n recibe como par´metro o a dos apuntadores. Sintaxis int DLML Length(void) node *) Tabla 3. en consecuencia la longitud de la lista se decrementa en uno. DLML Insert Inserta localmente un elemento del tipo node en la lista apuntada por Lista. DLML Manipulaci´n o Las funciones de manipulaci´n est´n encargadas de manejar las listas mediante funciones o a como DLML Get() y DLML Insert().

Reo cordar que DLML trabaja sobre listas distribuidas en todos los procesadores. es posible e o desarrollar aplicaciones paralelas de forma que los programadores no tengan que preocuparse por detalles propios de la sincronizaci´n y transferencia de datos entre procesos.3. o A trav´s de estas funciones como parte de la interfaz de programaci´n de DLML. El uso de informaci´n global es porque se requiere conocer el ı o ´ ındice de carga de todos los procesadores. El algoritmo o de balance que DLML ofrece implementa la pol´ ıtica de subasta y utiliza informaci´n global. o Para resolver este inconveniente. 36 . Interfaz de programaci´n de DLML o Recopilaci´n o El tipo de recopilaci´n concentra a las funciones que recuperan resultados parciales. Esta ultima caracter´ ´ ıstica del algoritmo implica que un procesador que requiere balancear carga. o Como mencion´bamos. el n´ mero de mensajes intercambiados durante el o u balance depende del n´ mero de procesadores del sistema. se comunique con todos los procesadores para obtener esta informaci´n. el n´ mero de mensajes intercambiados para balancear carga resulta ser u muy elevado. esto provoca un incrementando el tiempo necesario para balancear carga y en consecuencia el incremento del tiempo de respuesta de la aplicaci´n. Cuando el n´ mero de procesadou u res es considerable. En consecuencia. Las funciones que ayudan en esta recopilaci´n se muestran en la tabla 3. la subasta consiste en ofrecer poder de c´mputo que por decirlo a o as´ otros procesadores compran.5. por lo que en muchas ocasiones los resultados parciales se encuentran esparcidos. En el siguiente cap´ o ıtulo se presentan los algoritmos propuestos. se proponen dos algoritmos de balance que utilizan informaci´n parcial.3.

3. int DLML Average(void *fbuffer. Los resultados parciales son sumados en el procesador cero. void *dbuffer) Tabla 3. Sintaxis int DLML Exchange(void *fbuffer. void *dbuffer) DLML Reduce Max Esta funci´n realiza una reduco ci´n o env´ de todos los dao ıo tos parciales a un solo procesador (procesador cero). La funci´n deo vuelve el valor m´ximo de todos a los env´ ıos. int DLML Reduce Add(void *fbuffer. void *dbuffer) DLML Reduce Add Realiza una reducci´n o env´ de o ıo todos los datos parciales a un solo procesador (procesador cero). void *dbuffer) DLML Reduce Average Esta funci´n realiza una reduco ci´n o env´ de todos los dao ıo tos parciales a un solo procesador (procesador cero). DLML Funci´n o DLML Exchange Prop´sito o Permite intercambiar resultados entre TODOS los procesadores como parte de la recolecci´n de o resultados. int cantidad. Los resultados parciales son promediados. int DLML Max(void *fbuffer.3: Funciones de recopilaci´n o 37 .

3.5. Interfaz de programaci´n de DLML o 38 .

ıas o Debido a que las topolog´ de comunicaci´n son un factor importante en el balance de ıas o carga [21].1.b). Sin ıas u 39 . de tal forma que cuando un procesador requiera o balancear carga s´lo lo har´ con procesadores que se encuentren en su vecindad. El objetivo de manejar informaci´n parcial es reducir el o o n´ mero de mensajes y con ello reducir el tiempo de respuesta en aplicaciones paralelas que u utilizan algoritmos que manejan informaci´n global. esto significa o a que s´lo utilizar´ parte de la informaci´n del estado de carga del sistema. proponemos utilizar topolog´ de comunicaci´n l´gicas en donde los procesadores ıas o o puedan comunicarse mediante un esquema de vecinos (Figura 4. los procesadores del sistema son organizados de tal manera que un procesador s´lo puede comunicarse con o algunos procesadores.2. En este sentido.1. o a o Las topolog´ que se muestran en la Figura 4. en lugar de un esquema de comunicaci´n global (Figura 4.Cap´ ıtulo 4 Algoritmos de balance de carga con manejo de informaci´n parcial o 4. el manejo de informaci´n parcial permite reducir el n´ mero de a o u comunicaciones necesarias en la etapa de balance. Introducci´n o En este cap´ ıtulo presentamos nuestra propuesta de algoritmos para balancear carga con manejo de informaci´n parcial. o Como mencion´bamos. disminuyen el n´ mero de mensajes.1. para ello se propone el uso de topolog´ de comunicaci´n.a). esto se debe a que s´lo se requiere conocer o el ´ ındice de carga de algunos procesadores y no de todos.

Introducci´n o 0 0 1 2 3 5 7 4 5 6 4 8 3 a) Topología de comunicación con esquema de vecinos b) Topología de comunicación global 1 2 Figura 4.1: Topolog´ de comunicaci´n con esquema de vecinos y global ıas o embargo. o Otro caso m´s se presenta en la recolecci´n de resultados. Cuando se maneja informaci´n parcial esta estrategia no es posible debido a que los o procesadores s´lo se comunican con sus vecinos.1.4. Por ejemplo. algunas etapas relativamente sencillas cuando se utiliza comunicaci´n global. pero en el caso de los algoritmos con comunicaci´n con esquema o de vecinos esto es m´s complicado debido a que un procesador s´lo conoce el estado de carga a o de sus vecinos. basta con especificar o que procesador ser´ el encargado de recolectar los resultados para al final tener el resultado a global. por este motivo es necesario especificar cu´l o a ser´ la estrategia para recolectar los resultados parciales y as´ conocer el resultado global. a ı En base a lo anterior. debido a que cada procesador a o ha consumido una parte de la carga total del sistema. el determinar el momento en el cu´l a se puede dar por terminada la ejecuci´n de la aplicaci´n. con el o uso de un esquema de vecinos se complican. para conocer el resultado global es necesario recolectar todos estos resultados. porque todos los procesadores conocen el o o estado de carga del sistema. el dise˜ o de los algoritmos se realiz´ considerando las siguiente n o 40 . Con los algoritmos que manejan o o comunicaci´n global la terminaci´n es sencilla. cada procesador tiene sus propios resultados (resultados parciales). Cuando los algoritmos manejan informaci´n global. por ello no puede tomar la decisi´n de terminar su ejecuci´n bas´ndose en o o a esta informaci´n.

B´ squeda de una vista global de carga. Algoritmos de balance de carga con manejo de informaci´n parcial o 0 3 6 1 4 7 a) 2 5 8 3 1 4 0 2 5 b) 6 Figura 4. o Balance de carga. o 41 . o Inicializaci´n o En esta etapa se especifica las tareas y la forma en que los procesadores inician su ejecuci´n. A diferencia del algoritmo de DLML.2: Topolog´ l´gicas de comunicaci´n toroide (a) y ´rbol binario (b) ıas o o a etapas: Inicializaci´n. o Balance de carga La etapa de balance de carga permite a un procesador obtener carga de otros procesadores. u Terminaci´n. la subasta s´lo es ejecutada con los procesadores vecinos. La estrategia de balance utilizada es la de subasta.4.

en donde la paternidad de un procesador sobre otro dentro del ´rbol queda determinada por a la forma en que el mensaje es propagado. Si consideramos la topolog´ ıa de comunicaci´n de la Figura 4. La terminaci´n se presenta cuando los procesadores han terminado de reexpedir el o mensaje a todos sus vecinos.4. el protocolo PI funciona de la e u siguiente manera: Un procesador s es el encargado de propagar un mensaje a los procesadores con los cuales puede comunicarse (vecinos). quien ıa a inicio con la propagaci´n. Al inicio. o Aunque es evidente que el mensaje ser´ propagado a todos los procesos sin importar la a topolog´ de comunicaci´n. el cual indica el orden en el que se env´ el mensaje. si de este ha recibido el mensaje por primera vez. Este proceso contin´ a hasta que el mensaje es recibido por el procesador 3.3. u que de acuerdo con la topolog´ de la Figura 4. El protocolo PIF es una mejora al protocolo PI (Propagation of Information) [19] que permite realizar la propagaci´n de un mensaje en o un sistema distribuido a trav´s de una b´ squeda en amplitud.1a. Para resolver este problema se ha utilizado el protocolo PIF o (Propagation of Information with Feedback) [19]. el procesador 0 propaga un mensaje con etiqueta 1. Cada procesador i que reciba el mensaje por primera vez reexpide el mensaje a todos sus procesadores vecinos. lo reexpiden ıa con etiqueta 2. de tal manera que un proceso i s´lo puede ser o hijo de s. una posible secuencia de la propagaci´n del mensajes se o o muestra en la Figura 4.1. 2 y 5 ). incluyendo al procesador s de quien recibi´ el mensaje por o primera vez. con este protocolo el proceso s desconoce si la propagaci´n del ıa o o 42 .3 es el m´s distante del procesador 0. Introducci´n o B´squeda de una vista global de carga u Saber cu´ndo un procesador debe dar por terminada su ejecuci´n se complica con el a o manejo de informaci´n parcial. En seguida los procesos que lo reciben (1. Una de las propiedades de este protocolo es la generaci´n de un ´rbol de peso m´ o a ınimo.

una posible ıa o secuencia de la propagaci´n del mensaje con el protocolo PIF se muestra en la Figura 4. la etapa de retroo o 43 . o Nuevamente si consideramos la topolog´ de comunicaci´n de la Figura 4.4.4. Cada procesador que reside en una hoja del ´rbol termina por recibir el mensaje propagado de todos sus vecinos. cuando han recibido los acuses esperados devuelven esta misma confirmaci´n a su padre. y a´ n cuando se garantizar´ confiabilidad en las comunicaciones para u a asegurar que la propagaci´n finalice. Para resolver o a este inconveniente el protocolo PIF incorpora una etapa de retroalimentaci´n que en este o trabajo es utilizada para conocer si en el sistema a´ n hay carga que procesar. no conocer´ el momento en que finaliza. Algoritmos de balance de carga con manejo de informaci´n parcial o 0 1 2 2 1 1 2 2 3 2 3 5 3 4 5 4 3 2 3 4 3 4 3 1 6 4 2 7 8 Figura 4. esperan a recibir a el acuse tantas veces como hijos tengan. ´ ıa Todos aquellos procesos que. Como se mencion´ anteriormente. dentro del ´rbol formado tengan hijos.a. o Con esta mejora el procesador s que inici´ el protocolo puede saber cu´ndo se ha como a pletado la propagaci´n del mensaje. el protocolo u PIF es como sigue: Un procesador s es el encargado de enviar un mensaje a los procesadores vecinos.1.3: Secuencia de propagaci´n de mensajes con el protocolo PI o mensaje ha finalizado. Cada procesador i que reciba el mensaje por primera vez. excepto al procesador s de quien lo recibe. reexpide el mensaje sus vecinos. despu´s a e de recibir el ultimo mensaje env´ un mensaje a manera de acuse a su padre.

o 44 .4: Secuencia de propagaci´n de mensajes con el protocolo PIF o alimentaci´n que consiste en enviar mensajes de acuse es aprovechada por cada procesador o para enviar su estado de carga. Los procesadores que reciban mensajes de acuse adem´s de a enviar su estado de carga a su padre. para ello basta con ejecutar a a o una vez m´s el protocolo PIF. tambi´n conoce cuanta a o e carga hay en el sistema.4. De esta forma al final el e ıan procesador s adem´s de conocer cuando ha terminado la propagaci´n. Introducci´n o 4 5 6 7 2 6 3 5 3 Propagación Retroalimentación 3 0 1 8 2 1 1 4 2 3 2 3 5 7 4 6 4 1 2 8 Figura 4. o o Terminaci´n o Despu´s de que el procesador s sabe que es posible dar por terminada la ejecuci´n. con esto ahora es posible saber si se puede dar por terminada la ejecuci´n de la aplicaci´n. Eventualmente s o ıen ser´ quien reciba los resultados de todos los procesadores conociendo as´ el resultado global. La etapa de propagaci´n sirve para avisar de la finalizaci´n y la a o o etapa de retroalimentaci´n para que los procesadores env´ sus resultados. A continuaci´n se presenta el algoritmo Toroide. a ı El dise˜ o de los algoritmos que proponemos est´ basado en las etapas que se acaban de n a describir. e o necesitar´ dar a conocer a los dem´s procesadores esta condici´n.1. tambi´n env´ la de sus hijos.

2.a es el procesador con ıa identificador 0).1. u 4. Algoritmo toroide El algoritmo consiste en balancear carga entre procesos que se encuentran conectados siguiendo la topolog´ de comunicaci´n l´gica conocida como toroide (Figura 4. A continuaci´n se muestra el pseudoc´digo correspondiente a o o esta etapa.a). Etapa de inicializaci´n o Como se mencion´ anteriormente. estos e o aparecen en may´ sculas.2. o balance iniciado: permite saber cuando un procesador ha iniciado la etapa de balance. En el caso de los mensajes. o o etc. Las variables que se utilizan en el pseudoc´digo de esta etapa son las siguientes: o vecinos: almacena los identificadores de los procesadores vecinos con los que un procesador mantiene comunicaci´n. <1> al estar descargado y balance_iniciado = 0 efect´a u <2> env´a REQ_INFO_CARGA a todo k en vecinos ı <3> balance_iniciado <. Esta toıa o o polog´ tiene como caracter´ ıa ıstica que cada procesador est´ conectado con cuatro procesadores a vecinos.4. en esta etapa se especifica qu´ procesador es el que o e inicia con toda la carga (en el caso de la topolog´ de la Figura 4.2. 45 . b´ squeda o o u de una vista global de carga y terminaci´n. En el pseudoc´digo se utilizan variables y o o mensajes de los cuales tambi´n se presenta su descripci´n.1 En el pseudoc´digo se utilizan variables cuyo prop´sito fundamental es el de mantener el o o estado de ejecuci´n del algoritmo e informaci´n tal como el conjunto de procesadores vecinos. Algoritmos de balance de carga con manejo de informaci´n parcial o 4.2. El resto de los procesadores se encuentran sin carga por lo que inician con la etapa de balance de carga. balance de carga. Para cada etapa se describe su funcionamiento o y se presenta el pseudoc´digo correspondiente. A continuaci´n se describen las etapas de inicializaci´n.

Algoritmo toroide Cuando su valor es 0. el procesador no ha iniciado la etapa de balance. en donde el n´ mero de mensajes depende del n´ mero de procesadores vecinos (independientemente del u u n´ mero de procesadores en el sistema con la topolog´ toroide un procesador siempre tiene u ıa 4 vecinos). este es el inicio de la etapa de balance de carga. env´ este menıa saje a sus vecinos para solicitar que le env´ su ´ ıen ındice de carga. Adem´s de utilizar variables. En esta etapa s´lo se utiliza el siguiente mensaje: o REQ INFO CARGA: Un procesador al pasar a su estado descargado. 5. se encuentra en la cantidad de mensajes requeridos en su ejecuci´n. cuando el procesador 4 se queda sin carga.5. tambi´n es necesario el uso de mensajes para que los proa e cesadores se comuniquen. env´ un mensaje a sus ıa vecinos (1.b). elige al procesador vecino m´s cargado para a solicitar que le transfiera parte de su carga. en este caso el procesador 5 (Figura 4. Cuando el procesador recibe la solicitud de transferir carga. 4. antes verifica que la cantidad de carga que posee en ese momento sea la suficiente como para no quedarse descargado despu´s e 46 . En el caso del algortimo toroide.4. los procesadores responden enviando un mensaje con su ´ ındice de carga (Figura 4.2. Etapa de balance de carga Esta etapa es ejecutada por un procesador para obtener carga de otro procesador. 7) para solicitar su ´ ındice de carga (Figura 4. 3. donde n es el n´ mero de procesadores participantes.2. La principal diferencia entre la subasta global y en el algoritmo toroide. 1 cuando la etapa ha iniciado. Despu´s de que el procesador e ha recibido los ´ ındices de carga de sus vecinos.5.5. Es iniciada cuando un procesador se encuentra descargado y est´ basada en la misma pol´ a ıtica que utiliza el algoritmo global de DLML (subasta). ıa Partiendo del centro.2.a). de u esta forma la complejidad en mensajes es O(n2 ).c).5. o En el algoritmo global la cantidad de mensajes requeridos para que todos los procesadores ejecuten la subasta es n(2(n − 1)). Los pasos que sigue la subasta en la topolog´ toroide se muestran en la Figura 4. la complejidad es O(n).

6. 0 3 1 1 7 2 5 20 0 3 1 1 7 2 20 7 4 0 1 4 0 5 20 10 6 10 7 8 6 7 10 8 0 a) Solicitud de índice de carga b) Envío de índice de carga 0 3 1 1 7 2 5 20 0 3 1 1 7 2 10 4 0 4 0 5 10 6 7 10 8 6 10 7 8 c) Selección del procesador más cargado y solicitud de transferencia de carga d) Transferencia de carga Figura 4. De esta forma un procesador vecino que eventualmente obtenga carga de otro lugar del sistema. y los cuatro procesadores vecinos responden con 0 como ´ ındice de carga (Figura 4. env´ un mensaje indicando que se encuentra descargado. sabr´ si tiene procesadores vecia 47 .d).a). en caso contrario. en este caso el vecino a o ıa 5 (Figura 4. Algoritmos de balance de carga con manejo de informaci´n parcial o de la transferencia. Si est´ condici´n se cumple env´ parte de su carga.c) que ha ejecutado la subasta sin conseguir carga y que a partir de ese momento se va a bloquear (no obstante que se encuentra disponible para seguir procesando carga). En este caso el procesador en lugar de solicitar transferencia de carga. ıa por lo que el procesador que se encuentra en espera de carga reinicia la subasta.6. simplemente notifica a sus vecinos (Figura 4.4.b).5: Algoritmo de subasta para la topolog´ toroide ıa Una condici´n adicional en la ejecuci´n de la subasta anterior se presenta cuando el proo o cesador 4 solicita estado de carga (Figura 4.5.6.

6: Notificaci´n de disponibilidad de procesamiento o El pseudoc´digo de la etapa de balance es el siguiente: o <4> <5> al recibir REQ_INFO_CARGA desde k en vecinos efect´a u env´a RESPUESTA_INFO_CARGA a k en vecinos con el indice_carga ı <6> <7> <8> <9> <10> <11> <12> <13> <14> <15> <16> al recibir RESPUESTA_INFO_CARGA(indice_carga) de K en vecinos efect´a u respuesta_carga <. 0 3 0 1 0 2 5 0 0 3 0 1 0 2 0 0 3 0 1 0 2 5 0 0 4 0 0 4 0 5 0 4 0 0 6 7 0 8 6 7 0 8 6 7 0 8 a) Solicitud de índice de carga b) Envío de índice de carga c) Notificación de disponibilidad de procesamiento Figura 4. de ser as´ podr´ enviar un mensaje indicando que pueden ı a reanudar la subasta.4.0 determina al k en vecinos m´s cargado a si existe alg´n k en vecinos m´s cargado u a entonces env´a DAME_CARGA a k en vecinos m´s cargado ı a otro si id == s entonces si primera_busqueda == 0 entonces env´a BUSCA_CARGA(0) ı 48 .respuesta_carga + 1 guarda indice_carga de k si respuesta_carga == 4 /*Si todos han respondido*/ entonces respuesta_carga <.2. Algoritmo toroide nos que se encuentran disponibles.

0 env´a BALANCE a todo k en vecinos_descargados ı borra k en vecinos_descargados ejecuta <2> y <3> de la etapa de inicializaci´n o <35> al recibir DESCARGADO de k en vecinos efect´a u <36> guarda k en vecinos_descargados <37> al recibir BALANCE desde k en vecinos efect´a <2> y <3> u de la etapa de inicializaci´n o Las variables utilizadas son: ´ ındice carga: carga que posee un procesador.carga balance_iniciado <.0 <28> al recibir CARGA(carga) de k en vecinos efect´a u <29> <30> <31> <32> <33> <34> otro si carga > 0 entonces indice_carga <.(indice_carga .carga_enviar) env´a CARGA(carga_enviar) a k en vecinos ı env´a CARGA(0) a k en vecinos ı carga_enviar <. Algoritmos de balance de carga con manejo de informaci´n parcial o a todo k en vecinos <17> <18> <19> <20> primera_busqueda <.4.indice_carga / X si carga_enviar > 1 entonces indice_carga <. 49 .1 otro env´a BUSCA_CARGA(0) a todo k en hijos ı otro env´a DESCARGADO a todo k en vecinos ı desecha los ´ndices de carga recibidos ı <21> al recibir DAME_CARGA desde k en vecinos efect´a u <22> <23> <24> <25> <26> <27> otro carga_enviar <.

Algoritmo toroide respuesta carga: permite conocer cuantas veces ha recibido el mensaje RESPUESTA INFO CARGA (al recibir este mensaje se incrementa en 1 ) para saber si ha recibido los ´ ındices de carga de todos los vecinos. hijos: conjunto de vecinos que durante la generaci´n del ´rbol de peso m´ o a ınimo hayan confirmado paternidad. indica cuantos datos deber´n ser a transferidos. 1 despu´s de que el procesador finaliza su participaci´n en la priıa e o mer ejecuci´n de la etapa de b´ squeda global de carga y significa que en subsecuentes o u b´ squedas el protocolo PIF se deber´ ejecutar s´lo a trav´s del ´rbol de peso m´ u a o e a ınimo. carga enviar : cociente del ´ ındice de carga entre X. Los mensajes que se utilizan son: RESPUESTA INFO CARGA: Un procesador fuente env´ este mensaje con el ´ ıa ındice de carga actual.4. X : divisor. o primera busqueda: contiene 0 cuando la b´ squeda global de carga a´ n no se ha ejecuu u tado y permite ejecutar el protocolo PIF en su especificaci´n original (a trav´s de la o e topolog´ toroide). la cantidad de datos a trasferir depende de su valor. en caso de que su valor fuera 2.2. significa que se debe transferir la mitad de la carga de un procesador. s: contiene el identificador del proceso encargado de ejecutar las etapas de b´ squeda u global de carga y terminaci´n. El procesador que recibe este mensaje incrementa el n´ mero de mensajes u recibidos de este tipo y almacena la informaci´n del procesador que le haya reportado o mayor cantidad de carga. es conocida por todos los procesadores. vecinos descargados: conjunto de vecinos que han notificado disponibilidad de procesamiento. carga: datos transferidos desde otro procesador. 50 .

Algoritmos de balance de carga con manejo de informaci´n parcial o DAME CARGA: Al elegir al procesador del grupo de vecinos m´s cargado. al obtener carga de otro procesador. a Debido a que el manejo de informaci´n parcial impide a un procesador saber si en alg´ n o u procesador del sistema a´ n hay carga que procesar. 4. Si este procesador despu´s de haber ejecutado la subasta no obtiene carga. Aquellos procesadores que lo reciban podr´n realizar nuevamente etapa de balance.4. esta etapa es llamada b´ squeda de una vista u global de carga. probablemente e se debe a que no hay m´s carga que procesar en todo el sistema. env´ e ıa este mensaje a todo k en vecinos. o o 51 . se le env´ a ıa un mensaje de este tipo para solicitar la transferencia de carga. ıa DESCARGADO: En caso de que ning´ n k procesador en vecinos se encuentre cargado. el protocolo PIF permite realizar una b´squeda en amplitud en todos a u los procesadores que forman parte del sistema. Este protocolo considera dos etapas: propagaci´n y retroalimentaci´n. a Como se recordar´.2. Para resolver este inconveniente se o incluy´ una etapa en donde a trav´s de un protocolo de b´ squeda en amplitud es posible o e u conocer el estado global de carga del sistema. Etapa de b´ squeda de una vista global de carga u La responsabilidad de iniciar esta etapa es asignada al primer procesador que tuvo carga. BALANCE : Un procesador env´ este mensaje a todos los procesadores que se encuenıa tran en vecinos descargados. u despu´s de haber recibido los mensajes RESPUESTA INFO CARGA esperados. pero si hay m´s carga ser´ un error.3. se utiliza el protocolo PIF. si es as´ puede iniciar la a ı etapa de terminaci´n. CARGA: Un procesador env´ este mensaje para transferir parte de su carga. Para saber con certeza si hay. almacenan el identificador del procesador para saber que procesadores vecinos han intentado obtener carga y actualmente se encuentran descargados. o o a ıa no hay m´s carga en el sistema. no puede determinar cu´ndo es el mou a mento adecuado de pasar a la etapa de terminaci´n. Los procesadores que reciban este mensaje.

Esta etapa se realiza hasta que el mensaje haya sido propagado a todos los procesadores.7. excepto a aquel de quien lo reciben por primera vez.c). 2. entonces env´ el mensaje de confirmaci´n al proıa o cesador de quien recibi´ el mensaje por primera vez (mensaje de confirmaci´n al procesador o o padre). Los procesadores que reciban todos ıa 52 . es la generaci´n de un ´rbol de peso m´ o a ınimo [19] (a tiempo de ejecuci´n) en donde o el procesador 0 es la ra´ del ´rbol (Figura 4. 3 y 6) (Figura 4. Una de las propiedades de este protocolo. Los procesadores al recibir por ıa primera vez el mensaje. a quien consideran su padre (Figura 4.d). la etapa de propagaci´n es iniciada por el procesador 0 quien ıa o env´ un mensaje a sus vecinos (1.b). ız a La etapa de retroalimentaci´n inicia cuando un procesador hoja (un procesador es hoja o dentro del ´rbol formado si no tiene hijos).7. Algoritmo toroide 0 3 6 1 4 7 2 5 8 0 3 6 1 4 7 b) Propagación 2 5 8 0 3 6 1 4 7 2 5 8 a) Inicia fase de propagación c) Fin de propagación y generación de árbol de peso mínimo 0 3 6 1 4 7 2 5 8 0 3 6 1 4 7 2 5 8 Propagación de mensaje Paternidad establecida d) Inicia fase de retroalimentación e) Termina de fase de retroalimentación Figura 4.a). ha recibido el mensaje propagado tantas veces a como vecinos tenga (en este caso cuatro). lo reexpiden a sus vecinos.7.4.7. en el cual env´ su estado de carga (Figura 4.2.7: Ejecuci´n del algoritmo PIF en la topolog´ toroide o ıa En la topolog´ toroide.

carga_encontrada + indice_carga mesajes_busca_carga <. de esta forma o todo procesador que reciba este tipo de mensajes sabr´ cu´ntos y qui´nes son sus hijos. plemente iniciar´ nuevamente el protocolo de subasta.0 53 . Sin embargo. Notar que si las subsecuentes o ejecuciones del protocolo PIF se realizan siguiendo el ´rbol formado. 2.9) formado en la primer ejecuci´n.mesajes_busca_carga + 1 si id == s entonces si mensajes_busca_carga == # hijos entonces mensajes_busca_carga <. el costo en mensajes se a reduce al ocupar los enlaces que forman el ´rbol. Algoritmos de balance de carga con manejo de informaci´n parcial o los mensajes de confirmaci´n de sus hijos. env´ su mensaje de confirmaci´n a su padre. o ıan o enviando su estado de carga m´s el de su(s) hijo(s).a). en la especificaci´n del protocolo original un procesador conoce qui´n o e es su padre. o El pseudoc´digo es el siguiente: o <38> al recibir BUSCA_CARGA(indice_carga) de k en vecinos efect´a u <39> <40> <41> <42> <43> carga_encontrada <. en caso contrario iniciar´ la etapa de a a terminaci´n. o Como se menciona anteriormente. 3 y u o 6) en donde se env´ el estado de carga de todo el sistema (Figura 4.b). e Para poder resolver este inconveniente se incluye un mensaje adicional al protocolo PIF original. en vez de todos los enlaces de la topolog´ a ıa.8.4. Con la informaci´n ıa o recibida puede determinar si en el sistema a´ n existe carga.7.e). Para poder utilizar el ´rbol es necesario que un procesador conozca qui´n es su padre y a e sus hijos. Eventualmente el procesador que inici´ la a o etapa de b´ squeda (procesador 0) recibe los mensajes de confirmaci´n de sus hijos (1. justo despu´s ıa o e de que un procesador recibe por primera vez el mensaje propagado env´ un mensaje que ıa llamaremos confirmaci´n de paternidad a su procesador padre (Figura 4.8. pero no conoce qui´nes son sus hijos. de ser as´ este procesador simu ı. Este mensaje se env´ en la etapa de propagaci´n (Figura 4. Con a a e esta informaci´n en futuras ejecuciones de la b´ squeda global de carga se podr´ utilizar el o u a ´rbol de peso m´ a ınimo (Figura 4. el protocolo PIF tiene como una de sus propiedades la generaci´n de un ´rbol de peso m´ o a ınimo a tiempo de ejecuci´n.

0 si primera_busqueda == 0 /*busca carga por primera vez*/ entonces si mensajes_busca_carga == 1 entonces env´a ERES_MI_PADRE a k en vecinos ı padre <.4. generación de árbol de peso mínimo.2. y notificación de paternidad 0 3 6 1 4 7 2 5 8 0 3 6 1 4 7 2 5 8 Propagación de mensaje Paternidad establecida Notificación de paternidad d) Inicia fase de retroalimentación e) Termina fase de retroalimentación Figura 4.0 54 .k reexpide BUSCA_CARGA(indice_carga) a vecinos excepto k <53> <54> si mensajes_busca_carga == 4 entonces mensajes_busca_carga <. Algoritmo toroide 0 3 6 1 4 7 2 5 8 0 3 6 1 4 7 2 5 8 0 3 6 1 4 7 2 5 8 a) Inicia fase de propagación b) Propagación y notificación de paternidad al procesador 0 c) Fin de propagación.8: Ejecuci´n del algoritmo PIF modificado o <44> <45> <46> <47> <48> <49> <50> <51> <52> otro si carga_encontrada == 0 entonces env´a TERMINA a todo k en hijos ı otro ejecuta <2> y <3> carga_encontrada <.

9: Arbol formado en tiempo de ejecuci´n del protocolo PIF o <55> <56> primera_busqueda <.0 55 .0 env´a BUSCA_CARGA(indice_carga) ı a padre <63> <64> <65> <66> <67> /*asciende*/ si # hijos > 0 carga_encontrada <.0 otro si mensajes_busca_carga == 1 /*busca carga sobre ´rbol*/ a entonces si # hijos > 0 entonces reexpide BUSCA_CARGA(indice_carga) a hijos <61> <62> /*Es hoja.0 env´a ı BUSCA_CARGA(carga_encontrada) a padre <68> <69> carga_encontrada <. asciende*/ otro mensajes_busca_carga <.4. Algoritmos de balance de carga con manejo de informaci´n parcial o 0 3 6 1 4 7 2 5 8 4 1 5 2 0 3 8 6 7 ´ Figura 4.1 env´a BUSCA_CARGA(carga_encontrada) ı a padre <57> <58> <59> <60> /*desciende*/ carga_encontrada <.0 entonces si mensajes_busca_carga == (# hijos + 1) entonces mensajes_busca_carga <.

En subsecuentes ejecuciones de la b´ squeda u cuando mensajes busca carga = # hijos. se determina que no hay m´s carga e u a que procesar. En esta etapa se presentan los siguientes mensajes: BUSCA CARGA: El procesador s env´ este mensaje despu´s de haber ejecutado la ıa e etapa de balance y no haber encontrado alg´ n k procesador en vecinos con carga. Algoritmo toroide <70> al recibir ERES_MI_PADRE de k en vecinos agrega k a hijos Las variables que se presentan en esta etapa son las siguientes: carga encontrada: suma de los ´ ındices de carga recibidos en la etapa de b´ squeda de u carga m´s el ´ a ındice de carga del procesador que la mantiene. u a Si despu´s de la b´ squeda de una vista global de carga. padre: contiene el identificador del procesador al cual durante la generaci´n del ´rbol o a de peso m´ ınimo se notific´ paternidad. o o 56 . el mismo procesador que ha iniciado la etapa de b´ squeda. 0 indica que el mensaje recibido deber´ ser reexpedido el momento de a recibirlo. u ERES MI PADRE : Es mensaje es enviado al k procesador en vecinos de quien recibe por primera vez el mensaje BUSCA CARGA en la primer ejecuci´n de la etapa de o b´ squeda. o mensajes busca carga: permite conocer cu´ntas veces se ha recibido el mensaje BUSa CA CARGA. con ello le notifica que lo reconocer´ como padre. Toma valor de 4 s´lo en la pria o mer ejecuci´n de la b´ squeda. e indica que se han recibido los mensajes esperados (de o u sus vecinos) y se debe confirmar a padre. mayor a 0 el mensaje no se deber´ reexpedir.2. ser´ el encargado u a de iniciar la etapa de terminaci´n que a continuaci´n se describe. Con u este mensaje inicia la etapa de b´ squeda de una vista global de carga. significa que se debe hacer la confirmaci´n a o padre.4.

4. Aquellos procesadores que tengan o hijos. o o o <71> al recibir TERMINA de padre efect´a u <72> <73> <74> <75> si # hijos > 0 entonces reexpide TERMINA a todo k en hijos otro env´a RESULTADO(resultado_parcial) a padre ı termina <76> al recibir RESULTADO (resultado) de k en hijos efect´a u <77> <78> <79> <80> <81> <82> <83> otro resultados_recibidos <.resultado_acumulado + resultado si resultados_recibidos == # hijos entonces si id == s entonces imprime (resultado_acumulado + resultado_parcial) termina resultado_acumulado <(resultado_acumulado + resultado_parcial) <84> env´a RESULTADO(resultado_acumulado) a padre ı 57 . y posteriormente finalizan su ejecuci´n. De esta forma los resultados de cada procesador remontan el ´rbol o a hasta llegar al procesador ra´ el cual conoce el resultado global. El a mensaje empieza a propagarse hasta llegar a aquellos procesadores que dentro del ´rbol sean a hojas. esperan a recibir los resultados parciales correspondientes.2.4. posteriormente ıan a finalizan su ejecuci´n. A continuaci´n se presenta el pseudoc´digo. Es importante mencionar que ız el utilizar el ´rbol facilita la recolecci´n de resultados. env´ a sus correspondientes padres sus resultados m´s los de sus hijos. Para ello se propaga un mensaje a todos o los procesadores a trav´s del ´rbol de peso m´ e a ınimo. cuando los hayan recibido. Algoritmos de balance de carga con manejo de informaci´n parcial o 4. y posteriormente finalizar su ejecuci´n. para notificarles que no hay m´s carga. Cuando los procesadores hojas reciben el mensaje env´ sus resultados parciales a su ıan procesador padre.(resultados_recibidos + 1) resultado_acumulado <. en otro caso ser´ necesario especificar a o ıa una estrategia particular para la recolecci´n. Etapa de terminaci´n o En esta etapa se notifica a los procesadores que pueden iniciar con la recolecci´n de o resultados.

resultado acumulado: suma de los datos parciales recibidos. De acuerdo a la topolog´ un procesador puede tener uno. Algoritmo ´rbol binario a <85> termina Los variables que se presentan en esta etapa son las siguientes: resultado parcial : contiene el resultado de los datos procesados. con este mensaje inicia la etapa de terminaci´n. utilizando informaci´n parcial eno tre procesadores que se encuentran conectados mediante una topolog´ de comunicaci´n de ıa o ´rbol binario. En el caso de los procesadores intermedios 1 y 2 (Figura 4.a). Algoritmo ´rbol binario a Este algoritmo consiste en realizar balance de carga. Los procesadores que o o reciban el mensaje lo reexpiden a todo procesador k en el grupo de procesadores hijos. o ıa a 4. Los mensajes que se presentan en esta etapa son: TERMINA: El procesador s env´ este mensaje despu´s de haber ejecutado el protoıa e colo para buscar carga en el sistema. El mensaje indica a un procesador que se debe iniciar la recolecci´n de resultados y posteriormente termina la ejecuci´n. resultados recibidos: permite conocer cuantas veces se ha recibido el mensaje RESULTADO con los resultados parciales de los procesadores en hijos. En este e mensaje se env´ sus resultados parciales m´s los de sus hijos si es el caso.3. ıan a En la siguiente secci´n se presenta el algoritmo para la topolog´ de ´rbol binario. tienen 58 .b).3.10. el procesador 0 tiene ız dos vecinos (1 y 2). Por ejemplo. y tener la certeza de que no hay carga en alg´ n u procesador del sistema. ıa o RESULTADO: Un procesador env´ este mensaje despu´s de haber recibido los datos ıa e parciales los procesadores en hijos o despu´s de recibir termina y hijos = ∅.4. en el caso de la ra´ (Figura 4. dos o hasta tres a ıa procesadores vecinos. de lo contrario env´ RESULTADO.10.

3 . Al igual que en el algoritmo toroide. 6 respectivamente.c).b es el procesador con identificador 0).10.10: Configuraci´n de comunicaci´n de la topolog´ de ´rbol binario o o ıa a 4.3. 5.2. A continuaci´n o se muestra el pseudoc´digo correspondiente a esta etapa. para este algoritmo tambi´n e se consideran cuatro etapas.4 y 0. El resto de los procesadores ıa se encuentran sin carga por lo que inician con la etapa de balance de carga. El pseudoc´digo de esta etapa es o o el siguiente: <1> <2> <3> al estar descargado y balance_iniciado = 0 efect´a u env´a REQ_INFO_CARGA a todo k en vecinos ı balance_iniciado <. o 0 1 3 0 1 3 4 b) 2 4 a) 5 6 0 2 5 6 3 1 4 c) 2 5 6 Figura 4.1.1 59 . Etapa de inicializaci´n o En esta etapa se especifica que procesador es el que inicia con toda la carga (en el caso de la topolog´ de la Figura 4. A continuaci´n se presenta cada una de ellas.4. Finalmente los procesadores hoja s´lo tienen o un vecino (Figura 4. Algoritmos de balance de carga con manejo de informaci´n parcial o tres vecinos 0.

respuesta_carga + 1 guarda indice_carga de k si respuesta_carga == # vecinos entonces respuesta_carga <. o o <4> <5> al recibir REQ_INFO_CARGA desde k en vecinos efect´a u env´a RESPUESTA_INFO_CARGA a k en vecinos con el indice_carga ı <6> <7> <8> <9> <10> <11> <12> <13> <14> <15> <16> <17> al recibir RESPUESTA_INFO_CARGA(indice_carga) de todo k en vecinos efect´a u respuesta_carga <.(indice_carga .0 determina al k en vecinos m´s cargado a si existe alg´n k en vecinos m´s cargado u a entonces env´a DAME_CARGA a k en vecinos m´s cargado ı a otro si id == raiz_arbol entonces env´a BUSCA_CARGA(0) a todo k en ramas ı otro env´a DESCARGADO a todo k en vecinos ı desecha los ´ndices de carga recibidos ı <18> al recibir DAME_CARGA desde k en vecinos efect´a u <19> <20> <21> carga_enviar <. a a o y otras con tres procesadores dependiendo del procesador que la inicia. El caso particular del procesador ra´ es el unico que puede balancear carga con dos procesadores vecinos.3.carga_enviar) 60 . con la diferencia que el n´ mero de vecinos involucrados en el balance u var´ Con el algoritmo de ´rbol habr´ etapas de balance ejecutadas s´lo con un procesador. Algoritmo ´rbol binario a 4. e a ıa para realizar el balance de carga es pr´cticamente el mismo que se describe en el algoritmo a de toroide (subasta).3.4. A ız ´ continuaci´n se presenta el pseudoc´digo correspondiente a esta etapa. ıa.2. Etapa de balance de carga En este algoritmo el primer procesador con carga ser´ aquel que dentro de la topolog´ a ıa sea la ra´ a partir de ´l la carga ser´ distribuida hac´ sus ramas. El enfoque implementado ız.indice_carga / X si carga_enviar > 1 entonces indice_carga <.

4. 4.0 <25> al recibir CARGA(carga) de k en vecinos efect´a u <26> <27> <28> <29> <30> <31> otro si carga > 0 entonces indice_carga <. al igual que en el algoritmo u toroide.3.mesajes_busca_carga + 1 si id == s entonces si mensajes_busca_carga == # vecinos 61 .0 env´a BALANCE a todo k en vecinos_descargados ı borra k en vecinos_descargados ejecuta <2> y <3> <32> al recibir DESCARGADO de k en vecinos efect´a u <33> guarda k en vecinos descargados <34> al recibir BALANCE desde k en vecinos efect´a <2> y <3> u Si el procesador ra´ despu´s de haber ejecutado el protocolo de subasta no obtiene m´s ız e a carga. Etapa de b´ squeda de una vista global de carga u En esta etapa nuevamente se utiliza el protocolo PIF para conocer el estado global de carga y as´ determinar si es conveniente continuar con la etapa de terminaci´n. inicia la etapa de b´ squeda de una vista global de carga.carga balance_iniciado <. o <35> al recibir BUSCA_CARGA(indice_carga) de k en vecinos efect´a u <36> <37> <38> <39> carga_encontrada <.3.carga_encontrada + indice_carga mesajes_busca_carga <. A continuaci´n ı o o se presenta el pseudoc´digo de esta etapa. Algoritmos de balance de carga con manejo de informaci´n parcial o <22> <23> <24> otro env´a CARGA(carga_enviar) a k en vecinos ı env´a CARGA(0) a k en vecinos ı carga_enviar <.

Cuando un procesador hoja ha recibido el e a mensaje. En la retroalimentaci´n un mensaje con el ´ o o ındice de carga es enviado desde cada hoja a su procesador padre.3.carga_encontrada + indice_carga env´a BUSCA_CARGA(carga_encontrada) a raiz ı carga_encontrada <. Con la topolog´ utilizada o ıa en este algoritmo no es necesario utilizar este ´rbol porque la topolog´ ya tiene la forma de un a ıa ´rbol binario.4. La retroalimentaci´n finaliza cuando el procesador ra´ recibe a o ız los ´ ındices de carga de sus hijos con el ´ ındice de carga global. env´ un mensaje hac´ su padre con los ´ ıan ıa ındices de carga recibidos m´s el propio. el algoritmo PIF forma un ´rbol de peso m´ a a ınimo a tiempo de ejecuci´n que facilita la tarea de obtener una vista global de carga. o 4. Con la informaci´n recibida el o procesador ra´ puede decidir si ejecuta nuevamente la etapa de balance o inicia la etapa de ız terminaci´n.0 si carga_encontrada == 0 entonces env´a TERMINA a todo k en ramas ı otro ejecuta <2> y <3> carga_encontrada <. A difeız. 62 . puede iniciar la retroalimentaci´n. Algoritmo ´rbol binario a <40> <41> <42> <43> <44> <45> <46> <47> <48> <49> <50> <51> otro entonces mensajes_busca_carga <.3.4. Etapa de terminaci´n o Esta etapa se presenta cuando se ha determinado que no hay m´s carga en el sistema y a es iniciada por el procesador ra´ Consiste en ejecutar nuevamente el protocolo PIF.0 caga_encontrada <.0 Como mencion´bamos. Los procesadores intermedios esperan los mensajes de confirmaci´n en los cuales se env´ los ´ o ıan ındices de carga. cuando han recibido los mensajes esperados. De esta manera la propagaci´n del mensaje inicia en ra´ hasta los procesadores a o ız hoja a trav´s de los enlaces que forman el ´rbol.0 si mensajes_busca_carga == 1 reexpide BUSCA_CARGA(indice_carga) a todo k en ramas si mensajes_busca_carga == # vecinos entonces mensajes_busca_carga <.

que los resultados parciales se deben recolectar y que a posteriormente pueden finalizar su ejecuci´n.11: Recolecci´n de resultados en la topolog´ de ´rbol binario o ıa a El pseudoc´digo de esta etapa es el siguiente: o <52> al recibir TERMINA de ra´z efect´a ı u <53> <54> <55> <56> si # ramas > 0 entonces reexpide TERMINA a todo k en ramas otro env´a RESULTADO(resultado_parcial) a raiz ı termina <57> al recibir RESULTADO (resultado) de k en ramas efect´a u <58> <59> resultados_recibidos <. 0. a o 0 1 3 4 5 2 6 3 1 4 0 2 5 de sus hijos 6 a) Inicia fase de resolección. Evena tualmente el procesador ra´ que inicio esta etapa recibir´ los resultados desde sus ramas y ız a conocer´ el resultado global (Figura 4.resultado_acumulado + resultado 63 .11.(resultados_recibidos + 1) resultado_acumulado <.b).11. A continuaci´n se presenta el algoritmo.a). En el mensaje enviado en la retroalimentaci´n o o se incluir´n los resultados parciales recolectados de cada procesador (Figura 4.4. Algoritmos de balance de carga con manejo de informaci´n parcial o rencia de la etapa anterior el mensaje propagado ser´ para notificar al resto de procesadores a que no hay m´s carga que procesar.1 y 2 esperan por los resultados de sus hijos b) 1 y 2 envían sus resultados mas los Figura 4.

64 .4. RESPUESTA INFO CARGA. el procesador con este identificador es el responsable de iniciar las tareas o de b´ squeda y terminaci´n. resultados recibidos y resultado acumulado: estas variables se han presentado en el algoritmo toroide y tambi´n son utilizadas en este algoritmo en donde cumplen con el mismo prop´sito. respuesta carga. balance iniciado. ıa raiz : contiene el identificador del procesador del cual son rama. X. carga enviar.3. CARGA. ´ ındice carga. e o raiz arbol : contiene el identificador del procesador ra´ en el ´rbol de la topolog´ de ız a ıa comunicaci´n. mensajes busca carga. carga encontrada. Algoritmo ´rbol binario a <60> <61> <62> <63> <64> si resultados_recibidos == # ramas entonces si id == raiz_arbol entonces imprime (resultado_acumulado + resultado_parcial) termina otro resultado_acumulado <(resultado_acumulado + resultado_parcial) <65> <66> env´a RESULTADO(resultado_acumulado) a raiz ı termina Al igual que en el algoritmo anterior. vecinos descargados. cada procesador mantiene un conjunto de variables que le permiten conocer su condici´n durante la ejecuci´n. salvo el procesador con identificador raiz arbol todos los procesadores tienen un procesador ra´ ız. DAME CARGA. Los mensajes utilizados en este algoritmo son los siguientes: REQ INFO CARGA. resultado parcial. u o ramas: conjunto de vecinos que en la topolog´ sean ramas del procesador. las variables son las siguientes: o o vecinos. carga.

En el siguiente cap´ a ıtulo se presenta la plataforma de experimentaci´n (aplicaciones e infraestructura) utilizada y los o resultados obtenidos. TERMINA. Debido a que en este algoritmo el protocolo PIF se ejecuta o a trav´s de un ´rbol. BALANCE. BUSCA CARGA.4. En este algoritmo los mensajes utilizados ya han sido presentados en el algoritmo toroide y cumplen el mismo prop´sito. El pseudoc´digo completo de los dos algoritmos presentados se puede o consultar en el Ap´ndice A. adem´s de que las condiciones para el env´ de mensajes cambian como a ıo consecuencia de la ejecuci´n del protocolo sobre el ´rbol y el n´ mero de vecinos que puede o a u tener un procesador. 65 . toroide y ´rbol binario). e Los algoritmos presentados se han adaptado en la herramienta DLML. teniendo as´ una ı herramienta que permite desarrollar aplicaciones paralelas con la posibilidad de elegir de entre tres algoritmos de balance (global. Algoritmos de balance de carga con manejo de informaci´n parcial o DESCARGADO. el mensaje de notificaci´n de paternidad ERES MI PADRE no ha e a o sido requerido. RESULTADO.

Algoritmo ´rbol binario a 66 .3.4.

5. Multiplicaci´n de matrices o En esta aplicaci´n definimos a C como la matriz resultante de multiplicar la matriz A o por la matriz B. la multiplicaci´n requiere que la matriz A sea de tama˜ o n o n x l y la matriz B de tama˜ o l x m. Aplicaciones En esta secci´n presentamos un par de aplicaciones para probar nuestros algoritmos de o balance de carga: Multiplicaci´n de matrices y N-Reinas. Los ´ o ındices en esta comparaci´n son principalmente los tiempos o de respuesta y la escalabilidad para diferentes tipos de aplicaciones.Cap´ ıtulo 5 Plataforma de experimentaci´n y o resultados En esta cap´ ıtulo se presenta la plataforma de experimentaci´n.1. es decir que el n´ mero de columnas de la matriz A sea n u igual al n´ mero de filas de la matriz B.1. en donde escogimos a la o biblioteca DLML como plataforma de prueba para integrar y comparar nuestros algoritmos (toroide y ´rbol) con manejo de informaci´n parcial con el algoritmo nativo de DLML que a o maneja informaci´n global. De esta forma cada elemento de la matriz resultante u C se calcula por la siguiente f´rmula: o 67 .1. Como sabemos. o 5.

1 C 3.k bk.5.1 C 1.1 C 2.2 3 2 3 6 9 X 9 6 3 8 5 2 B 1 7 2 4 C 1.3 9 1 C 3.1 6 3 7 4 1 = C 1.. 68 .j Esto significa que cada elemento de la i-´sima fila de A sea multiplicado por un elemento e de la j-´sima columna de B. as´ cada elemento de la lista contiene los datos necesarios para calcular un ı elemento de la matriz resultante C. Multiplicación Columna j Suma de resultados Fila i .2 C 2..j = k=0 ai.3 C 2.3 C 3.2 se presenta la forma en que los datos de dos matrices de tama˜ o 3 x 3 n son organizados mediante listas.3 3 1 4 9 5 6 C 2.1 3 3 1 8 2 5 C 1.2 C 7 7 8 4 C 3.3 Figura 5.. C ij A X B = C Figura 5.1: Multiplicaci´n de matrices o Para esta aplicaci´n. .2: Manejo de la lista de datos en la multiplicaci´n de matrices o En la Figura 5..1. y la suma de todos los productos ser´ el valor del elemento cij e a de la matriz resultante como se puede apreciar en la Figura 5. Aplicaciones m−1 ci.2 C 1. 1 4 7 2 5 8 A Filas Columnas 1 9 2 6 C 1.1. en DLML cada elemento de la lista contiene una fila de A y una o columna B.

En tableros de dimensi´n 1.1. n En la Tabla 5.884 314.815. ı o o a partir de 4 existen soluciones que se incrementan conforme al tama˜ o del tablero aumenta.624 4. La ejecuci´n o finaliza una vez que la lista queda vac´ ıa. n Tablero 4 5 6 7 8 9 10 11 12 13 14 Soluciones 2 10 4 40 92 352 724 2.171.057.684.207.848 39. por lo que las operaciones de n o inserci´n s´lo se realizan al inicio de la ejecuci´n.029. el procesamiento de los datos consiste en obtener un elemento de la lista y realizar las operaciones requeridas para obtener un elemento de la matriz resultante.1: Soluciones conocidas para el problema de las N-Reinas 69 .090.184 14.973.008.937.736 2.2.352 Tabla 5.808. Plataforma de experimentaci´n y resultados o Al inicio de la ejecuci´n.222.644 24.514. a la lista se insertan elementos que contienen una fila y una o columna de las matrices a multiplicar.512 95.712 2.200 73.712 365.1 se muestran las soluciones para tama˜ os de tablero 4 hasta 25.596 Tablero 15 16 17 18 19 20 21 22 23 24 25 Soluciones 2. sin embargo.772. 5.666.440 227.188.680 14. El n´ mero de elementos a insertar depende del tau ma˜ o de las matrices y no se incrementa durante la ejecuci´n.5.279.233.691.435. 2 y 3 no existe soluci´n.968.701.893. N-Reinas El problema consiste en colocar N reinas en un tablero de ajedrez de tama˜ o N x N sin n que se ataquen entre s´ [1].104 666. Una vez que se han insertado todos los o o o elementos.

´ Renglón 1 Renglón 2 Renglón 3 1 2 3 4 1 2 3 4 Renglón 4 Columna 1 1.3: Soluciones y ´rbol de b´ squeda en 4 Reinas a u En DLML. Aplicaciones Para resolver este problema.4 4.1 3. es posible colocar una u a reina por cada rengl´n.3 soluciones 3.2 1 2 3 4 2. y su ´rbol de ´ a b´ squeda correspondiente.4.4 2.1.3 Columna 3 2.1.1 4.4. se colocan reinas s´lo en los renglones en que no se ataquen con las reinas del o primer nivel.1.3 se muestran las dos unicas soluciones para un tablero con N=4. En o el segundo nivel. Este procedimiento se realiza hasta encontrar las dos unicas soluciones para el tablero con N=4.4.4.5. aquellas posibles soluciones que no cumplan con esta condici´n son descartadas o y el resto se consideran nuevas soluciones a explorar. En la u ı o Figura 5. 70 .2 Columna 2 1. En el primer nivel del ´rbol (columna 1). el ´rbol puede ser representado a trav´s de una lista de datos que contiene las a e posibles soluciones a explorar.1. a partir de este punto se generan 4 posibles soluciones a explorar.3 1.1.4 3. Para ejemplificar la representaci´n del ´rbol mediante listas y o a c´mo es que se realiza el manejo de la lista durante la exploraci´n del ´rbol.4.1 4. En el ´rbol cada nivel de profundidad representa la columna del tablero a u a y los n´ meros que aparecen ah´ corresponden al rengl´n colocado en esa columna. se presenta la o o a Figura 5.2 Columna 4 Figura 5. las posibles soluciones pueden ser modeladas mediante un ´rbol de b´ squeda.

3) y a ´ (3. En la siguiente secci´n se presenta la infraestructura utilizada para realizar las pruebas a o los algoritmos propuestos. o este elemento puede descomponerse en dos posibles soluciones: (1. cada elemento de la lista contiene una posible soluci´n a ser explorada formada por los n´ mero de los renglones en los que se o u coloca una reina (Figura 5. Como se mencion´ anteriormente.4. El siguiente paso es tomar al primer elemento de la lista (en este caso con rengl´n 1).4: Manejo de la lista de datos en la exploraci´n del ´rbol de b´ squeda o a u Las principal caracter´ ıstica de este problema es que las posibles soluciones a explorar son generadas durante la soluci´n del propio problema (generaci´n din´mica de carga).3). b Renglón 1 Renglón 2 Renglón 3 Renglón 4 1 2 3 4 c 1 3 1 4 2 3 4 columna a d 1 3 1 4 2 3 4 e 2 4 1 3 . al analizar esta posible soluci´n se determina que no se pueden generar m´s o a posibles soluciones a partir de ella y se descarta (Figura 5.4. al inicio de la ejecuci´n o o existen 4 posibles soluciones a explorar.2) (Figura 5.4. por ello en la lista se insertan 4 elementos (Figura 5. 3 1 4 2 soluciones Figura 5.1. Plataforma de experimentaci´n y resultados o Considerando nuevamente un tablero con N=4..4.4.c). sin embargo.4.e).4. mismas que se insertan en la lista (Figura 5.1.a).4).d ).. 71 . Este procedimiento continua hasta que la lista no tiene m´s elementos encontrando las dos unicas soluciones: (2. Nuevamente se toma el primer elemento de la lista (1.3) y (1.5.b). por ello o o a resulta un excelente candidato para ser paralelizado e incorporar un algoritmo de balance de carga.

pues permite e o analizar la manera en que la carga es distribuida entre cores con distintas capacidades de procesamiento. o 72 .4 GHz Sis. En la Tabla 5. Su caracter´ e ıstica heterog´nea fue la principal motivaci´n para utilizarlo en las pruebas realizadas.5. Nodos 4 6 Proc.2. Infraestructura 5. Se trata de un o cluster con 2160 cores con misma capacidad de procesamiento. Operativo Linux Centos Linux Centos RAM por nodo 2 GB 4 GB Comunicaci´n o Gigabit Ethernet Gigabit Ethernet Tabla 5. Se utiliz´ principalmente para o realizar pruebas que permitieron analizar el comportamiento de los algoritmos con respecto a la escalabilidad y tiempo de respuesta. En la Tabla 5.3 se muestran sus caracter´ ısticas.2 se muestran sus caracter´ ısticas. A continuaci´n se o o detallan las caracter´ ısticas de cada cluster.2: Cluster heterog´neo Pac´ e ıfico Cluster homog´neo Aitzaloa e Este cluster que pertenece al Laboratorio de Superc´mputo y Visualizaci´n en Paralelo o o de la UAMI.2. Se trata de un cluster heterog´neo que cuenta con 40 cores. En la siguiente secci´n se presentan los resultados obtenidos. ubicado en la posici´n 439 del Top500 en Junio de 2009 [20]. Infraestructura La infraestructura utilizada para ejecutar las aplicaciones consta de dos clusters pertenecientes a la Universidad Aut´noma Metropolitana Iztapalapa (UAMI). Cluster heterog´neo Pac´ e ıfico El cluster Pac´ ıfico se encuentra ubicado en el Laboratorio de Sistemas Distribuidos de la UAMI. por nodo 2 Dual core 3 GHz 1 Quad core 2.

4169 36.0361 298.7145 34.52 35.8022 4.5.8955 Toroide 0. por nodo 8 Intel Xeon Quad-Core 3 Ghz Sis.3.0622 0. Tama˜ o de tablero n 14 15 16 17 18 19 Global 0.1497 0.0545 293.4 muestra los tiempos de respuesta en minutos de la aplicaci´n que resuelve o el problema de las N-Reinas. Tiempos de respuesta en la aplicaci´n de las N-Reinas o La Tabla 5.6805 4. o 5.1794 0.6461 286.1.0551 0.041 0. Las ejecuciones se realizaron en el cluster heterog´neo Pac´ e ıfico usando 40 cores. Resultados En esta secci´n presentamos los resultados que hemos obtenido despu´s de ejecutar las o e aplicaciones con los tres algoritmos de balance en ambos clusters.4: Tiempos de respuesta obtenidos en minutos para la aplicaci´n N-Reinas con N=14 o y N=19 Los resultados muestran que los algoritmos propuestos reducen los tiempos de respuesta 73 .9514 ´ Arbol binario 0.1362 6.2185 1.3: Cluster homog´neo Aitzaloa e 5. iniciamos con los resultados correspondientes a la aplicaci´n que resuelve el problema de las N-Reinas. Operativo Linux Centos RAM por nodo 16 GB Comunicaci´n o Gigabit Ethernet / Infiniband Tabla 5.2508 Tabla 5.3. Plataforma de experimentaci´n y resultados o Nodos 270 Proc.

Binario 100 Tiempo (minutos) 10 1 0. recordemos que el equilibrio de carga es uno de los objetivos fundamentales de los algoritmos balanceadores. que representa una diferencia de aproximadamente 12 minutos. Distribuci´n de carga en N-Reinas o Otro de los aspectos interesantes a analizar es c´mo los algoritmos distribuyen la carga o entre los cores que integran el sistema. n 5. Resultados con respecto a los del algoritmo global. que representa un factor de o 74 . El eje Y corresponde al tiempo de respuesta obtenido en segundos en escala logar´ ıtmica y el eje X al tama˜ o del tablero representado por N. Para mostrar la forma en que la carga es distribuida se ha elegido la aplicaci´n N-Reinas o por su caracter´ ıstica de generar carga a tiempo de ejecuci´n.01 14 15 16 N 17 18 19 Figura 5.1 0. 1000 Global Toroide A. En el mejor caso.2.3.5: Tiempos de respuesta en aplicaci´n N-Reinas con N=14-19 con cluster heterog´neo o e En la Figura 5.5.3.5 se pueden observar gr´ficamente los resultados para N variando desde a 14 hasta 19. el algoritmo toroide con N=19 reduce el tiempo en un 4 % comparado con el algoritmo global.

En el caso del algoritmo de ´rbol binario. o Se puede apreciar que el algoritmo global presenta un gran desequilibrio en cuanto a la cantidad de carga procesada por procesador. es decir u la cantidad de carga procesada por cada procesador.5. pero tambi´n presenta cierto desequilibrio. 2. y un cluster heterog´neo como infraestructura de ejecuci´n. Plataforma de experimentaci´n y resultados o desbalance. tiene una mejor u a a distribuci´n con respecto al algoritmo global. 55 Global Toroide A. que tambi´n representa e un factor de desbalance. toroide y ´rbol binario en aplicaci´n o a o N-Reinas con N=16 Los resultados de la Figura 5.6: Distribuci´n de carga con algoritmos global. en donde 16 de los e o 40 cores que lo integran tienen mayor capacidad de procesamiento. los resultados fueron obtenidos de las ejecuciones de los 3 algoritmos en la aplicaci´n de las N-Reinas con N=16. 3 y 4. a partir del nodo 5 se observa que hay una distribuci´n m´s uniforme pero o a a´ n no es la m´s adecuada. Binario 50 45 Soluciones exploradas(millones) 40 35 30 25 20 15 1 2 3 4 5 6 7 Identificador del nodo 8 9 10 Figura 5. Aunque se aprecia un ligero 75 . El o e algoritmo toroide es el que ha presentado los mejores resultados. se puede notar que existe un mayor desequilibrio en los nodos 1. que son aquellos que cuentan con cores con mayor capacidad de procesamiento.6 corresponden al n´ mero de soluciones exploradas.

se ha calculado la desviaci´n est´ndar. Binario 230 Soluciones exploradas(millones) 220 210 200 190 180 170 1 2 3 4 5 6 7 Identificador del nodo 8 9 10 Figura 5.7: Distribuci´n de carga con algoritmos global. En la Tabla 5. 240 Global Toroide A. toroide y ´rbol binario en aplicaci´n o a o N-Reinas con N=17 Estos resultados permiten apreciar nuevamente que el algoritmo que presenta una mejor distribuci´n de carga es el toroide.3. pr´cticamente la cantidad de carga procesada es similar en o a todos los cores. lo que nos muestra que a existe una mejora en cuanto al uso eficiente de los recursos de c´mputo con el algoritmo o toroide.5 se muestra o a la desviaci´n est´ndar para los tres algoritmos en cada regi´n del cluster heterog´neo.5. por lo que este algoritmo supera a los dos anteriores. Resultados desequilibrio en la distribuci´n. Se o a o e 76 . pues los factores de desbalance que representa el uso de un cluster heterog´neo y la generaci´n din´mica de carga e o a no han sido un factor que impida una buena distribuci´n de carga con este algoritmo. o En la figura 5. De estos resultados.7 se presentan los resultados obtenidos para la misma aplicaci´n pero con o N=17. pero tambi´n es posible apreciar que los cores con mayor o e capacidad de procesamiento son los que m´s carga han procesado.

el algoritmo toroide presenta menor u tiempo de respuesta con respecto al algoritmo de ´rbol binario y global.8 se observan los resultados de la aplicaci´n con 16-Reinas.978. lo cual permiti´ analizar la escalabilidad de los algoritmos. Es posible o observar que para los tres algoritmos.3.3. o Algoritmo Global Toroide ´ Arbol Binario Nodo 1-4 9. 77 . manteniendo esta a tendencia conforme se incrementa el n´ mero de cores.768 2.427 Nodo 5-10 5.5: Desviaci´n est´ndar (σ) de las soluciones exploradas con N=17 o a 5. pero no as´ si a ı. o u as´ tenemos ejecuciones hasta con 1024 cores. En la a siguiente subsecci´n se presentan los resultados referentes a la escalabilidad. u Uno de los puntos a destacar es que el algoritmo global pierde escalabilidad cuando el n´ mero de cores se incrementa de 64 a 128. En el caso del algoritmo u de ´rbol binario. Nuevamente u o estas pruebas han sido realizadas con la aplicaci´n de las N-Reinas para N=16 y N=17. presenta mejores resultados con respecto al algoritmo global. esto es consecuencia del incremento de mensajes u requeridos para balancear carga.682 3. ı En la Figura 5. pero cuando el n´ mero de cores es 32.132 6. seguido por el algoritmo de ´rbol binario y finalmente el algoritmo global.812. se han realizado ejecuciones en el cluster Aitzaloa que cuenta con un mayor e n´ mero de cores. Plataforma de experimentaci´n y resultados o observa que el algoritmo toroide obtiene la menor desviaci´n presentando un mejor balance o de carga.952. Escalabilidad en N-Reinas Adem´s de los resultados mostrados anteriormente de las ejecuciones sobre el cluster a heterog´neo.5.414. A partir de este punto la tendencia ascendente de los tiempos de respuesta se mantiene conforme se incrementa el n´ mero de cores.350.479 1. pr´cticamente los tiempos de respuesta son iguales a con 8 y 16 cores.556. o En cada ejecuci´n realizada se incrementa al doble el n´ mero de cores partiendo desde 8.180 Tabla 5.

78 . el algoritmo toroide presenta una mejora del 87 % con respecto al tiempo que presenta el algoritmo global. Binario 140 120 Tiempo (segundos) 100 80 60 40 20 0 8 16 32 64 Cores 128 256 512 1024 Figura 5. ahora presenta el menor tiempo de u respuesta con 128 cores en vez de los 64 para el tablero con N=16. El algoritmo toroide empieza a perder eficiencia cuando el n´ mero de cores es 1024.3.9 corresponden a la ejecuci´n de esta o misma aplicaci´n pero con un tablero con N=17. lo cual es una mejora considerable. Resultados se compara con el algoritmo toroide. hay que destacar que el hecho de aumentar el tama˜ o del n problema implica que la p´rdida de escalabilidad de los algoritmos se presente con un mayor e n´ mero de cores. En base a estos resultados.8: Tiempos de respuesta y escalabilidad con aplicaci´n N-Reinas con N=16 o Los resultados que se muestran en la Figura 5. u 160 Global Toroide A. Los resultados muestran nuevamente que el o algoritmo toroide presenta tiempos de respuesta menores. Cuando el n´ mero ´ a u de cores es 1024.5. seguido por el algoritmo de ´rbol a y por ultimo el algoritmo global con los tiempos de respuesta m´s altos. tal es el caso del algoritmo global.

mientras de que para el algoritmo toroide es de 1039 y 2102 para el ´rbol binario. 79 . aumentando as´ el tiempo de respuesta. Mesajes utilizados en N-Reinas Como se ha podido observar en la subsecci´n anterior.3.5. Se puede observar una clara diferencia entre la cantidad de mensajes requeridos por el algoritmo global y los algoritmos propuestos. lo cual representa un reducci´n en el n´ mero de mensajes utilizados a o u con respecto al algoritmo global del 94. la reducci´n o o del tiempo de respuesta que se logra con los algoritmos propuestos es m´s notable. Binario 1000 800 Tiempo (segundos) 600 400 200 0 8 16 32 64 Cores 128 256 512 1024 Figura 5. Los resultados que encontramos son los siguientes.2 % y 88.4. se ha medido el ı n´ mero de mensajes utilizados por la aplicaci´n con cada uno de los algoritmos utilizando u o 128 cores para N=16 y N=17.9: Tiempos de respuesta y escalabilidad en aplicaci´n N-Reinas con N=17 o 5.26 % respectivamente. el n´ mero de mensajes requeridos en el algoritmo global u u se incrementa en O(n2 ). Esto se a debe a que a mayor n´ mero de cores. Plataforma de experimentaci´n y resultados o 1200 Global Toroide A. Para ello.10 muestra el n´ mero de mensajes utilizados (mensajes recibidos por core) u para N=16. La Figura 5. El promedio de mensajes por core para el algoritmo global es de 17897. a partir de 128 cores.

3.24 % y 3. Binario 20000 Mensajes recibidos por core(miles) 15000 10000 5000 0 1 8 16 24 32 64 Identificador del nodo 128 Figura 5. mientras que el promedio u para el toroide es de 1547.10: Mensajes utilizados en aplicaci´n N-Reinas con N=16 o Para N=17.92 % respectivamente. el objetivo es analizar el comportamiento de los algoritmos con o aplicaciones en donde no se genera m´s carga a tiempo de ejecuci´n. Tiempos de respuesta en Multiplicaci´n de Matrices o Como se mencionaba anteriormente. las caracter´ ısticas de esta aplicaci´n es que la cantio dad de carga a procesar se conoce con anticipaci´n y que no se genera m´s carga a tiempo de o a ejecuci´n.85 para el ´rbol binario.11 muestra nuevamente que el algoritmo global requiere de un n´ mero mayor de mensajes. cuyo promedio por core es de 47698. Resultados 25000 Global Toroide A. Esto representa un reducci´n a o en mensajes del 3.5.27 y de 1869. la Figura 5. El hecho de conocer la cantidad de carga previamente. a o 5. permite distribuirla entre o 80 .5. Adem´s de las ejecuciones realizadas con la aplicaci´n que resuelve el problema din´mico a o a de las N-Reinas.3. tambi´n se realizaron ejecuciones con la aplicaci´n (est´tica) que permite la e o a multiplicaci´n de matrices.

distinto a lo que sucede con la aplicaci´n N-Reinas o o en la que la cantidad de carga a procesar no se conoce puesto que ´sta se va generando a e tiempo de ejecuci´n y por lo tanto no es posible distribuir carga hacia todos los cores al inicio o de la ejecuci´n. Al principio el ´rbol binario tiene el a a mismo comportamiento que el algoritmo toroide. n Los resultados muestran que el algoritmo global tiene mejor desempe˜ o con 8 y hasta n 32 cores. sin embargo. n En la Figura 5. Creemos que esta diferencia se debe al menor grado de conectividad de la topolog´ de ´rbol. a partir de 256 cores la diferencia es mayor. ıa a pues al incrementarse el n´ mero de cores. el algoritmo toroide presenta una mejora significativa a partir de 64 cores.11: Mensajes utilizados en aplicaci´n N-Reinas con N=17 o el total de cores al inicio de la ejecuci´n. Plataforma de experimentaci´n y resultados o 60000 Global Toroide A. Los resultados que se muestran a continuaci´n.5. en esta ocasi´n o el algoritmo con mejores resultados es el ´rbol binario. Binario 50000 Mensajes recibidos por core(miles) 40000 30000 20000 10000 0 1 8 16 24 32 64 Identificador del nodo 128 Figura 5. Por otro lado. el tiempo de ejecuci´n de cada etapa del algoritmo u o 81 . corresponden a multiplicar o o dos matrices cuadradas de tama˜ o 1000 y 1200 usando desde 8 hasta 1024 cores.12 se muestra los resultados correspondientes a la multiplicaci´n de mao trices de tama˜ o 1000. a partir de 32 cores empieza a perder escalabilidad.

13 muestra los resultados para la multiplicaci´n de matrices de tama˜ o 1200. o n los resultados muestran que aunque se ha aumentado la cantidad de carga a procesar. a partir de este punto empieza a perder escalabilidad. A diferencia del algoritmo toroide. este tambi´n se reduce al aumentar el n´ mero e u de cores.3.5. e La Figura 5. aunque con 8 y 32 cores tiene mayor a tiempo de respuesta que el algoritmo global. Binario 45 40 Tiempo (segundos) 35 30 25 20 15 10 8 16 32 64 Cores 128 256 512 1024 Figura 5. es el que muestra mejores resultados.12: Tiempos de respuesta para multiplicaci´n de matrices de tama˜ o 1000 x 1000 o n se tambi´n se incrementa. En el caso del algoritmo toroide. el algoritmo global pierde escalabilidad a partir de 32 cores. la p´rdida de escalabilidad es m´ e ınima. 82 . Para u el ´rbol binario. con 8 y 32 cores presenta un mayor tiempo de respuesta que se reduce conforme se incrementa el n´ mero de cores hasta 256. Resultados 50 Global Toroide A. En el cap´ ıtulo siguiente se presentan las conclusiones y trabajo a futuro.

5.13: Tiempos de respuesta para multiplicaci´n de matrices de tama˜ o 1200 x 1200 o n 83 . Binario 60 Tiempo (segundos) 50 40 30 20 8 16 32 64 Cores 128 256 512 1024 Figura 5. Plataforma de experimentaci´n y resultados o 70 Global Toroide A.

Resultados 84 .5.3.

Los algoritmos son una propuesta para balancear carga utilizando s´lo una parte de o la informaci´n del estado de carga del sistema. La a a o infraestructura utilizada estuvo compuesta por dos clusters: cluster heterog´neo Pacifico y e cluster homog´neo Aitzaloa. El uso de informaci´n parcial permiti´ reducir o o o el n´ mero de mensajes requeridos para balancear carga y se logr´ el objetivo de reducir los u o tiempos de respuesta y el problema de escalabilidad. Los algoritmos propuestos fueron implementados en la herramienta DLML con el fin de verificar su funcionamiento y comparar su desempe˜ o con el algoritmo con manejo de n informaci´n global que tiene de origen la herramienta. escalao bilidad y distribuci´n de carga fueron los siguientes: o Tiempos de respuesta En el caso de la aplicaci´n de las N-Reinas (aplicaci´n din´mica).1. los algoritmos: toroide o o a y ´rbol binario. Conclusiones En esta tesis se presentaron dos algoritmos de balance de carga con manejo de informaci´n o parcial. a 85 . presentaron menor tiempo de respuesta con respecto al algoritmo global.Cap´ ıtulo 6 Conclusiones y trabajo a futuro 6. e Los resultados obtenidos con respecto a la reducci´n de los tiempos de respuesta. La primera aplicaci´n tiene como caracter´ o ıstica la generaci´n din´mica de carga o a y la segunda es considerada est´tica pues no genera m´s carga a tiempo de ejecuci´n. o Los experimentos fueron realizados utilizando dos aplicaciones: N-Reinas y Multiplicaci´n o de matrices.

el problema de escalabilidad es notable o o para el algoritmo global y se presenta a partir de 16 cores para tama˜ os de matrices n cuadradas 1000 y 1200. el desempe˜ o de los algoritmos no se degrada.6. manteniendo esta tendencia hasta 256 y 512 cores en el algoritmo toroide y ´rbol binario respectivamente. Para la aplicaci´n de multiplicaci´n de matrices (aplicaci´n est´tica). n Para la aplicaci´n Multiplicaci´n de Matrices. estos presentan mejor desempe˜ o. El problema de escalabilidad se presenta cuando se utilizan 256 cores. contrario a lo que sucede con el algoritmo global que pierde eficiencia de forma exponencial. Sin embargo. En el caso de los algoritmos propuestos. 86 . S´lo hasta 1024 cores se observa que se presenta ligeran o mente un problema de escalabilidad para las pruebas en donde se considera el tablero con N=16.1. Conclusiones Esta reducci´n fue m´s significativa cuando el tama˜ o del tablero se incrementa y es o a n independiente del cluster utilizado. e u esta no es tan significativa. mientras que nuestros algoritmos mantienen un buen desempe˜ o. a´ n n u cuando los algoritmos propuestos tambi´n pierden eficiencia a mayor n´ mero de cores. mientras que para N=17. Escalabilidad Para la aplicaci´n de las N-Reinas. el desempe˜ o del algoritmo global se n degrada a partir de 64 y 128 cores respectivamente. se puede observar que los algoritmos propuestos o logran reducir el problema de escalabilidad del algoritmo global. al incrementar el n´ mero de cores sus a u tiempos de respuesta se incrementan considerablemente. En los resultados se observa que para un tablero con N=16 y N=17. los resultados o o o a mostraron que el algoritmo global tiene mejores tiempos de respuesta cuando el n´ mero u de cores utilizados est´ entre 8 y 32. mientras que los tiempos de los algoritmos propuestos se reducen. Superando as´ los tiempos de a ı respuesta del algoritmo global.

en caso n de que alg´ n procesador que integra el sistema presente alguna falla. u o Actualmente el dise˜ o de los algoritmos contempla que un procesador sea el encargado n de iniciar las etapas de b´ squeda global de carga y terminaci´n. Cuando el cluster utilizado es Aitzaloa. Este enfoque centralizado u o representa un punto unico de falla en el sistema. seguido del ´rbol binario y finalmente el algoritmo global. o 6. etc. Adem´s de que se observa una mayor a a uniformidad en la cantidad de carga procesada por cada core. A continuaci´n se presenta el trabajo a futuro. Trabajo a futuro Como trabajo a futuro se propone implementar nuevas topolog´ de comunicaci´n tales ıas o como hipercubo. la cantidad de carga procesada por core presenta mayor uniformidad con el algoritmo toroide. Cualquier falla (sobre todo cuando se trata de o a aplicaciones cuyo tiempo de procesamiento es considerable) representar´ la p´rdida de tiempo ıa e de procesamiento y uso in´ til de recursos de c´mputo. esto con el fin de identificar si existen a topolog´ m´s eficientes a la del toroide que en t´rminos generales es la que ha presentado ıas a e mejores resultados.6. se observa que los cores con mayor capacidad de procesamiento son los que han procesado m´s carga. sobre todo cuando el algoritmo utilizado es el toroide. Conclusiones y trabajo a futuro Distribuci´n de carga o Para comparar la forma en que los algoritmos distribuyen carga. Cuando la plataforma de ejecuci´n es el cluster heterog´neo Pao o e cifico. la ejecuci´n de la u o aplicaci´n simplemente no podr´ continuar. Por otra parte. se ocup´ la aplicaci´n o o de N-Reinas. ´rboles distintos al binario.2. ser´ conveniente desarrollar una nueva ´ ıa 87 . seguido del a ´rbol binario y finalmente el algoritmo global. actualmente esta o o herramienta cuenta con tres algoritmos de balance de carga que pueden ser elegibles en el desarrollo de aplicaciones paralelas. Los resultados mostraron que los algoritmos propuestos tienen una mejor distribuci´n de carga. a Debido a que la implementaci´n de los algoritmos se realiz´ en DLML. el dise˜ o de los algoritmos no contempla tolerancia a fallas.

2. por lo que ser´ deseable desarrollar una versi´n que incorpore la capacidad a ıa o de ejecuci´n en otra plataforma.6. ´ Por ahora el dise˜ o de los algoritmos est´ pensado para su ejecuci´n sobre clusters. Trabajo a futuro estrategia en donde las etapas antes mencionadas no sean iniciadas por un unico procesador. o 88 . por n a o lo que su buen desempe˜ o en otro tipo de plataforma de ejecuci´n (por ejemplo en Grids) no n o est´ garantizado.

0 determina al k en vecinos m´s cargado a si existe alg´n k en vecinos m´s cargado u a entonces env´a DAME_CARGA a k en vecinos m´s cargado ı a otro si id == s entonces si primera_busqueda == 0 entonces env´a BUSCA_CARGA(0) ı a todo k en vecinos 89 .respuesta_carga + 1 guarda indice_carga de k si respuesta_carga == 4 /*Si todos han respondido*/ entonces respuesta_carga <. e o Algoritmo Toroide <1> <2> <3> al estar descargado y balance_iniciado = 0 efect´a u env´a REQ_INFO_CARGA a todo k en vecinos ı balance_iniciado <.Ap´ndice A e En este ap´ndice se muestra el pseudoc´digo completo de los dos algoritmos.1 <4> <5> al recibir REQ_INFO_CARGA desde k en vecinos efect´a u env´a RESPUESTA_INFO_CARGA a k en vecinos con el indice_carga ı <6> <7> <8> <9> <10> <11> <12> <13> <14> <15> <16> al recibir RESPUESTA_INFO_CARGA(indice_carga) de K en vecinos efect´a u respuesta_carga <.

indice_carga / X si carga_enviar > 1 entonces indice_carga <.(indice_carga .carga_encontrada + indice_carga mesajes_busca_carga <.carga_enviar) env´a CARGA(carga_enviar) a k en vecinos ı env´a CARGA(0) a k en vecinos ı carga_enviar <. Trabajo a futuro <17> <18> <19> <20> primera_busqueda <.1 otro env´a BUSCA_CARGA(0) a todo k en hijos ı otro env´a DESCARGADO a todo k en vecinos ı desecha los ´ndices de carga recibidos ı <21> al recibir DAME_CARGA desde k en vecinos efect´a u <22> <23> <24> <25> <26> <27> otro carga_enviar <.carga balance_iniciado <.0 env´a BALANCE a todo k en vecinos_descargados ı borra k en vecinos_descargados ejecuta <2> y <3> de la etapa de inicializaci´n o <35> al recibir DESCARGADO de k en vecinos efect´a u <36> guarda k en vecinos_descargados <37> al recibir BALANCE desde k en vecinos efect´a <2> y <3> u de la etapa de inicializaci´n o <38> al recibir BUSCA_CARGA(indice_carga) de k en vecinos efect´a u <39> <40> carga_encontrada <.2.6.mesajes_busca_carga + 1 90 .0 <28> al recibir CARGA(carga) de k en vecinos efect´a u <29> <30> <31> <32> <33> <34> otro si carga > 0 entonces indice_carga <.

Conclusiones y trabajo a futuro <41> <42> <43> <44> <45> <46> <47> <48> <49> <50> <51> <52> otro si id == s entonces si mensajes_busca_carga == # hijos entonces mensajes_busca_carga <.0 si carga_encontrada == 0 entonces env´a TERMINA a todo k en hijos ı otro ejecuta <2> y <3> carga_encontrada <.0 primera_busqueda <.0 carga_encontrada <. asciende*/ otro mensajes_busca_carga <.6.1 env´a BUSCA_CARGA(carga_encontrada) ı a padre <57> <58> <59> <60> /*desciende*/ carga_encontrada <.0 91 .k reexpide BUSCA_CARGA(indice_carga) a vecinos excepto k <53> <54> <55> <56> si mensajes_busca_carga == 4 entonces mensajes_busca_carga <.0 env´a BUSCA_CARGA(indice_carga) ı a padre <63> <64> <65> <66> si # hijos > 0 entonces si mensajes_busca_carga == (# hijos + 1) entonces mensajes_busca_carga <.0 otro si mensajes_busca_carga == 1 /*busca carga sobre ´rbol*/ a entonces si # hijos > 0 entonces reexpide BUSCA_CARGA(indice_carga) a hijos <61> <62> /*Es hoja.0 si primera_busqueda == 0 /*busca carga por primera vez*/ entonces si mensajes_busca_carga == 1 entonces env´a ERES_MI_PADRE a k en vecinos ı padre <.

6.2. Trabajo a futuro
<67> /*asciende*/ env´a ı BUSCA_CARGA(carga_encontrada) a padre <68> <69> carga_encontrada <- 0

<70> al recibir ERES_MI_PADRE de k en vecinos agrega k a hijos

<71> al recibir TERMINA de padre efect´a u <72> <73> <74> <75> si # hijos > 0 entonces reexpide TERMINA a todo k en hijos otro env´a RESULTADO(resultado_parcial) a padre ı termina

<76> al recibir RESULTADO (resultado) de k en hijos efect´a u <77> <78> <79> <80> <81> <82> <83> otro resultados_recibidos <- (resultados_recibidos + 1) resultado_acumulado <- resultado_acumulado + resultado si resultados_recibidos == # hijos entonces si id == s entonces imprime (resultado_acumulado + resultado_parcial) termina resultado_acumulado <(resultado_acumulado + resultado_parcial) <84> <85> env´a RESULTADO(resultado_acumulado) a padre ı termina

92

6. Conclusiones y trabajo a futuro ´ Algoritmo Arbol Binario

<1> <2> <3>

al estar descargado y balance_iniciado = 0 efect´a u env´a REQ_INFO_CARGA a todo k en vecinos ı balance_iniciado <- 1

<4> <5>

al recibir REQ_INFO_CARGA desde k en vecinos efect´a u env´a RESUPESTA_INFO_CARGA a k en vecinos con el indice_carga ı

<6> <7> <8> <9> <10> <11> <12> <13> <14> <15> <16> <17>

al recibir RESPUESTA_INFO_CARGA(indice_carga) de todo k en vecinos efect´a u respuesta_carga <- respuesta_carga + 1 guarda indice_carga de k si respuesta_carga == # vecinos entonces respuesta_carga <- 0 determina al k en vecinos m´s cargado a si existe alg´n k en vecinos m´s cargado u a entonces env´a DAME_CARGA a k en vecinos m´s cargado ı a otro si id == raiz_arbol entonces env´a BUSCA_CARGA(0) a todo k en ramas ı otro desecha los ´ndices de carga recibidos ı env´a DESCARGADO a todo k en vecinos ı

<18> al recibir DAME_CARGA desde k en vecinos efect´a u <19> <20> <21> <22> <23> <24> otro carga_enviar <- indice_carga / X si carga_enviar > 1 entonces indice_carga <- (indice_carga - carga_enviar) env´a CARGA(carga_enviar) a k en vecinos ı env´a CARGA(0) a k en vecinos ı

carga_enviar <- 0

93

6.2. Trabajo a futuro
<25> al recibir CARGA(carga) de k en vecinos efect´a u <26> <27> <28> <29> <30> <31> otro si carga > 0 entonces indice_carga <- carga balance_iniciado <- 0 env´a BALANCE a todo k en vecinos_descargados ı borra k en vecinos_descargados ejecuta <2> y <3>

<32> al recibir DESCARGADO de k en vecinos efect´a u <33> guarda k en vecinos descargados

<34> al recibir BALANCE desde k en vecinos efect´a <2> y <3> u

<35> al recibir BUSCA_CARGA(indice_carga) de k en vecinos efect´a u <36> <37> <38> <39> <40> <41> <42> <43> <44> <45> <46> <47> <48> <49> <50> <51> otro carga_encontrada <- carga_encontrada + indice_carga mesajes_busca_carga <- mesajes_busca_carga + 1 si id == s entonces si mensajes_busca_carga == # vecinos entonces mensajes_busca_carga <- 0 si carga_encontrada == 0 entonces env´a TERMINA a todo k en ramas ı otro ejecuta <2> y <3> carga_encontrada <- 0 si mensajes_busca_carga == 1 reexpide BUSCA_CARGA(indice_carga) a todo k en ramas si mensajes_busca_carga == # vecinos entonces mensajes_busca_carga <- 0 caga_encontrada <- carga_encontrada + indice_carga env´a BUSCA_CARGA(carga_encontrada) a raiz ı carga_encontrada <- 0

94

6.resultado_acumulado + resultado si resultados_recibidos == # ramas entonces si id == raiz_arbol entonces imprime (resultado_acumulado + resultado_parcial) termina otro resultado_acumulado <(resultado_acumulado + resultado_parcial) <65> <66> env´a RESULTADO(resultado_acumulado) a raiz ı termina 95 .(resultados_recibidos + 1) resultado_acumulado <. Conclusiones y trabajo a futuro <52> al recibir TERMINA de ra´z efect´a ı u <53> <54> <55> <56> si # ramas > 0 entonces reexpide TERMINA a todo k en ramas otro env´a RESULTADO(resultado_parcial) a raiz ı termina <57> al recibir RESULTADO (resultado) de k en ramas efect´a u <58> <59> <60> <61> <62> <63> <64> resultados_recibidos <.

2.6. Trabajo a futuro 96 .

A. Balance din´mico de carga en un sistema paralelo con memoria distria buida... 60. M. Depth-first heuristics search on a SIMD machine. The Connection Machine. Dixon. Chris Ferguson.. Tesis de Maestr´ CINVESTAV-M´xico. 2000 [3] BOSQUE Jos´ L. Tesis de Doctorado. D. Artificial Intelligence. 66. Richard Korf. Catholic University of Rio de Janeiro. Departamento de Ingenier´ El´ctrica. 1993 [7] W.A.F. 12(4): 393-395. CINVESTAV-M´xico.PASTOR Luis. RODRIGUEZ Angel. Garc´ Programaci´n con Listas de Datos para C´mputo Paralelo en Clusıa. 1062-1075. 1985 97 . MA.. Journal of parallel and distributed computing . Parallel e CBIR implementations with load balancing algorithms. The MIT Press. D. Cambridge. 2006 [4] Castro G. C. Doctorate thesis. Plastino. The n-queens problem. vol. e ıa e M´xico. Departamento de Ingenier´ El´ctrica. Daniel Hillis. ıa. 2007 e [6] Curt Powley.Referencias [1] Aiden Bruen and R. Balanceamento de carga de aplicacoes paralelas SPMD.F. e ıa e M´xico. pp. ROBLES Oscar D. 2001 e [5] M. o o ters. Discrete Mathematics. Departament of Computing. 1975 [2] A.

Issues of the State Information for Location and Information Policies in Distributed Load Balancing Algorithm. and Dekeyser. 1997 [15] Mohammed Javeed Zaki. Zoltan data management services for parallel dynamic applications. Ming Zhang. A global load balancing strategy for a distributed system. Hendrickson B.pp. C. 1. Vaughan C. Customized dynamic load balancing for a network of workstations. Euromicro. Derivatio of a termination detection algorithm for a distributed computation.. Wei Li.. 1998 [14] Hye-Seon Maeng.563.1067. Dijkstra. 25th Euromicro Conference..1998 [12] Gil-Haeng Lee. Data-parallel load-balancing strategies. Computing in Science and Engineering 4 (2) p´ginas 90-97. Tack-Don Han. W. In IEEE Conference on Distributed Computing Systems. Hyoun-Su Lee. Dynamic Load Balancing of Iterative Data Parallel Problems on a Workstation Clustering. 12th IEEE/ACM International Symposium on Distributed Simulation and Real-Time Applications. Ralph Kling. 2008 [11] Fonlupt..REFERENCIAS [8] Devine K. An Efficient Dynamic Load Balancing Scheme for Distributed Simulations on a Grid Infrastructure. Hong-Kong. pages 93-102. Baumgartnet. P. Seijen. Boman E. A. HPC-Asia ’97. 2002 a [9] E. J. Heaphy R. and Benjamin Wah. Marquet. pp.. Parallel Computing 24 1665-1684. Shin-Duk Kim.. 1999 [13] KatherineM. 1997 98 . Azzedine Boukerche. High-Performance Computing on the Information Superhighway. pp. vol. Sung-Bong Yang. Information Proccesing Letters 16 217-219. Srinivasan Parthasarathy. Gasteren. 1983 [10] Elie El Ajaltouni. Journal of Parallel and Distributed Computing.61-68.

2002 [19] A.gov/Zoltan/. Boman E. Bhat. In Inter. http://www.cs. Inc.top500. V. Dynamic Load Balancing Strategies for Parallel Computers. on Distributed Computing Systems. pp. IEEE Trans. Segall. An adaptive bidding algorithm for processes... 29(1):2335. vol.sandia. Prentice-Hall. St. H. Sandia National Laboratories. A Framework for Distributed Dynamic Load Balancing in Heterogeneous Cluster. Journal of Computer Science 3 (1): 14-24. Zoltan: A Dynamic Load Balancing Library for Parallel Applications. 99 . How Network Topology Affects Dynamic Load Balancing.B. John. clusters. NM. 4. Jan 1983 [20] P´gina web del proyecto Top500 dedicado a posicionar los 500 sistemas de a c´mputo m´s potentes en el mundo. [21] Peter Kok Keong Loh. P´gina consultada el 9 de Julio de 2009.. pp. Sidhu. 3. 2007 [18] A. International Symposium on Parallel and Distributed Computing ISPDC. Vaughan C. August 1998. Conf. R. 1996 [22] John A. User´s Guide.org/lists/2008/11. 49–59. o a a http://www.REFERENCIAS [16] Devine K. Patel. 1984. Stankovic and Inderjit S. and distributed groups. Wen Jing Hsu. no. Albuquerque. Ammar. on Information Theory. [23] Barry Wilkinson and Michael Allen. 2000 [17] Neeraj Nehra. 25-35.. Osman. first edition. Cai Wentong. Nadarajah Sriskanthan.. IEEE Concurrency. Distributed network protocols. IEEE. M. Parallel Programming: Techniques and Applications using Networked Workstations and Parallel Computers. Hendrickson B.K.

Sign up to vote on this title
UsefulNot useful