Вы находитесь на странице: 1из 27

INTRODUCCION La aparicin de los ordenadores a mediados de este siglo ha sido sin duda una de las revoluciones ms importantes en el campo

tecnolgico. Tan es as, que se especula con que la aparicin de la Informtica puede tener un impacto social incluso mayor del que en su da se atribuy a la revolucin Industrial. La historia de los ordenadores apenas tiene 50 aos, pero su evolucin en este corto perodo de tiempo ha sido vertiginosa. Conforme el uso de los ordenadores se ha hecho ms comn en nuestra sociedad, las personas les hemos pedido ms y ms prestaciones a estos aparatos, al comprobar la ayuda que la Informtica presta en la resolucin de los mil y un problemas corrientes de cada da. La aparicin de los ordenadores personales, en la dcada de los aos '80 ha sido un factor decisivo para favorecer la proliferacin del uso de la Informtica y ejercer una mayor presin social en el aumento de las prestaciones que desarrollan los ordenadores. Dicha mejora en prestaciones se abord en un primer momento apoyndose en diversas innovaciones tecnolgicas tales como la integracin de circuitos VLSI, el aumento de la frecuencia de reloj en los procesadores, el aumento del tamao en el bus de control o de datos, etc. Pero estas mejoras tienen un techo impuesto por la naturaleza fsica de los componentes, lo que hizo que se pensara en otro modo de resolver este problema. Entonces es cuando se dirigi la vista a la arquitectura que presentaban los ordenadores. En la actualidad, los computadores masivamente paralelos con miles de procesadores son considerados como la tecnologa mas prometedora para alcanzar una capacidad de procesamiento cercana a los teraflops. Tales computadores de gran escala se organizan como una replicacin o aglomeracin de unidades funcionales de tratamiento muy parecidas a las que encontramos en una mquina clsica. Cada una de estas unidad es reciben el nombre de nodos. Cada nodo tiene su propio procesador, su memoria local y otros perifricos. El modo en que los nodos son conectados entre s vara de unas mquinas a otras. En una mquina con una arquitectura de red directa, cada nodo tiene una conexin punto-a-punto con algn nmero de otros nodos, llamados nodos vecinos. Las redes directas son en la actualidad una arquitectura muy usada para construir computadores masivamente paralelos debido a que escalan bien, es decir, cuando el nmero de nodos en la mquina aumenta, tambin aumenta el ancho de banda de comunicacin, el ancho de banda de la memoria y la capacidad de procesamiento de toda la mquina en su conjunto.

MENSAJE

Sistemas De Comunicacin En Computadores Paralelos: Estructura Y Funcionamiento, Ubicacin De La Interfaz. Aplicacin.

La red no es sino el soporte fsico de la comunicacin entre procesadores; por encima de ella, es necesario construir la lgica adecuada que permita llevar los mensajes desde el nodo origen al nodo destino. Para analizar el comportamiento de una red de comunicacin, adems de su topologa, es necesario tener en consideracin muchas otras cuestiones: cmo se organiza el camino switching strategy)? por dnde se llega al destino (routing algorithm)? hay que usar siempre el mismo camino? Cmo avanzan los mensajes por la red? qu hay que hacer si el camino est ocupado (flow control)? Todas estas decisiones hay que tomarlas teniendo en cuenta que el objetivo debe ser que la latencia de la comunicacin sea baja y el throughput de la red alto.

1. Los mensajes En funcin de la estructura del sistema paralelo, la informacin que se intercambia entre los procesadores puede organizarse de formas diversas. Si se utilizan variables compartidas, la comunicacin se efectuar mediante operaciones de tipo rd/wr, es decir, pequeos paquetes de control ms los datos. Si la comunicacin se efecta mediante paso de mensajes, stos sern ms largos y estructurados. Por otra parte, la longitud mxima de los mensajes que procesa la red suele estar limitada a un valor mximo. Si hay que enviar un mensaje ms largo, entonces habr que dividirlo en varios paquetes o unidades de transmisin de tamao fijo. En un paquete es habitual distinguir los siguientes campos: Cabecera: informacin de control que identifica al paquete, y que incluye, junto a la longitud, tipo, prioridad... del paquete, informacin sobre la direccin de destino. Payload o carga de datos: datos a transmitir (contenido del mensaje). Cola: informacin de control para indicar fin de paquete, cdigos de deteccin de errores tipo checksum (ms comn en las redes LAN que en los MPP), etc.

CONTROL Cola

DATOS

CONTROL Cabecera

As pues, tenemos que distinguir la informacin de control y los datos dentro de un paquete. Si los enlaces entre encaminadores son muy anchos (de muchos bits), los datos y la informacin de control pueden ir en paralelo. Por ejemplo, en el Cray T3D, los enlaces son de 24 bits, 16 bits para datos y 4

para control (y 4 ms para control de flujo). Con los 4 bits de control se indica, por ejemplo, el comienzo y el final de la transmisin de un paquete, etc. En el Cray T3E, en cambio, la informacin se enva en paquetes tales como los que hemos comentado (se dice que se hace framing).

Figura N 1.Computadora T3D MC 256

Figura N 2.Computadora T3E-900

Toda la informacin de control que se aade a los paquetes (cabecera, checksum...) supone una sobrecarga en la comunicacin y, por tanto, una prdida de eficiencia, por lo que hay que mantenerla acotada. Por ejemplo, si para mandar 100 bytes de datos hay que enviar un paquete con 128 bytes, entonces slo aprovecharemos 100 / 128 = 78% del ancho de banda del sistema (para transmitir informacin til). La anchura de los enlaces de red que se utilizan para transmitir la informacin suele ir desde un bit (transmisin serie, se ha utilizado poco) hasta 16 bits (o ms); segn los casos, por tanto, puede que se necesite ms de un ciclo de transmisin para transmitir la unidad lgica ms pequea de un paquete. Desde el punto de vista del control, los paquetes se suelen dividir en flits. En este contexto, un flit se define como la cantidad mnima de informacin con contenido semntico, normalmente la informacin mnima que se requiere para poder encaminar el paquete. Por ejemplo, si se utiliza transmisin en serie, cuando recibimos el primer bit de un paquete no podemos decir nada sobre dicho paquete; necesitamos ms bits para poder saber a dnde va dicho paquete. Por tanto, los mensajes/paquetes se miden en flits. Lo ms habitual es que un flit sean 8 o 16 bits, coincidiendo con la anchura de los enlaces que unen los encaminadores de la red. Normalmente, en uno o dos bytes se puede codificar la informacin necesaria para poder encaminar un paquete. De este modo, un flit se podr transmitir entre encaminadores en un solo ciclo.

