Los algoritmos de balance de carga se encuentran integrados en diferentes aplicaciones reales, algunas de las cuales se enumeran a continuacion. Puede consultarse 289, 39, 125, 34, 231, 192, 53, 27, 299, 193, 217]
Branch-and-bound. Especialmente para Best-First-Branch-and-Bound es necesario
realizar no solo balance de carga cuantitativo sino cualitativo para asegurar que todos los procesadores trabajen en buenas soluciones parciales y asreducir el trabajo no esencial (aquel no procesado por un algoritmo best-rst secuencial).
Virtual Data Space (VDS). Modeliza un area de memoria global en la cual el usuario
puede insertar y retirar objetos de datos. Estan distribuidos entre los procesadores lo mas equitativamente posible con respecto al overhead de balanceo incurrido. Depen- diendo del tipo de objeto, VDS ofrece distintas estrategias tales como load-sharing, load-balancing y scheduling algorithms para computaciones multithread. VDS puede utilizarse por ejemplo en la paralelizacion de aplicaciones divide-and-conquer como aislamiento de races reales en polinomios.
Evaluacion de arboles de juegos. Los algoritmos de busqueda en arboles tienen un
rol importante en muchas aplicaciones de Inteligencia Articial. Especialmente en el campo de la busqueda en arboles de juegos como programas de ajederez, donde la fortaleza depende en gran parte de la velocidad: cuanto mas rapida es la maquina mejor juega. Por lo tanto, hay mucha investigacion para acelerar los algoritmos de busqueda usando maquinas paralelas trabajando en varias transposiciones al mismo tiempo. Luego, la evaluacion del arbol en paralelo es otro campo de aplicacion de algoritmos de balance de carga dinamicos.
Computo cientco. Por ejemplo, los metodos de elementos nitos que normalmente
constan de tres fases: generacion de la mesh, descomposicion de dominio y simu- lacion. En la fase de simulacion cada procesador esta trabajando en una parte de la mesh con frecuencia es necesario renar algunas partes de la mesh lo cual lleva a desbalances de carga.
Rendering. El objetivo de los sistemas realistas de sntesis de imagenes es elrendering
de alta calidad usando simulacion fsica de la iluminacion global. En la version par- alela la imagen se divide en partes que se distribuyen entre los procesadores. Debido a la irregularidad de la escena y la iluminacion, los desbalances de carga deben ser ecualizados usando algoritmos dinamicos.
Parallel data server. Consiste de un numero de discos y un numero de nodos de
entrada. Los nodos y los discos se conectan por una red. Para permitir el uso balanceado de los discos, los datos se duplican y almacenan en varios discos, y por lo tanto es necesario usar algoritmos dinamicos para distribuir los pedidos de usuario equitativamente. Un problema mayor es el scheduling de la comunicacion resultante entre nodos y discos. Es importante tener en cuenta en este contexto las restricciones de tiempo real para repartir grandes cantidades de datos (video y audio).
5.6 Comentarios
El balance estatico en general es de menor complejidad que el dinamico, pero tambien menos versatil y escalable es posible que presente problemas a la hora de agrandar el problema. Por otra parte, hay casos en que un balance estatico difcilmente sea adecuado. Por ejemplo, en un cluster de PCs la carga del procesador puede estar dada por la evolucion del programa, pero tambien por lo que el usuario de la computadora haga. Obviamente el balance estatico casi no podra tomar esto en cuenta. Alguna forma de balance dinamico podra detectar este problema en el procesador e intentara solucionarlo.
De todas formas, no puede establecerse un metodo efectivo y eciente en todos los casos. Siempre la eleccion dependera de la aplicacion y la plataforma de soporte, y en
muchos casos sera necesario adaptar o combinar metodos existentes para lograr buena performance.
Sorting
6.1 Introduccion
El sorting (ordenacion) es una de las operaciones mas comunes realizadas en una com-
putadora. Muchos algoritmos requieren que los datos se encuentren ordenados para poder accederlos de manera mas eciente 209, 278]. Tiene una importancia adicional para los dise~nadores de algoritmos paralelos: con frecuencia es usado para realizar permutaciones de datos en computadoras de memoria distribuida, y estas operaciones pueden utilizarse para resolver problemas en teora de grafos, geometra computacional o procesamiento de imagenes en tiempo optimo o casi optimo.
El sorting es importante dentro del computo paralelo por su relacion cercana con la tarea de rutear datos entre procesadores, que es parte esencial de algunos algoritmos paralelos. Muchos problemas de routing pueden ser resueltos ordenando los paquetes en
sus direcciones de destino, mientras varios algoritmos de sorting se basan en esquemas de ruteo para su implementacion eciente 226]. Tambien la operacion de ordenacion es utilizada con frecuencia en el procesamiento de Bases de Datos, por ejemplo en operaciones con clausulas Distinct,Order By y Group By en SQL.
La tarea del sorting se dene como el acomodamiento de un conjunto desordenado de elementos en orden creciente (o decreciente). Especcamente, para el caso de ordenar en forma creciente, sia =ha 1 a 2 :::a n
ies una secuencia denelementos en orden arbitrario,
el sorting transforma aen una secuencia creciente a 0 = ha 0 1 a 0 2 :::a 0 n ital quea 0 i a 0 j para 1 i j n y a 0 es una permutacion de a.
En el sortinginterno los datos caben en la memoria principal de la maquina y no se
necesita utilizar almacenamiento secundario. Por otro lado, el sorting externo involucra
ordenar mas datos de los que caben en la memoria combinada de todos los procesadores de la maquina paralela, y necesita hacer uso de memoria secundaria.
Los algoritmos de sorting pueden categorizarse como basados en comparacion y no basados en comparacion 209]. Los primeros ordenan comparando repetidamente pares de elementos e intercambiandolos si es necesario. Esta operacion fundamental se denomina compare-and-exchange. Paran items, el sorting secuencial basado en comparacion tiene
una cota inferior de complejidad en tiempo de (nlogn). En particular, mergesort es O(nlogn), lo que no da lugar a mejoras sustanciales en los algoritmos secuenciales. Pero,
a traves del paralelismo pueden obtenerse mejoras signicativas.
Los algoritmos que no se basan en comparacion ordenan usando ciertas propiedades conocidas de los elementos (como por ejemplo su representacion binaria o su distribucion). La cota inferior de estos algoritmos es (n). Existen numerosos algoritmos de sorting
tanto secuenciales como paralelos. En las secciones siguientes se presentan algunos de los mas conocidos.