1.1.

Interfaz de Paso de Mensajes(MPI) MPI ("Message Passing Interface", Interfaz de Paso de Mensajes) es un estndar que define la sintaxis y la semntica de las funciones contenidas en una biblioteca de paso de mensajes diseada para ser usada en programas que exploten la existencia de mltiples procesadores. El paso de mensajes es una tcnica empleada en programacin concurrente para aportar sincronizacin entre procesos y permitir la exclusin mutua, de manera similar a como se hace con los semforos, monitores, etc.

Figura 3. Interfaz de Paso de Mensajes Con MPI el nmero de procesos requeridos se asigna antes de la ejecucin del programa, y no se crean procesos adicionales mientras la aplicacin se ejecuta. A cada proceso se le asigna una variable que se denomina rank, la cual identifica a cada proceso, en el rango de 0 a p-1, donde p es el nmero total de procesos. El control de la ejecucin del programa se realiza mediante la variable rank; la variable rank permite determinar que proceso ejecuta determinada porcin de cdigo. En MPI se define un comunicator como una coleccin de procesos, los cuales pueden enviar mensajes el uno al otro; el comunicator bsico se denomina MPI_COMM_WORLD y se define mediante un macro del lenguaje C. MPI_COMM_WORLD agrupa a todos los procesos activos durante la ejecucin de una aplicacin. Las llamadas de MPI se dividen en cuatro clases:

Llamadas utilizadas para inicializar, administrar y finalizar comunicaciones. Llamadas utilizadas para transferir datos entre un par de procesos. Llamadas para transferir datos entre varios procesos. Llamadas utilizadas para crear tipos de datos definidos por el usuario.

a. Llamadas utilizadas para inicializar, administrar y finalizar comunicaciones. MPI dispone de 4 funciones primordiales que se utilizan en todo programa con MPI. Estas funciones son: MPI_Init permite inicializar una sesin MPI. Esta funcin debe ser utilizada antes de llamar a cualquier otra funcin de MPI. MPI_Finalize permite terminar una sesin MPI. Esta funcin debe ser la ltima llamada a MPI que un programa realice. Permite liberar la memoria usada por MPI. MPI_Comm_size permite determinar el nmero total de procesos que pertenecen a un comunicator. MPI_Comm_rank permite determinar el identificador (rank) del proceso actual.

b. Llamadas utilizadas para transferir datos entre un par de procesos. La transferencia de datos entre dos procesos se consigue mediante las llamadas MPI_Send y MPI_Recv. Estas llamadas devuelven un cdigo que indica su xito o fracaso. MPI_Send permite enviar informacin desde un proceso a otro. MPI_Recv permite recibir informacin desde otro proceso. Ambas funciones son bloqueantes, es decir que el proceso que realiza la llamada se bloquea hasta que la operacin de comunicacin se complete. Las versiones no bloqueantes de MPI_Send y MPI_Recv son MPI_Isend y MPI_Irecv, respectivamente. Estas llamadas inician la operacin de transferencia pero su finalizacin debe ser realizada de forma explcita mediante llamadas como MPI_Test y MPI_Wait. MPI_Wait es una llamada bloqueante y retorna cuando la operacin de envo o recepcin se completa. MPI_Test permite verificar si la operacin de envo o recepcin ha finalizado, esta funcin primero chequea el estado de la operacin de envo o recepcin y luego retorna.

c. Llamadas para transferir datos entre varios procesos. MPI posee llamadas para comunicaciones grupales que incluyen operaciones tipo difusin (broadcast), recoleccin (gather), distribucin (scatter) y reduccin. Algunas de las funciones

que permiten realizar transferencia entre varios procesos se presentan a continuacin. MPI_Barrier permite realizar operaciones de sincronizacin. En estas operaciones no existe ninguna clase de intercambio de informacin. Suele emplearse para dar por finalizada una etapa del programa, asegurndose de que todos los procesos han terminado antes de dar comienzo a la siguiente. MPI_Bcast permite a un proceso enviar una copia de sus datos a otros procesos dentro de un grupo definido por un comunicator. MPI_Scatter establece una operacin de distribucin, en la cual un dato (arreglo de algn tipo de datos) se distribuye en diferentes procesos. MPI_Gather establece una operacin de recoleccin, en la cual los datos son recolectados en un slo proceso. MPI_Reduce permite que el proceso raz recolecte datos desde otros procesos en un grupo, y los combine en un solo tem de datos. Por ejemplo, se podra utilizar una operacin reduccin, para calcular la suma de los elementos de un arreglo que se distribuy en algunos procesos. d. Llamadas utilizadas para crear tipos de datos definidos por el usuario. Para definir nuevos tipos de datos se puede utilizar la llamada MPI_Type_struct para crear un nuevo tipo o se puede utilizar la llamada MPI_Pack para empaquetar los datos. CARACTERISTICAS DEL MPI

Estandarizacin. Portabilidad: multiprocesadores, multicomputadores, redes, heterogneos, ... Buenas prestaciones. Amplia funcionalidad. Existencia de implementaciones libres (mpich, LAM-MPI, ...)

La especificacin detalla las funciones que se pueden utilizar, no el modo como se compilan y lanzan-ejecutan los programas, lo cual puede variar de una implementacin a otra. Siguiendo el modelo SPMD, el usuario escribir su aplicacin como un proceso secuencial del que se lanzarn varias instancias que cooperan entre s. Los procesos invocan diferentes funciones MPI que permiten

iniciar, gestionar y finalizar procesos MPI comunicar datos entre dos procesos realizar operaciones de comunicacin entre grupos de procesos crear tipos arbitrarios de dato

2. Patrones de comunicacin No es posible responder de manera precisa a esa cuestin, ya que las necesidades de comunicacin, obviamente, dependen de la aplicacin a ejecutar. Sin embargo, podemos aclarar algunos aspectos. Por una parte, hay que tener en cuenta que el esquema de comunicacin de una aplicacin y el esquema de comunicacin en la red son dos cosas diferentes, ya que en medio se encuentra la asignacin fsica de procesos a procesadores. Es decir, si los procesos P1 y P2 tienen que intercambiar informacin, no es lo mismo que se asignen a procesadores contiguos en la red que asignarlos a procesadores en dos extremos de la red. Por otra parte, las necesidades de comunicacin no suelen ser siempre de todos con todos, sino entre algunos de los procesos. Tenemos por tanto que considerar mltiples aspectos: las necesidades de comunicacin de la aplicacin, el nivel de paralelismo, el reparto de procesos, etc. Al esquema de comunicacin que hay que ejecutar en la red se le conoce como patrn de comunicacin. El patrn de comunicacin puede ser espacial o temporal, es decir, puede indicar la distribucin espacial de los paquetes (a dnde van) o su distribucin en el tiempo (cundo se transmiten). Analicemos algunos de los casos ms tpicos. 2.1. Aleatorio Uno de los patrones que ms se utiliza para analizar el comportamiento de las redes es el patrn aleatorio, tanto en el espacio como en el tiempo. La comunicacin es aleatoria si la probabilidad de enviar un paquete del nodo i al j, PrCij, es la misma para cualquier par de nodos de la red. En este caso, la distancia media de la comunicacin y la de la red (topolgica) coinciden. Aunque tal vez no parezca un patrn de comunicacin lgico, se obtiene de manera sencilla si el propio proceso de reparto de procesos a procesadores es aleatorio, lo cual puede ser til para utilizar los recursos de la red de manera homognea.

2.2.

Esferas de localidad La comunicacin entre procesos, al igual que ocurre con los accesos a memoria, posee la propiedad de localidad: los procesos se comunican entre s formando grupos; dentro del grupo, la comunicacin es muy habitual, y fuera de l muy escasa. De cara a reducir la latencia de la comunicacin, puede ser interesante asignar esos grupos a procesadores cercanos, con lo que la comunicacin se limitar dentro de una esfera. La probabilidad de comunicacin de este tipo de patrones es funcin, por tanto, de la distancia. En lo que al tiempo se refiere, puede ser aleatoria.

2.3.

Broadcast / Multicast / Reporting Las necesidades de comunicacin pueden analizarse en el espacio y en el tiempo. Un tipo habitual de comunicacin es la conocida como broadcast (difusin): desde el procesador i se enva un mensaje a todos los procesadores, a la vez. La operacin termina cuando todos los nodos han recibido el mensaje. Es una operacin muy habitual en muchas situaciones, por ejemplo para sincronizar procesos. As pues, en un determinado momento se produce un pico de comunicacin. El caso de multicast es similar, pero el mensaje no se enva a todos los nodos, sino solamente a un subconjunto de ellos. Existen muchos algoritmos que implementan estos patrones de manera eficiente (spanning tree...) pero no los vamos a analizar. El caso conocido como reporting es justamente el contrario: todos los procesadores envan un mensaje al mismo nodo destino, ms o menos a la vez. Es un patrn de comunicacin que genera muchos problemas, ya que podemos tener niveles elevados de trfico en las cercanas del nodo destino, que pueden llegar a saturar la capacidad de enlaces y encaminadores. Tambin para este caso existen algoritmos para intentar reducir el problema y efectuar la comunicacin de manera eficiente (combining messages).

Broadcast

Multicast

2.4.

Matriz transpuesta, FFT, perfect shuffle. Algunas aplicaciones de clculo muy habituales matriz transpuesta, transformada discreta de Fourier... suelen generar patrones de comunicacin especficos. En estos patrones la comunicacin se concentra en momentos determinados, por lo que en esos momentos crecer la densidad del trfico de paquetes, puede que se saturen algunas zonas de la red, y, en consecuencia, la latencia de los paquetes ser ms alta. En todo caso, se trata de momentos concretos de saturacin, ya que la red debe ir recuperando su estado normal segn va transportando los paquetes a su destino.

Otra caracterstica de la comunicacin de una determinada aplicacin es el tamao de los mensajes que genera: grandes, pequeos, de todo tipo. En base a este parmetro suelen distinguirse dos tipos de paralelismo. Por un lado, el paralelismo de grano fino, en el que los mensajes que se intercambian los procesos son cortos (10 - 100 bytes), pero la comunicacin es muy frecuente. En el lado opuesto tenemos el paralelismo de grano grueso, con mensajes largos (1 kB - 100 kB) pero mucho menos frecuentes. Por otra parte, junto con los paquetes de datos se van a generar muchos paquetes de control (para mantener la coherencia, para la sincronizacin...), que, comparados con los de datos, son mucho ms cortos. En resumen, las aplicaciones paralelas van a generar mensajes de tamao muy diverso, que habr que procesar de manera eficiente en todos los casos. Por ello, en algunos sistemas de comunicacin se distinguen clases de mensajes (cortos y largos, o de datos y de control) y se tratan de manera diferente; por ejemplo, se da preferencia a los mensajes cortos (de control). 3. Construccin del camino (switching strategy) El camino que va a "unir" el emisor y el receptor (dos procesadores o un procesador y un mdulo de memoria) puede construirse de maneras diferentes (que se suelen conocer como tcnica de conmutacin o switching). Las dos tcnicas habituales son: 3.1. Conmutacin de circuitos (circuit switching) Antes de comenzar con la transmisin de datos, se construye (se reserva) un camino fsico especfico que une emisor y receptor, para lo que se enva un mensaje de control especial, una sonda, que segn avanza hacia el destino va reservando los recursos de red que utiliza. Al llegar al destino, se enva una respuesta al nodo origen utilizando el camino que ha construido el mensaje sonda. Cuando se recibe este mensaje de confirmacin, se procede a enviar los datos por el camino privado establecido entre emisor y receptor. Reservar el camino requiere cierto tiempo, pero, una vez construido, la transmisin de datos se efecta sin ninguna limitacin, ya que todo el ancho de banda de los enlaces est disponible para nuestro mensaje. Este mecanismo resulta interesante si el tiempo de construccin del camino es mucho menor que el de transmisin de datos (como ocurre, por ejemplo, en el caso de una llamada telefnica). Cuando se utiliza conmutacin de circuitos no es necesario dividir los mensajes en paquetes, ya que no vamos a utilizar nunca bferes intermedios. En todo caso, no hay que olvidar que si los mensajes son muy largos se van a mantener ocupados los enlaces entre

encaminadores durante largo tiempo, por lo que la latencia de otros mensajes que querran utilizar esos recursos puede crecer mucho, lo cual puede no ser aceptable en un entorno de computacin paralela. El ejemplo ms conocido de este tipo de comunicacin es la telefona. Aunque se ha utilizado en algn multicomputador comercial (por ejemplo, en el iPSC2 de Intel o en Meiko CS-2 y BBN butterfly), no es la alternativa habitual en los sistemas MPP.

3.2.

Conmutacin de paquetes (packet switching) Para efectuar la comunicacin no se construye un camino, sino que se envan paquetes a la red y stos van escogiendo el camino adecuado, en funcin de la direccin de destino (como en el trfico postal). sta es la tcnica ms habitual para efectuar la comunicacin en los sistemas paralelos. Los encaminadores de mensajes de la red reciben los paquetes, procesan la informacin de control, y los reenvan al siguiente encaminador, hasta llegar as al nodo destino. La informacin de control que indica el destino de los paquetes debe ser sencilla de interpretar, ya que no podemos perder mucho tiempo en ese proceso si queremos que la comunicacin sea eficiente, es decir, que la latencia de los paquetes sea la menor posible. En el prximo apartado veremos cmo indicar dicha informacin. Cuando, por ser grande, un mensaje se divide en varios paquetes se genera una cierta sobrecarga en la comunicacin, ya que hay que aadir la informacin de control en cada paquete. Por ello, salvo que exista otro tipo de razones, no conviene dividir los mensajes en

paquetes muy cortos. En general, el tamao mximo de los paquetes suele estar relacionado con el de los bferes de los encaminadores.

4. Encaminamiento de los mensajes (routing) Para llegar a su destino, los paquetes deben atravesar la red de comunicacin. Pero, cul es el camino para llegar al destino? Tenemos que resolver dos problemas. Por un lado, cmo indicar la direccin de destino del paquete, y, por otro, qu camino elegir entre los mltiples caminos que enlazan el nodo origen y el destino. En todo caso, y salvo que tuviramos que resolver algn problema particular, el camino escogido debe ser siempre un camino de distancia mnima (los paquetes nunca se alejan de su destino). Veamos cmo resolver estos problemas. 4.1. El registro de encaminamiento Cuando se utiliza conmutacin de paquetes, el procesador (ms exactamente, el interfaz con la red) inyecta los paquetes a transmitir en la red para que stos lleguen a su destino utilizando por el camino los diferentes recursos de la red (de manera similar a lo que ocurre con el correo habitual). Para llegar desde el nodo origen al destino hay que utilizar la informacin que lleva el propio paquete. Por dnde avanzar en la red? El proceso de hacer avanzar un paquete en la red se conoce como encaminamiento (routing). El encaminamiento de los paquetes en la red debe ser sencillo. Dos son las opciones ms habituales. En la cabecera del paquete se incluye la direccin de destino; as, en cada encaminador de mensajes intermedio se decidir por dnde debe avanzar el paquete en funcin de dicha direccin. Para ello pueden usarse dos tcnicas

diferentes: (a) utilizar una tabla que indique los puertos de salida adecuados para cada direccin de destino; o (b) efectuar una operacin sencilla con la direccin que d como resultado el puerto de salida. La cabecera del paquete indica el nmero de pasos que debe dar el paquete en cada dimensin para llegar al destino, en un campo que se conoce como registro de encaminamiento (routing record). En cada paso se actualiza el registro de encaminamiento (1), y cuando todos sus elementos valgan 0, el paquete ha llegado a su destino. De una manera o de otra, la eleccin del camino debe ser lo ms rpida posible, ya que no podemos demorar demasiado tiempo los paquetes en los encaminadores intermedios, so pena de que la latencia de la comunicacin crezca mucho. Ya que los registros de encaminamiento son, probablemente, la opcin ms utilizada, veamos cmo calcular el registro de encaminamiento en las topologas de red que hemos analizado en el apartado anterior. a) Mallas Los procesadores que forman la malla se suelen identificar segn sus coordenadas en la misma b) Toros El procedimiento es el mismo, pero en este caso hay que tener en cuenta que tenemos un anillo en cada dimensin. Y en un anillo siempre hay dos caminos para ir de un punto a otro: por delante o por detrs; eso s, escogiendo siempre el camino mnimo. Por tanto, en un anillo de k nodos no se dan nunca ms de d = k/2 pasos en una direccin, ya que siempre es posible efectuar k d pasos en la direccin contraria, es decir, recorrer una distancia menor. As pues, el registro de encaminamiento se calcula como en el caso anterior, pero se efecta luego una fase de correccin para buscar el camino mnimo. c) Hipercubos. Tambin en este caso el encaminamiento de los paquetes es sencillo. El hipercubo es un cubo binario, es decir, tiene slo dos nodos en cada dimensin, con etiquetas 1 y 0. La etiqueta de cada nodo es simplemente el conjunto de etiquetas en cada dimensin. d) rboles. Tambin en este caso es sencillo el encaminamiento de los paquetes. En primer lugar, habr que decidir hasta qu nivel del rbol hay que subir (mediante una comparacin de las direcciones origen y destino), y, despus, por qu rama hay que descender para llegar al destino (normalmente utilizando la direccin destino). Eleccin del camino: esttico o adaptativo

4.2.

Cuando un paquete llega a un encaminador de la red se analiza la cabecera del mismo para saber si va destinado al procesador local o a otro procesador, y para ello se utiliza el registro de encaminamiento. Cuando todos los campos del registro de encaminamiento son 0, entonces el paquete ha llegado al destino; si no, debe continuar hacia adelante. Aunque el registro de encaminamiento est perfectamente definido, el camino entre origen y destino no es nico, y, en general, dispondremos de muchas alternativas. Por ejemplo, si hay que dar dos pasos en ambas direcciones de una malla RE = [2, 2] , tenemos 6 posibilidades diferentes de recorrer el camino: x-x-y-y, x-y-x-y, x-y-y-x, y-x-x-y, y-x-y-x, y-y-xx. Qu camino hay que seguir? Hay que seguir siempre el mismo camino? 4.2.1. Encaminamiento esttico Cuando un paquete llega a un encaminador de la red se analiza la cabecera del mismo para saber si va destinado al procesador local o a otro procesador, y para ello se utiliza el registro de encaminamiento. Cuando todos los campos del registro de encaminamiento son 0, entonces el paquete ha llegado al destino; si no, debe continuar hacia adelante. Aunque el registro de encaminamiento est perfectamente definido, el camino entre origen y destino no es nico, y, en general, dispondremos de muchas alternativas. Por ejemplo, si hay que dar dos pasos en ambas direcciones de una malla RE = [2, 2] , tenemos 6 posibilidades diferentes de recorrer el camino: x-x-y-y, x-y-x-y, x-y-y-x, y-x-x-y, y-x-y-x, y-y-x-x. Qu camino hay que seguir? Hay que seguir siempre el mismo camino? "primero-X-luego-Y". Los paquetes avanzan hacia el destino recorriendo primero todo el camino en una dimensin, luego en la siguiente, etc. Por tanto, en el encaminamiento esttico slo se utiliza uno de todos los caminos posibles para ir del nodo i al nodo j. Dado que se utiliza un slo camino, se pierde la tolerancia a fallos de bajo nivel; si no se puede avanzar, porque hay una avera, habr que utilizar algoritmos de otro nivel para que la comunicacin se pueda efectuar.

4.2.2.

Encaminamiento dinmico o adaptativo

El encaminamiento es dinmico si los paquetes que van de i a j no siguen siempre el mismo camino, sino que escogen el camino ms adecuado en funcin de la situacin concreta de la red. El encaminamiento dinmico es ms flexible, y permite utilizar caminos en los que la densidad de trfico sea menor para evitar zonas de la red que estn temporalmente saturadas. En la siguiente figura se muestran tres opciones (con lnea continua la correspondiente al encaminamiento DOR) para poder ir del nodo (1, 0) al nodo (3, 3). En los tres casos el registro de encaminamiento es RE = [2, 3]. Si, por ejemplo, hubiera una congestin de trfico alrededor del nodo (1, 1), podra ser ms adecuado utilizar el camino (b) en lugar del (a). La misma idea se puede aplicar para evitar fallos en la red: aunque se estropee el enlace (1, 2) (1, 3), todava tenemos posibilidades de llegar al nodo (3, 3), utilizando, por ejemplo, el camino (c).

Existen muchas maneras diferentes de efectuar la adaptacin. Una de las ms conocidas es la denominada zigzag: siempre que sea posible, los paquetes no agotan el recorrido en una dimensin, sino que los van intercambiando. De esa manera se consigue mantener hasta el final la posibilidad de utilizar caminos alternativos frente a posibles problemas de trfico o de fallos en la red. Para el caso de dos dimensiones, un ejemplo de algoritmo simplificado podra ser el siguiente: si (|REx| > |REy|) entonces Sigue_por_el_eje_X ; X+, Xsi_no Sigue_por_el_eje_Y ; Y+, Ysi (salida_elegida_ocupada) entonces Intenta_la_otra ; si hay alternativa Aunque el encaminamiento dinmico ofrece ciertas ventajas, hay que valorar, como siempre, los posibles inconvenientes que introduce. A menudo, el

encaminamiento dinmico es consecuencia de una apuesta; por ejemplo, si en un momento determinado no se puede utilizar una salida porque est ocupada, se decide avanzar por otro camino. Por desgracia, para tomar esa decisin se utiliza slo informacin parcial, basada normalmente en el trfico local, y no se sabe en qu situacin se encuentra el nuevo camino elegido (quizs peor que el rechazado). En todo caso, cuando la red no es simtrica o cuando el trfico se reparte de manera no homognea, es fcil que surjan zonas de alta densidad de trfico en la red (hot spots), y en esos casos puede resultar efectivo el encaminamiento adaptativo. Por otra parte, si se divide un mensaje en varios paquetes y stos utilizan caminos diferentes para llegar al destino, lo ms probable es que lleguen en desorden, por lo que habr que recomponer el mensaje en el destino (y los paquetes debern incluir ms informacin de control). Adems, los encaminadores debern ser ms complejos para poder aplicar encaminamiento adaptativo y, por tanto, el tiempo de procesamiento de los paquetes ser mayor. Por ltimo, como analizaremos ms adelante, cuando se utiliza encaminamiento adaptativo se pueden producir bloqueos (deadlock) en la red: los paquetes no son capaces de avanzar, porque se impiden avanzar unos a otros. Por tanto, hay que evaluar cuidadosamente el uso de encaminamiento adaptativo.

4.2.3.

Encaminamiento no mnimo Aunque el camino recorrido por los paquetes debiera ser de longitud mnima, en algunos casos puede ser necesario o til utilizar caminos ms largos para llegar a destino, para, por ejemplo, rodear una zona de trfico denso, o, sobre todo, para evitar zonas con fallos en la red. Por ejemplo, un paquete va desde el procesador (1, 0) al procesador (3, 2), y cuando est en el encaminador del nodo (1, 2) detecta que no puede avanzar porque el encaminador del nodo (2, 2) no responde (se ha estropeado). En ese caso, tiene la posibilidad de tomar un camino ms largo, como el que aparece en la figura, para poder completar la comunicacin.

5. Control del flujo de informacin

Los paquetes avanzan en la red de encaminador a encaminador hasta llegar a su destino. Pero, cmo se efecta el avance? Qu hay que hacer si los recursos que necesita un paquete para seguir adelante estn ocupados? Este tipo de cuestiones se conocen como control del flujo de los paquetes. 5.1.1. Avance de los paquetes: SF, WH, CT

Cmo se transmite un paquete de encaminador a encaminador? Supongamos que los enlaces de la red son de un byte, con lo que en un ciclo de transmisin se pasar un byte entre dos encaminadores. Los paquetes que hay que transmitir van a ser bastante ms largos, por lo que necesitaremos varios ciclos de transmisin para pasar todo el paquete (todos los flits o bytes) de un encaminador al siguiente. Mientras tanto, qu hay que hacer con un paquete que se est recibiendo? Veamos las dos alternativas principales: store-andforward y wormhole / cut-through. 5.1.2. Store-and-forward (SF) Store-and-forward es el nombre de la tcnica empleada en la primera generacin de multicomputadores para pasar los paquetes entre dos encaminadores sucesivos (tcnica habitual en las redes LAN y WAN).

En este caso, el encaminador que est recibiendo el paquete no hace nada con el mismo hasta que no lo termina de recibir del todo. A continuacin, analiza la cabecera del paquete y decide por dnde debe retransmitirlo. De esa manera, la transmisin de los paquetes se limita siempre a dos encaminadores: el que

transmite y el que recibe. Mientras se produce la transmisin, el paquete se guarda en un bfer interno del encaminador (vase la figura siguiente). En primera aproximacin, el tiempo de comunicacin de un paquete resulta proporcional al tamao del paquete (L) y a la longitud del camino recorrido (d): Tsf ~ L d As pues, cuando se duplica la distancia a recorrer, tambin se duplica la latencia de un paquete. 5.1.3. Wormhole (WH) / Cut-through (CT) La tcnica SF no es muy adecuada para los sistemas MPP, ya que la latencia de la comunicacin puede resultar muy elevada (en funcin de la distancia a recorrer), y la comunicacin es crucial en muchas de las aplicaciones que se ejecutan en paralelo. Por ello, los sistemas paralelos actuales utilizan otra tcnica conocida como wormhole (WH) o cut-through (CT).

Cuando un encaminador recibe el primer flit de la cabecera de un paquete (normalmente una parte del registro de encaminamiento) analiza a dnde se dirige. Si debe continuar con su recorrido, entonces se le asigna directamente un puerto de salida y se comienza a retransmitir al siguiente encaminador, sin esperar a recibir todo el paquete; el resto de flits del paquete se enviar tras el primero, por el mismo camino, segn vayan llegando. As, el paquete queda distribuido a lo largo del camino hacia el destino: la comunicacin se ha segmentado, ya que muchos encaminadores toman parte simultneamente en la transmisin de un paquete. Se necesitan d ciclos para que el primer flit de la cabecera del paquete llegue al destino, tras lo cual llegarn, ciclo a ciclo, el resto de flits del paquete. Por tanto, en primera aproximacin, la latencia de un paquete en modo WH o CT ser proporcional a la suma de L y d. Es decir, Tct/wh ~ L + d

Claramente, la latencia de la comunicacin en modo wormhole ser menor que en modo store-and-forward, ya que L y d se suman en lugar de multiplicarse: el efecto de la distancia a recorrer en el tiempo de transmisin es mucho menor en modo CT/WH que en modo SF. La transmisin de un paquete se efecta de la misma manera en modo wormhole que en modo cut-through, pero si la cabecera de un paquete no puede continuar avanzando, porque la salida que necesita utilizar est ocupada por otro paquete, la respuesta es diferente en ambos casos: 5.1.3.1. Wormhole. Se detiene la recepcin del paquete, y ste queda bloqueado a lo largo de todo el camino que recorre. Cuando se libera el camino de salida, se retoma la transmisin de los flits en todos los encaminadores implicados.

5.1.3.2.

Cut-through. Aunque la cabecera del paquete no pueda avanzar, se siguen recibiendo el resto de los flits del paquete, y se almacenan en un bfer propio del encaminador hasta que el canal de salida que se necesita se libere, en cuyo caso se proseguir con la transmisin de la cabecera del paquete. De esta manera, el paquete cuya cabecera no puede avanzar no mantiene ocupados tantos recursos de la red, con lo que se producirn muchos menos conflictos con otros paquetes.

Si se utiliza cut-through, es necesario que los encaminadores dispongan de bferes con capacidad para almacenar paquetes de manera transitoria, hasta que prosigan su camino; si utilizamos wormhole, ese espacio, en principio, no es necesario (bastara con poder guardar un flit: el que se estprocesando en ese momento). En muchas mquinas se aplican estrategias intermedias entre WH y CT: no hay capacidad para almacenar un paquete completo, pero pueden guardarse varios flits (por ejemplo, pueden almacenarse 4 flits de un paquete a la espera de que quede libre el puerto de salida). Analizado desde otro punto de vista, podemos decir que CT representa un compromiso entre WH y SF. Cuando hay poco trfico en la red, CT se comporta igual que WH: no habr conflictos en el uso de los recursos y, por tanto, no se almacenan los paquetes en los encaminadores intermedios. En cambio, cuando el trfico es elevado CT se acerca al comportamiento de SF: los conflictos son muy habituales en los encaminadores de la red, y los mensajes se almacenan casi siempre. 5.1.4. Conflictos en el uso de recursos: los bferes Los paquetes recorren la red utilizando los enlaces de la misma y los encaminadores de mensajes. La red es por tanto un recurso compartido, que va a ser utilizado simultneamente por muchos paquetes. Cmo hay que afrontar los conflictos que, inevitablemente, se van a producir al usar esos recursos? Ya hemos comentado en qu difieren CT y WH al tratar los conflictos: el paquete que no puede seguir adelante se almacena temporalmente en el encaminador intermedio, o se deja bloqueado a lo largo de toda la red.

En el caso de CT (y, por definicin, de SF) se necesita de un poco de memoria para almacenar transitoriamente los paquetes (o algunos flits de un paquete) en los encaminadores, hasta que la salida correspondiente est libre. Normalmente, los encaminadores no disponen de gran cantidad de memoria para almacenar mensajes, sino que tienen la posibilidad de almacenar unos cuantos bytes o unos cuantos paquetes. Por ejemplo, si los paquetes son de 64 bytes, sera suficiente con una capacidad de 1 o 2 kB (16 o 32 paquetes) por canal; no parece razonable tener una memoria de 1 MB para gestionar un posible bloqueo de 16000 paquetes. Adems, el funcionamiento de los encaminadores debe ser eficiente y rpido, con el fin de que la latencia de los paquetes sea lo menor posible, y para ello lo ms adecuado es que los encaminadores sean lo ms sencillos posibles. Hay muchas maneras de organizar y gestionar esos bferes (normalmente en forma de cola FIFO), y cada una de ellas tiene sus ventajas e inconvenientes. Adems, sea cual sea el nmero de bferes, siempre es posible que una aplicacin genere un trfico muy intenso en un momento dado, que sature la capacidad de guardar ms paquetes. Qu hacer en esos casos? Analicemos esos problemas uno a uno, aunque sea de manera somera. 5.1.4.1. Estructura de los bferes: compartidos o separados El espacio de memoria de los encaminadores puede ser compartido, para paquetes que lleguen por cualquier entrada, o puede repartirse a cada entrada, slo para paquetes que lleguen por cada entrada. Bferes compartidos bferes repartidos Si el espacio de memoria es compartido, la capacidad de almacenamiento disponible se utiliza de manera ms eficaz, ya que siempre hay sitio para un paquete hasta que se agota toda la memoria del encaminador; sin embargo, si lo repartimos entre los diferentes puertos de entrada del encaminador, puede que se llene una de las colas de entrada y no se pueda admitir ms paquetes en esa entrada aunque pudiera quedar sitio libre en otras colas. Pero, por otra parte, la gestin de una memoria comn para todas las entradas es ms compleja, tanto en la carga de nuevos paquetes como en la salida de los mismos: se necesita una cola multientrada, porque la carga de paquetes (de diferente tamao) puede ser simultnea durante varios ciclos y desde varios puertos de entrada; tambin debe ser multisalida, para que un paquete que no puede continuar su viaje no bloquee a otros paquetes

que s podran continuar. Como siempre, se trata de buscar un compromiso entre eficiencia y complejidad. En muchos sistemas, los paquetes tienen diferentes niveles de prioridad; por ejemplo, los paquetes de control (en general, paquetes cortos) pueden tener prioridad sobre los paquetes de datos (ms largos). En esos casos, los bferes se organizan en varias colas, una por cada clase de paquete. 5.1.4.2. Bferes en las entradas o en las salidas Los bferes de espera pueden asociarse tanto a los puertos de entrada como a los de salida. Si se colocan en la entrada, los paquetes pasan directamente al bfer de espera si su salida no est disponible o si hay paquetes esperando en los bferes de esa entrada. En cambio, si se colocan en la salida, primeramente se efecta la operacin de asignacin de puerto de salida (encaminamiento) y luego se pasa, en su caso, al bfer de espera.

Bferes en las entradas

bferes en las salidas

Las ventajas y desventajas parecen claras. La gestin es ms sencilla a la entrada, pero su uso no es tan eficiente (el primer paquete de una cola bloquea al resto de los paquetes, aunque stos tengan camino libre). La gestin de los paquetes es ms eficiente si se colocan a la salida, ya que ya se ha efectuado la asignacin de salida para cuando se bloquea el paquete, pero su estructura es ms compleja, ya que de nuevo deben ser colas multientrada. 6. Eficiencia de la comunicacin: latencia y throughput La red de comunicacin, y junto con ella todo el sistema de paso de mensajes, no es sino un intermediario necesario para poder llevar a cabo la comunicacin entre procesos. Dado que la comunicacin es una parte ms del proceso de ejecucin en paralelo, el subsistema de comunicacin de una mquina MPP debe ser muy eficiente. Dos son los parmetros ms habituales para medir la calidad del sistema de comunicacin de un computador paralelo: la latencia de los paquetes y el nmero de paquetes que puede

gestionar (throughput). La latencia de un paquete define el tiempo necesario para efectuar la comunicacin en la red. El throughput, por su parte, marca el nmero de paquetes que es capaz de gestionar la red sin saturarse. La red ideal es capaz de gestionar un nmero muy elevado de paquetes con una latencia muy baja. Antes de analizar los diferentes parmetros que conforman el tiempo de comunicacin, repasemos algunos conceptos: Anchura de los enlaces: nmero de bits que puede transmitir simultneamente el enlace; por ejemplo, 8 bits (en los enlaces serie, un solo bit). En algunos casos, a este parmetro se le conoce tambin como phit (physical unit). Ciclo de transmisin: tiempo necesario para transmitir un phit. Si el sistema es sncrono, normalmente un ciclo del reloj correspondiente. Ancho de banda de los enlaces: cantidad de informacin que se puede transmitir en un segundo, habitualmente en (Mega) Gigabit/s (109 bit/s). Por ejemplo, enlaces de 10 Gb/s. Ancho de banda til: la informacin a transmitir se estructura en paquetes, y eso significa cierta sobrecarga, ya que adems de los datos hay que transmitir informacin de control (cabecera...). Por ello, para transmitir n bits de datos tenemos que transmitir n + nk bits. El ancho de banda til se define como n / (n + nk). Es obvio que necesitamos que nk sea lo menor posible. Tiempo de encaminamiento (routing time, tr): tiempo necesario en cada encaminador para procesar la cabecera del paquete y decidir por dnde debe ir. Sin duda, interesa que este tiempo sea el menor posible 7. Problemas de la comunicacin La funcin de la red de comunicacin es permitir la comunicacin entre procesadores gestionando un nmero alto de paquetes con una latencia baja. En todo caso, lo que s debe asegurar es que todos los paquetes enviados llegan finalmente a su destino. Por tanto, debemos hacer frente a algunos de los problemas habituales en sistemas distribuidos que ya hemos comentado (por ejemplo en los controladores snoopy): deadlock, livelock y starvation. Analicemos su efecto en un sistema de comunicacin.

7.1.

Deadlock (interbloqueos) Tenemos un deadlock de comunicacin si un grupo de paquetes se impiden el avance entre ellos y quedan indefinidamente retenidos en la red: m paquetes forman un ciclo y cada uno de ellos impide el avance del siguiente, no llegando nunca a su destino (latencia infinita). No es difcil que se produzca esa situacin, en funcin de cmo se gestionen los paquetes en la red. Veamos un ejemplo (comunicacin tipo WH).

Tenemos cuatro paquetes en la red, y los caminos elegidos forman un ciclo cerrado; tal como vemos en la figura anterior, los paquetes se autobloquean y no llegarn nunca al destino fijado. En todos los casos, las situaciones de interbloqueo aparecen cuando se agotan los recursos de la red: en el caso wormhole, los enlaces, y en el caso cut-through, los bferes. Desde luego, el interbloqueo no aparecera nunca si las colas de bferes para guardar paquetes fueran infinitas, pero eso no es posible, y aunque sean grandes siempre cabe la posibilidad de que se llenen. El problema del interbloqueo puede aparecer con ms facilidad si los caminos que siguen los paquetes no estn previamente planificados, es decir, si los caminos se escogen en funcin de la situacin del trfico en la red (por ejemplo, si se utiliza encaminamiento adaptativo). En caso contrario, si los caminos estn prefijados, es ms sencillo evitar el problema. Sea como fuere, necesitamos que los procesos de comunicacin estn libres de este problema, o sepan cmo resolverlo. Antes de comentar las estrategias principales, conviene recordar que tenemos dos alternativas para hacer frente al problema: (a) no utilizar ningn mecanismo de comunicacin que pueda presentar deadlock; y (b) admitir que se pueda producir el bloqueo, y en cambio, detectar si se produce o no, y dar una solucin concreta en ese momento.

7.2.

Problemas de livelock y starvation Existe otro tipo de problemas a resolver relacionados con la comunicacin en la red, aunque de menor importancia que el que hemos tratado. El problema de livelock aparece en la red si los paquetes se mueven, no estn parados, pero nunca consiguen llegar al destino. Por ejemplo, este problema puede aparecer si utilizamos una estrategia de control de flujo que ya hemos citado: si no hay sitio para recibir un paquete s e echa fuera del encaminador se desva de su camino un paquete que hemos recogido antes. A continuacin, el paquete que acabamos de desviar vuelve a solicitar sitio en el encaminador, y desviamos al paquete que acabamos de recoger. Es decir, moverse se mueve, pero no van a ninguna parte. Otro problema que puede aparecer en la gestin de la red de comunicacin es el de starvation (hambruna). La red de comunicacin y los protocolos correspondientes deben tratar a todos los procesadores de la misma manera. Salvo por cuestiones de prioridades, que tienen que estar bien explcitas, no es de recibo que un procesador siempre pueda inyectar sus mensajes en la red mientras que otro nunca pueda hacerlo. Por ejemplo, si existe una zona de la red en la que se concentra el trfico (tal vez en el centro de una malla si todos los mensajes van hacia el centro), hay que asegurar que los procesadores de esa zona de la red puedan inyectar sus mensajes y no estn siempre a la espera de encontrar un hueco.

8. Protocolos de comunicacin El proceso completo de paso de informacin entre dos procesos que se ejecutan en procesadores diferentes, adems de la transmisin fsica en la red de comunicacin, implica una serie de procedimientos a ejecutar tanto en el nodo emisor como en el receptor, procedimientos que no podemos desdear, ya que bien pudiera ocurrir que la latencia de los mismos llegara a superar a la de la propia transmisin fsica de los mensajes. Aunque no vamos a efectuar un anlisis detallado de los protocolos implicados en esos procesos, vamos a acabar este captulo haciendo un pequeo resumen de los mismos. Protocolos estndar en el mundo de las redes de computadores, tales como TCP/IP, no resultan adecuados para los sistemas MPP (aunque se usan en clusters de bajo nivel). La implementacin habitual de los mismos hace entrar en juego al sistema operativo del nodo emisor, para efectuar una copia del mensaje a transmitir de la memoria de usuario a la del propio sistema operativo. El mismo proceso se repite en el nodo receptor.

El overhead aadido por estas intervenciones del sistema operativo puede ser aceptable si la velocidad de transmisin es baja (100 Mb/s), pero no lo es cuando la velocidad es alta (10 Gb/s). En los ltimos tiempos se han desarrollado protocolos ms eficientes para ser usados tanto en sistemas MPP de diseo especfico como en clusters de procesadores. El objetivo de estos protocolos es reducir al mximo el coste (tiempo) de generacin y recepcin de los paquetes que transmite la red, para lo que se eliminan las copias en memoria del S.O. (protocolos de 0 copias) y se gestiona la generacin y la recepcin de paquetes de manera muy eficiente. Dos de las alternativas ms conocidas son VIA (Virtual Interface Architecture) e InfiniBand. Las redes comerciales estndar suelen traer implementados de forma nativa (ms rpido) estos protocolos o los soportan mediante emulacin (ms lento). Adems de ello, en otros casos Myrinet, por ejemplo se utilizan protocolos de comunicacin propios (GM). Aunque hay un poco de todo, aparte de las redes de diseo especfico (propias de los sistemas MPP de alta gama), las redes ms utilizadas en los clusters son Gigabit Ethernet por un lado, barata pero de no muy alto rendimiento (por ejemplo, la latencia de paquetes pequeos con MPI anda en torno a los 50 s o ms), e InfiniBand y Myrinet por otro (ms rpidas que la primera, pero tambin ms caras). InfiniBand es una infraestructura y protocolo de comunicaciones de alto rendimiento; la figura representa un nodo general de un sistema paralelo que utiliza InfiniBand.

Los elementos que forman el nodo pueden ser muy variados: en el caso ms simple, un solo procesador, y en el ms complejo, uno o varios sistemas paralelos (SMP), sitios especficos de entrada/salida o de almacenamiento masivo de datos (RAID), etc. La comunicacin entre los elementos que forman el nodo se realiza mediante conmutadores, mientras que la comunicacin entre no se realiza mediante encaminadores de mensajes. Myrinet es otro referente en las redes de alta velocidad. Los nodos se conectan a la red mediante un NIC (network interface card) de diseo especfico que ejecutan el protocolo de comunicacin (GM); as, el procesador del nodo solamente ejecutar "clculo", y el de la tarjeta de comunicaciones se encargar de todo lo relacionado con la comunicacin (adems, el usuario puede programar las funciones de la tarjeta de comunicaciones, para adaptarla a necesidades concretas). En general, los nodos se conectan en una red de Clos (fat tree), tal como la de la figura (64 nodos). Los enlaces son de 10 + 10 Gb/s y la latencia de paquetes pequeos con MPI llega a estar por debajo de los 2 s

Enlaces para el siguiente nivel del rbol

Red de Clos de 64 nodos (fat tree). Los conmutadores son de 8 + 8 puertos (enlaces bidireccionales).

Вам также может понравиться