La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

arqAva Encaminamiento (Modos) Conectividad-48

Presentaciones similares


Presentación del tema: "arqAva Encaminamiento (Modos) Conectividad-48"— Transcripción de la presentación:

1 arqAva Encaminamiento (Modos) Conectividad-48
Mecanismo Hw/Sw para que la información llegue del origen al destino. Hay que distinguir entre: Algoritmo: Elección del camino y gestión de conflictos Técnica: Modo de propagar la información 1 4 7 6 5 9 2 8 3 Conmutación de paquetes Redes directas Conmutación de circuitos Redes indirectas Los inicios de las redes de supercomputadores toman ideas de las redes LAN y las adaptan. Cuando indicamos “Técnica de propagación”, hacemos referencia al nivel de “enlace”, es decir, cómo se atraviesa un switch. Cuando hablamos de “Algoritmo”, hacemos referencia al nivel de “red”, es decir, cómo se atraviesan varios swuitches hasta alcanzar el destino. En conmutación de circuitos (protocolos orientados a conexión), puede enviarse una cabecera con ruta o destino que va abriendo camino, reservando recursos y devuelve un ACK cuando ha establecido el enlace. A continuación, todo el mensaje se envía por dicho camino. En principio es eficiente cuando se cuenta con mensajes infrecuentes y cortos. Una pega es que gestiona malamente la saturación de forma dinámica ya que el enlace está reservado desde el inicio de la comunicación hasta el final. En redes paralelas se suele utilizar conmutación de paquetes, aunque si miramos con detalle, cada paquete es como si se enviase con el modelo de conmutación de circuitos. Lo veremos en la transparencia siguiente.

2 arqAva Encaminamiento (Algoritmo) Conectividad-49
0,0 0,1 0,2 0,7 0,3 0,4 0,5 0,6 1,0 2,0 7,0 3,0 4,0 5,0 6,0 8x8 = 64 nodos Diámetro = 7+7=14 Numerar nodo 0..63 fila col 0..7 C D En origen: C[3,4] => D[1,6] A B Dinámico: A[2,3] => B[5,1] E datos L 5,1 SiCortex, Intel QuickPath, Epiphany … Algo: MovCol+MovFila E datos L 1,6 ,N,N,E,E Las redes directas, al tener una estructura regular y determinada de forma estática, pueden tener algoritmo de encaminamiento muy eficientes derivados de las teorías de grafos. En el caso que se presenta en esta transparencia, como en muchos otros ejemplos que veremos, es fundamental numerar adecuadamente cada nodo para facilitar, en la medida de lo posible, el encaminamiento y su eficiente implementación directamente sobre hardware. En este modelo se entiende que los paquetes “siempre” llegan a su destino ya que al más bajo nivel “enlace” el sistema garantiza entrega segura (para eso está el campo de control de errores “E”), incluso ante la presencia de errores temporales. Si se detecta fallo en la transmisión entre un nodo y el siguiente, simplemente se reenvía. Si el error es permanente no contemplamos sistemas tolerantes a este tipo de fallos y se daría un aviso al Sistema Operativo para poder subsanar el error a otro nivel. Nosotros no contemplaremos, en general, algoritmos de encaminamiento adaptativos, es decir, apenas hablaremos de interbloqueo y prácticamente nada de gestión de la congestión de comunicaciones. E datos L 1,6 ,N,N,E N[00], E[01], S[10], O[11]

3 arqAva Encaminamiento (Epiphany) Conectividad-50
Configuración máxima 256Placas x 16 => cores 64x64 => cores Algo de memoria local por core Proceso ejecutándose en core [1, 2] Direcciones de 32 bits fila col dirMemLocal Teóricamente 1 Mbyte por core Para esta transparencia y siguientes, relativas a la placa Parallella, se recomienda leer la primera sección del manual de la práctica “Visión global de la placa”. Podríamos preguntarnos por qué se reserva el core [0, 0] para indicar acceso a la memoria local del core donde se está ejecutando un proceso. Tenemos que pensar que en esta placa lo normal es enviar un mismo programa a todos los cores donde queremos ejecutar nuestra aplicación. De esta forma, todos los procesos ejecutan el mismo código y los accesos a la memoria local de cada core siempre lo serán a direcciones que empiecen con “000000_000000” no siendo necesaria una reubicación ni estática ni dinámica de estos accesos dependiendo del core en que me esté ejecutando. HHHHH  R/W en mi memoria local HHHHH  R/W en memLocal del core [62,61] R/W Remotos => EnvíoRecepción de mensajes

4 arqAva Encaminamiento (Epiphany) Conectividad-51
maestro esclavo 58 58 ? Ubicación de la placa int *sumaRemota = (int *) 0x8cb06000; int i, calculo = 0; // Maestro // Esclavo for (i=0; i<N; i++) calculo++; calculo = *sumaRemota; *sumaRemota = calculo; Aquí ponemos un código muy parecido al que probaremos en prácticas. Se recomienda leer la sección 8 de la práctica “Una primera comunicación entre nodos”

5 arqAva Encaminamiento (Epiphany) Conectividad-52
int a; 32KB int b; a = *bPtr; Epiphany-III Arbitraje Round Robin Broadcast Dir Dato Ctrl [32,32] R fila col dirMemLocal [39,39] Finalmente aquí puede verse cómo se utiliza la red para que cualquier proceso ejecutándose en cualquiera de los cores, pueda leer y escribir en la memoria local de cualquiera de los otros cores. Tener presente que una vez leído un dato remoto, si alguien lo cambia, yo seguiré teniendo el dato antiguo. Es decir, no se mantiene una coherencia global del sistema de memorias locales. No se dispone de información precisa del formato de los mensajes que se cursan por la red. Cuando se genera una lectura remota, la dirección del nodo origen viajará dentro del campo de datos del mensaje (64 bits centrales), pero no se sabe exactamente en qué posición. En cuanto a la indicación de que se trata de una lectura, muy posiblemente vaya indicado en el campo de Control “Ctrl”.

6 arqAva Encaminamiento (wormhole) Conectividad-53
En conmutación de paquetes veremos dos técnicas: Origen Almacenamiento y reenvío Destino Buffer de paquete Los mensajes se dividen en paquetes ( bits) y se envían paquete a paquete Buffer de flit Los paquetes se dividen en flits (2..64bits) y se envían flit a flit 2 1 2 1 1 2 1 Elevada latencia (3*Tiempo trans. Paquete “Ttp”) Origen “Wormhole” Destino Esta redes suelen estar especializadas en la expedición rápida de paquetes. El concepto de mensajes muy largos que se parten en paquetes (como en Internet) se dejaría para un nivel superior. Aquí los paquetes, a diferencia de TCP/IP donde pueden llegar a ser de 64KBytes, suelen ser cortos. Como ejemplo, en el caso del procesador Alpha pueden variar entre 39 y 741 bits. Como vemos, los paquetes se dividen a su vez en flits que son la unidad del algoritmo de encaminamiento. El primer flit en el que se divide un paquete incorpora información sobre el destino para poder llegar hasta él. Una gran ventaja de este sistema es que, en principio, es suficiente con tener un buffer de flit por cada puerto de comunicaciones (dos si consideramos enlaces bidireccionales). Hay que tener en cuenta que uno de los quebraderos de cabeza en estos sistemas es la gestión de buffers y políticas de arbitraje para seleccionar qué paquete expedir de los múltiples almacenados y que compiten por un puerto de salida. En el caso del Alpha 21364, los flits son de 39 bits: 32 de datos y 7 de control de errores. Con estos datos, los paquetes que gestiona este procesador constan de 1, 2, 3, 18 o 19 flits. Este método de “Wormhole routing” consigue disminuir sensiblemente la latencia (fundamental en supercomputación). Este concepto también existe como método de comunicación entre los backbones de Internet mediante el protocolo “MPLS Multi Protocol Label System”. ¿Similar a IP/ATM MPLS? Mejora la latencia (2*Tiempo trans. Flit + Ttp)

7 arqAva Encaminamiento (wormhole) Conectividad-54
Aquí vemos que, a su vez, los flits pueden dividirse en Phits, que es la unidad de transferencia a nivel físico “enlace”. En este caso se muestra un protocolo de Intel donde, además, los phits pueden ser de longitud variable. La variabilidad del phit se incluyó para gestión de la tolerancia a fallos. Si falla una línea del canal de comunicaciones que supuestamente tiene 20 hilos de datos, se puede bajar el phit a la mitad (eludiendo utilizar la línea que falla) y seguir comunicándome con las 10 líneas que funcionan OK. Eso sí, reduciré a la mitad el ancho de banda. Hay que resaltar que cuando aparece este protocolo, la línea de caché de un procesador tipo de Intel es de 64 Bytes, lo que supone que leer o escribir una línea de caché supone un paquete de 8 flits. Header Payload CRC 8 64 20 | 10 | 5 Flit Phit

8 arqAva Encaminamiento (ejemplo) Conectividad-55
Distancia = 6 AlmaReen => nseg Wormhole => nseg casi 5 veces mejor Almacena y Reenvío Toro2D 8*16 Alpha 21364 Diámetro = 12 Flit = 39 b Paquete = 702b Ancho Banda = 3,2Gb*seg Tflit = 12,1875nseg Tpaq = 219,375nseg AlmaReen => 2.632,5 nseg Wormhole => ,4 nseg Latencia + 7 veces mejor Wormhole Distancia

9 arqAva Encaminamiento (Interbloqueo) Conectividad-56
Si utilizásemos un algoritmo de encaminamiento que fuese, para el caso de la figura, como ir en el sentido de las agujas del reloj, si coincide un paquete que quiere ir a D llegando desde la izquierda de A, otro que quiere alcanzar C llegando a B desde arriba y así sucesivamente, vemos que después de unos pocos ciclos, el sistema se interbloquea al llenarse el buffer de flit asociado a cada puerto de comunicaciones.

10 arqAva Encaminamiento (Canales virtuales) Conectividad-57
B A D B A D Los canales virtuales consisten en tener capacidad de almacenamiento para varios flits (tantos como canales virtuales tengamos en cuenta) y, mediante un algoritmo de planficación, multiplexemos el canal físico único entre los diversos canales virtuales existentes. Se ralentizará la transmisión de flits, pero el sistema seguirá funcionando. ¿Otra forma de evitar el interbloqueo? Una forma de evitar el interbloqueo

11 arqAva Encaminamiento (No interbloqueo) Conectividad-58
? D C D C A B D A C B Full Duplex C D ? B A Hay algoritmos, en general los que están ordenados por dimensiones, que evitan el interbloqueo. No entraremos en la teoría que respalda esta afirmación. Algoritmo ordenado por dimensiones

12 arqAva Encaminamiento (No interbloqueo) Conectividad-59
Algoritmo ordenado por dimensiones

13 arqAva Redes directas (array, anillo) Conectividad-60
Grado, diámetro, escalable, … ARRAY LINEAL 1 2 3 4 5 6 7 ANILLO (DE GRADO 2) 1 2 3 4 5 6 7 ANILLO (DE GRADO ‘n’ 3) 1 2 3 4 5 6 7 Hay que tener en cuenta que un array lineal no es un bus. El array lineal de la figura tiene un perfil de comunicaciones N  N y puede mantener 14 comunicaciones simultáneas frente a una sola en un bus. El array lineal, pese a su mal diámetro, es importante tanto para máquinas tipo SIMD (especialmente sistólicos), así como para soluciones tipo pipeline. En este tipo de arquitecturas, los procesos suelen comunicarse tan sólo con su vecino de la izquierda o de la derecha, de forma que el problema del diámetro grande para N grande, no es tal. El anillo baja el diámetro del array lineal a la mitad, pero ahora se complica algo el algoritmo de encaminamiento. Una red en anillo puede mejorarse (si nos fijamos en el diámetro) con nodos que tengan un grado mayor que dos. En el ejemplo de la figura de la derecha se juega con nodos de grado 3 que, tras configurarse en modo anillo, disponen de un enlace extra. La idea de este enlace extra es comunicarme directamente con algún nodo más distante que mis vecinos del anillo y así tener un atajo para llegar más rápido a nodos más distantes. En el ejemplo de la figura el diámetro en el anillo pasa de ser 4 a la izquierda a 3 en el caso de la derecha. ¡Ojo, este diámetro de 3 veremos que podemos bajarlo fácilmente a 2!

14 arqAva Redes directas (array, anillo) Conectividad-61
“Navigation in a small world” – Jon M. Kleinberg Nature – 24 Agosto 2000 La idea que subyace en el anillo de grado “n” es la misma que suele observarse en la propia sociedad. Solemos tener bastantes amigos o conocidos próximos (vecinos, compañeros de trabajo, etc.), pero también contamos con amistades en otras provincias o países. A partir de esta constatación, está la idea de que “el mundo es un pañuelo” y que una inmensa mayoría estamos conectados con cualquier otra persona del planeta a tan sólo una distancia de 6 saltos (pasando por cinco intermediarios). Esta teoría ya apareció en y hay cierta constatación experimental analizando los contactos de la red social Facebook. ?

15 arqAva Redes directas (anillo de grado “n”) Conectividad-62
N = 8 n = 3 Salto 2 Salto 3 Salto 4 1 1 3 2 1 2 2 3 d = 3, d = 1,71 d = 3, d = 1,71 d = 2, d = 1,57 Aquí podemos observar distintas formas de conectar el enlace extra del anillo de tal forma que acabamos encontrando una configuración donde el diámetro nos baja a un mínimo igual a 2. Se corresponde, para este caso, con un patrón de conexión que hace que el enlace extra de cada nodo se conecte con otro que está a una distancia (salto) de 4 nodos. También podemos observar un detalle no menor. Respecto de la topología de la red, vemos que la red de la izquierda supone que tenemos dos puntos de cruce para los enlaces, en la figura del centro 4 cruces y en la figura de la derecha 6 cruces (si los queremos organizar como cruces de 2 en 2) o 4 cruces si es de cuatro cables. Hay que tener en cuenta que esto supone tener que diseñar el sistema con varias capas si, por ejemplo, se trata de un multicore y la red está dentro del propio procesador (NOC Network On Chip).

16 arqAva Redes directas (anillo de grado “n”) Conectividad-63
N = n = 3 Salto 2 Salto 3 Salto 4 d = 6, d = 3,2 6 5 d = 5, d = 2,67 4 d = 4, d = 2,27 Aquí probamos con un anillo mayor (16 nodos) buscando si podemos confirmar que el diámetro alcanzable con este tipo de redes sea log2N-1. Salto 5 iguala y 7 y 8 empeoran

17 arqAva Redes directas (anillo de grado “n”) Conectividad-64
N = n = 4 Salto 3 Salto 4 Salto 5 3 d = 3, d = 2 d = 4, d = 2,13 4 4 d = 4, d = 2,13 Aquí seguimos corroborando la posibilidad de alcanzar un diámetro igual a log2N-1. ¿Cómo podría ser N=32 y n=5?

18 arqAva Redes directas (anillo de grado “n”) Conectividad-65
N = n = 5 4 4 Finalmente, terminamos este desarrollo para el caso de N=32 constatando que el diámetro es log2N-1. El problema de esta red es que no escala bien respecto del grado: para 64 nodos necesitaríamos grado 6, para 128 grado 7 y para 256 grado 8, lo que empieza a ser un grado excesivo. ¿ Escalable ? d = 4, d = ???

19 arqAva Redes directas (conexión total) Conectividad-66
Grado, diámetro, escalable, … 1 2 3 4 5 6 7 El anillo de grado “n” llevado al límite sería una red totalmente conectada: cada nodo se comunica con todos los demás. Conseguimos un diámetro excelente “1”, pero a costa de un grado prohibitivo y un número de enlaces cuadrático.

20 arqAva Redes directas (Gráfica) Conectividad-67
Moverse por aquí con menor grado En esta transparencia se observa cómo hemos conseguido ir disminuyendo el diámetro a costa de aumentar el grado. La idea, que desarrollaremos en las transparencias siguientes, es conseguir diámetros bajos manteniendo el grado en parámetros razonables [2..6].

21 arqAva Redes directas (árbol, …) Conectividad-68
Grado, diámetro, escalable, … ÁRBOL BINARIO K=1 K=2 K=3 K=4 Cuello de botella [tráfico aleatorio] En esta estructura vemos que tenemos un grado variable: nodos hoja de grado 1, nodos intermedios de grado 3 y nodo raíz de grado 1. En cualquier caso, grado más que aceptable. El diámetro, supuesto que tenemos un árbol perfectamente equilibrado, será el doble de la profundidad del árbol. La profundidad “k” de un árbol de estas características es log2(N+1), lo que nos daría un diámetro de 2*(k-1). Para tener una idea rápida de la mejora de esta red respecto de un anillo. En un anillo de nodos el diámetro es 512, mientras que un árbol equivalente con nodos, el diámetro se reduce a 18. En definitiva, hemos conseguido rebajar el diámetro de complejidad lineal a complejidad logarítmica. ¿Cómo encaminar A  B?

22 arqAva Redes directas (árbol, …) Conectividad-69
Cuello de botella [tráfico => cada nodo un msj al resto: 31 nodos] 240 15 nodos 168 56 #msj? 36 84 14 30 #msj? Uno de los problemas más serios del árbol es que, con un tráfico más o menos uniforme, los enlaces superiores soportan mayor tráfico que los inferiores, tendiendo a congestionarse, sobre todo, los enlaces del nodo raíz (todos los mensajes del subárbol izquierdo suyo destino sea un nodo del subárbol derecho, han de subir hasta el nodo raíz para luego bajar por la derecha para llegar al destino). En el ejemplo de la figura se contabiliza el ancho de banda soportado por cada enlace para el caso de un árbol de 15 nodos y para otro de 31 nodos. Hay que tener en cuenta que solo estamos representando los mensajes que suben hacia la raíz. Si nos fijamos en el caso de 15 nodos, desde los nodos hoja suben 14 mensajes (uno para cada uno de los nodos del árbol salvo para mí mismo). Los 36 mensajes que aparecen en el enlace del nivel superior son: 12 que genera el propio nodo (hay que tener en cuenta que aunque envía 14 mensajes al resto del árbol, dos de esos mensajes no suben ya que van dirigidos a sus dos hijos y fluyen hacia abajo). 12 de los 14 que le llegan del nodo hijo izquierdo. Dos mensajes no siguen hacia arriba ya que uno irá dirigido al propio nodo y el otro al nodo hijo derecho. 12 de los 14 que le llegan del nodo hijo derecha.

23 arqAva Redes directas (árbol, …) Conectividad-70
Encaminar: N=15  0..14 ¿Quién es quién? δ = | subÁrbol | 7 7 3 1 3 11 2 1 4 6 5 8 10 9 12 14 13 Up Aquí reflejamos cómo podría ser un algoritmo de encaminamiento: Numeramos los nodos como si fuese a recorrerse el árbol en modo “inorden” Cada nodo, además de saber su identificador [0..14], conoce el número “δ” de hijos que tiene Ahora es fácil saber si el nodo destino de un mensaje que pasa por mí es para mí (me lo quedo), alcanzable [yo-1..yo-δ] en mi subárbol izquierdo, alcanzable [yo+1..yo+δ] en mi subárbol derecho, o tengo que dirigirlo hacia mi padre - δ Izq + δ Der

24 arqAva Redes directas (árbol, …) Conectividad-71
Grado, diámetro, escalable, … ÁRBOL BINARIO EQUILIBRADO “Fat Tree” 2 4 ÁRBOL BINARIO K=1 K=2 K=3 K=4 ESTRELLA Cuello de botella [tráfico aleatorio] Una forma de lidiar con el problema del cuello de botella en una red de tipo árbol es, por ejemplo, aumentar el ancho de banda de los enlaces según se va subiendo de nivel. En la figura se muestra un ejemplo en el que el ancho de banda se va duplicando. Este tipo de red se denomina “Fat Tree”. Una degeneración del árbol sería la configuración en estrella. Un nodo raíz que se comunica con todos y cada uno de sus hijos. Aquí el diámetro es 2, pero el grado se hace intolerable. ¿Cómo encaminar A  B?

25 arqAva Redes directas (árbol, …) Conectividad-72
32 16 8 Fat Tree ¡Indirectas! A B C D E F En muchas redes de supercomputadores se utiliza una versión de la red “Fat Tree” consistente en crear un árbol donde los nodos de cómputo sólo residen en el nivel inferior (nodos hojas) y en los niveles intermedios lo que se coloca es una red en árbol de routers. Este tipo de red empieza a parecerse más a una red indirecta. Hay que tener en cuenta que aquí se complica el algoritmo de encaminamiento. Aquí, al hablar del diámetro, podemos decir 2 (se atraviesan 2 enlaces) o mejor sería decir que el diámetro es de 3 (se necesitan atravesar 3 routers para alcanzar un nodo que no cuelgue de mi mismo router). Este tipo de red se utiliza mucho en supercomputadores conectados con Infinibad debido a que: Está libre de interbloqueos lo que hace innecesario el uso de canales virtuales Es tolerante a fallos: Existen caminos alternativos Sostiene un elevado ancho de banda entre las dos mitades del árbol ¿ A0..A7 + B0..B7  C0..C15 ? ¿Más nodos más niveles? => más latencia

26 arqAva Redes directas (árbol, …) Conectividad-73
Dragonfly “high radix routers” local channels Gb/s 16 | 32 | 64 Dragonfly es un propuesta de red alternativa a Fat Tree que puede llegar a ser muy costosa si hay un número de niveles elevado. Además, el encaminamiento estático puede hacer que el rendimiento baje. En esta red: La red se configura como un conjunto de grupos conectados todos con todos La topología interna de cada grupo puede ser cualquiera: se recomienda “flattened butterfly” El foco se pone en reducir el número de enlaces largos y el diámetro Requiere mecanismos de encaminamiento adaptativo, así como un control avanzado de la congestión para obtener buenos rendimientos

27 arqAva Redes directas (malla) Conectividad-74
Grado, diámetro, escalable, … K=3 MALLA 3D MALLA 2D K=1 K=2 Encaminamiento ordenado por direcciones O(1,1,1) D(3,3,3) O(2,2,1) D(3,3,2) ¡Colisión! La malla 2D puede verse como una réplica de un array lineal en la segunda dimensión y la malla 3D como una réplica de la malla 2D en la tercera dimensión. El grado es irregular: en el caso de M2D hay nodos con 2, 3 y 4 enlaces; en el caso de la M3D hay nodos con 3, 4, 5 y 6 enlaces. En definitiva, redes de grado 4 y 6 que es perfectamente asumible. El diámetro, visto simplemente un algoritmo ordenado por direcciones, se ve fácilmente que es (para el caso de mallas perfectas: n*n y n*n*n) igual a  (n-1)*k, es decir, el número de dimensiones por lo que me cuesta, como máximo, moverme en cada una de las dimensiones. Si mantengo mallas perfectas, para el caso de M2D podría configurar redes con 4, 9, 16, 25, … , 100 nodos, es decir, siempre de lado la raíz cuadrada del número total de nodos. En el caso de M3d podría configurar redes con 8, 27, 64, 125, 216, … , 1000 nodos, es decir, siempre de lado la raíz cúbica del número total de nodos. Si quiero más de nodos, debería pasar a tener Podría sacrificarse un poco la idea de malla perfecta y pasar a una M3D de dimensiones 10 * 10 * 11 para tener en total nodos sin que se resienta el algoritmo de encaminamiento. Con un algoritmo ordenado por direcciones se demuestra que este tipo de red no presenta interbloqueos. Si comparamos con un árbol de nodos con diámetro 18, vemos que con una malla 3D podemos disponer de nodos y diámetro 27 ¿Cuál es entonces la mejora de este tipo de red? Lo veremos en la transparencia siguiente y tiene que ver con los cuellos de botella. M3D *10*10 => D=27 ¿ Interbloqueos ? ¿Escalabilidad cuadrática o cúbica? ¿ Cuello de botella?

28 arqAva Redes directas (malla3D) Conectividad-75
¿Cuello de botella tráfico NN? 18 ¡ 18 msj por todos los enlaces en cada sentido ! En esta transparencia se ha hecho un seguimiento de cómo se cursarían mensajes generados por cada nodo de la red que inyecta 26 mensajes a la red (uno destinado a cada uno de los nodos de la red menos para él mismo). El resultado es que, para este tipo de tráfico, el número de mensajes que atraviesa cada enlace es el mismo (18), lo que permite que todos los enlaces trabajen con el mismo ancho de banda y se minimice el efecto cuello de botella.

29 arqAva Redes directas (toroide) Conectividad-76
Grado, diámetro, escalable, … Cables largos vs cortos Muchos cruces TOROIDES (2D y 3D) K=1 K=2 Las redes de tipo toroide lo que hacen es partir de una malla de 2 o 3 dimensiones y hacer regular el grado de todos los nodos, de forma que los enlaces no utilizados en los nodos frontera, conectarlos para convertir los arrays lineales que hay en cada dimensión de una malla en anillos. Con este cambio el diámetro se baja a la mitad. Esta mejora tiene sus pegas: Cables cortos y algunos más largos: Veremos una solución en la transparencia siguiente Aparecen cruces de cables donde no los había Una característica que vemos en este tipo de red (que ya también existía en las mallas), es que dentro de la red de toro podemos ver embebida otro tipo de red: un anillo. Esta cualidad añade versatilidad al tipo de red. T3D *10*10 => D=15 ¡ Anillo embebido !

30 arqAva Redes directas (toroide) Conectividad-77
Todos los cables de igual longitud  Toroide plegado 12 15 13 14 8 11 9 10 3 1 2 4 7 5 6 8 4 9 5 1 10 6 2 11 3 7 12 13 14 15 2015

31 arqAva Redes directas (WK-Recursivo) Conectividad-78
? Grado, diámetro, escalable, … Grado 3 (3,1) (3,3) (3,2) ¿Grado 5? (4,3) Grado 4 (4,1) (4,2) Este tipo de red se basa en grupos base de nodos de grado “W” conectados todos entre sí (por lo tanto formados por W nodos) y aumentando de forma recursiva “K” la topología de la red para ir disponiendo de más y más nodos. Vemos que esta red tiene grado irregular, pero no tanto como las mallas. En este caso, con independencia del tamaño de la red, el número de nodos que desaprovecha uno de sus enlaces se reduce a “W”. En los casos de las figuras de abajo, 4 enlaces ya se disponga de 4, 16 o 64 nodos. En la tabla siguiente podemos ver cómo obtener la expresión general del diámetro de esta red: N W K D 3k W K 2k-1

32 arqAva Redes directas (WK-Recursivo) Conectividad-79
(5,1) (5,2) WK (4,5) 1024 => D=31 Recursividad  Diámetro 1 3 7 15 31 Grado 3 9 27 81 243 Grado 4 4 16 64 256 1024 Grado 5 5 25 125 625 3125 Estas redes se adaptan muy bien al diseño en dos dimensiones. Vamos a comparar con M2D y Toro2D para redes de 64, 256 y nodos: Nodos M2D T2D WK Podemos ver que es bastante mejor que la malla y algo mejor que el toro teniendo en cuenta que presenta muy pocos cruces de enlaces respecto del toro. Falta ver cómo se comporta frente al tráfico intenso de mensajes.

33 arqAva Redes directas (WK-Recursivo) Conectividad-80
¿Cuello de botella tráfico NN? 16 5 9 Siguiendo el mismo patrón de comunicaciones que ya vimos en la malla 3D, podemos apreciar que hay enlaces que tienen que tolerar más tráfico que otros. No podía ser todo bueno.

34 arqAva Redes directas (hipercubo) Conectividad-81
‘N=2k’ nodos, ‘k’ dimensiones = log2 N Dim3 Dim1 Dim2 Diámetro = log2 N Grado = log2 N Fácil encaminar Dim4 Esta red también se define de forma recursiva. Un hipercubo de dimensión uno es un array lineal de tan solo dos nodos. Un hipercubo de dimensión dos es la interconexión de dos hipercubos de dimensión uno conectados entre sí a través de esa segunda dimensión. Un hipercubo de dimensión tres es la interconexión de dos hipercubos de dimensión dos conectados entre sí a través de esa tercera dimensión y así sucesivamente. En cada dimensión por lo tanto solo hay espacio para dos nodos, en el caso de dimensión cuatro: Izquierda y derecha Arriba y abajo Delante y detrás Dentro y fuera Es una topología que se comporta muy bien en cuanto al diámetro, pero no escala nada bien en cuanto al grado. Para un número bajo de nodos se comporta muy bien. Teniendo en cuenta que podemos disponer de forma asequible de procesadores de 4 u 8 cores con 4 enlaces de comunicaciones, podríamos configurar un hipercubo de dimensión 4 que contase con 16 procesadores que nos diesen para una máquina de entre 64 y 128 cores. Más allá la cosa se complica mucho. Esta topología se estuvo utilizando por máquinas de SGI hasta el año Escalable a costa de demasiado grado Topología cada vez menos utilizada

35 arqAva Redes directas (hipercubo) Conectividad-82
Encaminamiento en HIPERCUBO (Sea N=16) 1 2 3 4 1. Numerar nodos en binario. Nodos adyacentes difieren en un bit (el asociado a la dirección que les une) 0000 4321 1010 1111 0101 0111 0110 0011 Nodo actual 0111 Nodo destino 1010 2. Enviar mensaje por el enlace asociado a la menor dirección donde no coinciden bit del nodo actual y bit del nodo destino 0001 0010 0100 1000 ¿ Realizar ORX ? 0111 ORX 1010 = 1101 ¿Caminos distintos? Como puede apreciarse en la figura, a pesar de que pudiese parecer complicado en un principio encaminar en esta red, resulta ser bastante sencillo y muy fácil de implementar en hardware. El número de caminos distintos desde un determinado nodo origen a otro destino vendrá determinado por el número de bits que cambian fijándonos en la dirección origen y en la dirección destino, si hay k bits que son distintos, el número de caminos distintos será de k! En el caso del hipercubo de dimensión 4 puede haber 1, 2, 6 o 24 caminos distintos según los casos. 0110 1010 0010 1010 1010

36 arqAva Redes directas (hipercubo con ciclos) Conectividad-83
org Cada nodo un anillo ¡ Grado 3 ! dst El mayor inconveniente del hipercubo puro es que el grado no escala. Enseguida se sobrepasa el grado 6, configuración que admite tan solo 64 nodos que está muy lejos de la demanda actual de los supercomputadores. Para solventar esta dificultad, como siempre perdiendo en algo, se propone esta topología de red: hipercubo con ciclos. La idea es sustituir cada nodo de un hipercubo puro, que denominaremos HiperNodo, por una red de nodos conectados en anillo y de dimensión igual a la del hipercubo de origen (en el ejemplo de la figura que es un hipercubo puro de dimensión 4, cada HiperNodo se sustituye por un anillo de 4 nodos). Dentro de cada anillo que sustituye a un HiperNodo, los nodos serán siempre de grado 3 utilizándose el enlace que queda libre, tras conectar al nodo en el anillo, para conectarse al resto de HiperNodos en una de las dimensiones del mismo. Vamos a intentar calcular el diámetro de este hipercubo con ciclos para un caso de distancia máxima como el mostrado en la figura y que, a nivel de hipercubo puro supondría dar 4 HiperSaltos. Un posible algoritmo de encaminamiento, que nos permite aproximarnos a calcular el diámetro, sería uno avaricioso en el sentido de empezar saliendo del HiperNodo desde el nodo origen transmitiendo el mensaje por el enlace del nodo que me saca del anillo y me permite alcanzar el HiperNodo siguiente. A partir de ahí, hasta alcanzar el HiperNodo destino, habría que moverme dentro de un anillo a un nodo adyacente para saltar al HiperNodo siguiente. Al llegar al HiperNodo destino, habría que moverse hasta el nodo destino dentro del anillo. El número total de saltos (diámetro) consta de tres partes: en el HiperNodo origen tan solo es necesario dar un salto, en cada HiperNodo intermedio (ni el origen ni el destino) hay que dar dos saltos (uno dentro del anillo y otro para saltar de HiperNodo) y finalmente en el HiperNodo destino tengo que moverme por un anillo. Si la dimensión del hipercubo puro es k, habrá k-1 HiperNodos intermedios y el diámetro será igual a: 1 + (k-1) * 2 + k/2 ¿ Diámetro ?

37 arqAva Redes directas (hipercubo con ciclos) Conectividad-84
Grado, diámetro, escalable, … K=3 2 4 3 5 1 6 HIPERCUBO CON CICLOS HiperNodo Saltos Origen 1 Intermedio 2 K/2 Destino En esta transparencia podemos comprobar visualmente que la fórmula con la que hemos calculado analíticamente el diámetro es correcta. Con el hipercubo con ciclos mantenemos constante el grado (siempre 3), a costa de empeorar el diámetro. Un problema adicional del hipercubo con ciclos es que crece de una forma un tanto extraña: k*2k. Podemos configurar hipercubos con ciclo con un número de nodos como los siguientes: 64, 160, 384, 896, 2048, … Para tener una idea de como empeora el diámetro, un hipercubo puro de dimensión 10 me permite configurar una máquina con nodos y diámetro 10. El hipercubo con ciclos que más se aproximaría en cuanto a número de nodos sería el de dimensión 7 que tendría 896 nodos y su diámetro sería 16. Diámetro = 1 + (k-1) * 2 + K/2 ¡ Comprobemos !

38 arqAva Redes directas (Grafo de Kautz) Conectividad-85
¿Diámetro? Array => 11 Anillo => 6 M2D => 5 T2D => 3 Aquí tenemos la red en forma de grafo de Kautz. No la vamos a desarrollar, tan sólo ver cómo puedo configurar máquinas con un número determinado de nodos y el diámetro que se consigue en función de tener nodos de grado 2, 3 o 4. Volver a resaltar que, realmente, cada nodo es como si tuviese un enlace bidireccional y cuatro unidireccionales. En el ejemplo de la figura es fácil comprobar que el diámetro es tan solo de 2. Si nos fijamos en el nodo 01, desde dicho nodo podemos alcanzar con un salto cualquier nodo de la columna del oeste (nodos 10, 13 y 12) y desde ellos alcanzar con un solo salto cualquiera de los nodos restantes. Dada la simetría de la figura, lo que hemos considerado para el nodo 01 es igual de válido para el resto de nodos.

39 arqAva Redes directas (Un ejemplo) Conectividad-86
¿Cómo conectar unos nodos? Topología Diámetro Grado Total 1 1.023 Anillo10 9 10 Anillo2 512 2 Array lineal 2* Enlaces 5.120 1.024 WK 4ary 5rec 31 4* M2D 32*32 62 Árbol 18 3* 2.048 1.984 1.023 M3D 10*10*10 27 6* T3D 10*10*10 15 6 3.000 2.700 Aquí tenemos finalmente una tabla resumen donde puede apreciarse numéricamente, cómo varía el diámetro y el grado de las redes vistas cuando queremos configurar una máquina más o menos grande con unos nodos. Hipercubo 10 10 HiperCiclo 7 3 896 N Grafo Kautz 6 972 N 16 1.358 1.344 5.120

40 arqAva Redes directas (Tabla de Parámetros) Conectividad-87
Topología Grado Diámetro Nº de nodos Array lineal Anillo Anillo de grado ‘n’ Árbol binario Árbol binario equilibrado Estrella Malla Toroide Hipercubo Hipercubo con ciclos N 2 N-1 N/2 n=log2N n-1 2K-1 3 2*(K-1) 2K nK 2*K K*(n-1) K*  n/2  K K*2K 2*K  K/2 

41 arqAva Perspectiva histórica Conectividad-88
MIMD HWANG (1993) IDENTIFICA TRES GENERACIONES: Hipercubo con Encaminamiento Sw Malla con Encaminamiento Hw (Sw de grano medio) µP y comunicaciones en el mismo chip (grano fino) Visto el tema de redes directas, conviene revisitar esta transparencia que apareció en el tema de Introducción. A finales de (cuando los quadcore de Intel llevaban casi dos años en el mercado), se pronosticaba que en unos años (es decir en torno a 2.017) habría cientos de cores en un desktop (ordenador de sobremesa). Lo que realmente ha sucedido es que los ordenadores de sobremesa se han quedado en procesadores de 4..8 cores, pero empiezan a abundar procesadores más específicos (especialmente para bajo consumo), que aglutina, 256, 512 y hasta 1024 cores). Multiprocessor systems-on-chips (MPSoCs) Hoy núcleos ¿Se llegará a 400 en 2020?

42 arqAva Redes indirectas (Barras cruzadas) Conectividad-89
¿ Latencia ? P1 Perfil N*M O (N2) Muchas patas P2 P3 “Crossbar” Pn M1 M2 M3 Mm 8x8 OnChip mm2 => 5 núcleos W => 2 núcleos Funcionalidad de los conmutadores simples: Veremos ahora redes indirectas (muy poco) empezando por la que ofrece la posibilidad de un mayor ancho de banda: una red crossbar o de barras cruzadas. Podemos ver la red de la figura como un sistema que permitirá a cualquier core leer o escribir una posición de memoria de cualquiera de los módulos de memoria a los que estemos conectados. Cuando un procesador (sea µP1) quiere, por ejemplo, escribir un valor en una posición de memoria (sea en M2), mandará un mensaje con la dirección del dato y el propio dato a escribir. Una serie de bits de la dirección indicarán en qué módulo se desea escribir. Cuando este mensaje llega al primer conmutador, ve que no se desea escribir en el módulo que él controla (M1) y dejará pasar el mensaje al siguiente conmutador de la derecha que al ver que se desea escribir en el módulo que él controla (M2), conmutará y hará llegar la petición de escritura al módulo de memoria adecuado. Esta redes, como vemos en la funcionalidad de cada uno de los conmutadores, gestiona colisiones (con algún tipo de política de arbitraje) y permite también la difusión. El elevado ancho de banda de este tipo de red deriva de que tiene perfil NxM: admite “N” escrituras simultáneas siempre que no haya colisión. En este tipo de redes consideraremos que la latencia es 1, lo que cueste hacer conmutar a un switch. Se entiende que el tiempo de propagación de la señal (mensaje) es despreciable frente al coste de hacer conmutar al switch. Un inconveniente serio de este tipo de redes es que su complejidad (medida en número de conmutadores necesarios) es cuadrática. Para un crossbar de 64x64 se necesitan conmutadores y para otro cuatro veces mayor (de 256x256), serían necesarios conmutadores: ¡16 veces más! Todavía más problemático sería que este crossbar diseñado con un chip, requeriría de muchas conexiones con el exterior (patas o conectores). Si cada puerto del crossbar fuese de 18 hilos paralelos y, como es lógico, la comunicación fuese bidireccional, para el caso de un crossbar de 64x64, se necesitarían conexiones con el exterior además de las necesarias para control, reloj, etc. difusión colisión

43 arqAva Redes indirectas (Multietapa) Conectividad-90
crossbar 8*8 O (64) Perfil 8*8 Latencia 1 ¿ Reducir O( N2) a costa de … ? Usar sólo crossbar 2*2 cruce difusión colisión directo etapa 1 etapa 2 etapa m Red de interconexión Conjunto de crossbar 2*2 Una forma de reducir la complejidad de un crossbar son las redes multietapa. Estas redes constan de varias etapas conectadas como en un pipeline o array lineal, de tal forma que cada etapa consta de una primera parte de conexiones (simplemente llevar los enlaces de unas salidas a unas entradas) seguida de otra parte que consta de un conjunto de crossbar elementales de 2x2. La funcionalidad de estos crossbar elementales de 2x2 es: directo, cruce, difusión y gestión de colisión. Dependiendo del patrón de conexión (siempre el mismo en cada etapa), podemos tener distintas redes: Omega, Clos, Benes, Butterfly, etc. Nosotros solo veremos la red de interconexión Omega. La reducción de la complejidad (implementar un crossbar con menos conmutadores) tendrá como coste un perfil de comunicaciones peor y una latencia algo mayor.

44 arqAva Redes indirectas (Red ) Conectividad-91
Red de interconexión “perfect Suffle” Limitado a N = potencia de 2 Viable: [a,f – b,e – c,h – d,g] N = 2 NoViable: [a,f - c,e - …....] N = 4 a b c d e f g h Crossbar  24 Red   16 Aquí vemos cuál es el patrón de interconexión para el caso de una red Omega de 4x4. Puede comprobarse que este tipo de red tiene un único camino desde un origen a un destino. También vemos que comunicaciones simultáneas que permitía un crossbar puro, no son viables en el caso de la red Omega. Echando cuentas, un crossbar admite 24 patrones distintos de comunicarse todos con todos (a,b,c,d con cualquiera de e,f,g,h), mientras que la red Omega lo restringe sólo a 16 patrones distintos. En este mismo ejemplo tan sencillo, podemos ver también que un crossbar 4x4 puro tiene latencia 1 mientras que la red Omega equivalente tiene latencia 2: supone conmutar en uno de los conmutadores de la primera etapa (columna izquierda) y después en otro de los conmutadores de la segunda etapa (columna derecha).

45 arqAva Redes indirectas (Red ) Conectividad-92
Red de interconexión “perfect Suffle” Limitado a N = potencia de 2 Colisión 000 001 010 011 100 101 110 111 ¿Encaminamiento? Sea de 001 a 010 001 010 011 001 100 001 010 001 010 001 010 110 101 Aquí puede observarse cómo configurar, de forma recursiva, una red Omega de 8x8 y cómo sería el algoritmo de encaminamiento. No es difícil comprobar que la latencia es log2N. En el caso de la figura sería de 3 a partir de 8 entradas y 8 salidas. Como en cada etapa hay N/2 crossbar de 2x2 (cada uno de los cuales consta de 4 conmutadores), la complejidad medida en número de conmutadores sería igual a 2Nlog2N. Merece la pena ver el ahorro de complejidad conseguido según se aumenta N: NxN Crossbar Omega Ahorro% 8x 32x 64x 128x Existen otras topologías de interconexión, como Butterfly, que pueden encaminar fijándose solo en la dirección destino: básicamente cada bit (0 o 1) de la dirección indica la salida por la que sacar el mensaje en cada conmutador. Bit igual => directo Bit distinto => cruce ¿ Latencia y O( ) ? ¿Mejorable?

46 arqAva Redes indirectas (Red ) Conectividad-93
101 000 001 010 011 100 110 111 000 001 010 011 100 101 110 111 ¡ Permite difusión !

47 arqAva Redes indirectas (Tabla de parámetros) Conectividad-94
BUS Barato y limitado 2..32 CROSSBAR Más caro. Bueno para N moderado Mayor ancho de banda y fácil encaminar MULTIETAPA Compromiso entre Bus y Crossbar

48 arqAva Implantación en el mercado (Oct/2013) Conectividad-95
#NODOS TIPO DE RED SUPERCOMPUTADOR ..N Configurable Bull systems > Dragonfly Cray Inc. XC30 Toro 2y3D Cray Inc. XE6/XE6m (96+96)*N Toro 3D Cray Inc. XK7 ? Toro 3D + Árbol Eurotech Aurora Toro 6D Fujitsu PRIMEHPC FX 10 Crossbar multidim. Hitachi SR 16000 Toro 5D IBM BlueGene/Q 256 x Variable IBM eServer p775 Crossbar multidim. NEC SX-9 Toro 2D .. ? SGI Altix UV intercluster

49 arqAva Redes en Top500 (Nov/2018) Conectividad-96
De Nov/2017 a Nov/2018 la tecnología que más subió fue Gigabit Ethernet, a costa de Infiniband. Las redes “custom”, hechas en parte ex profeso para el supercomputador en cuestión, suelen ser de tecnologías establecidas pero que no comercializan routers para máquinas tan potentes y lo suministran y diseñan bajo encargo. Suelen acumularse en las máquinas más potentes del mundo: 6 de los TOP10 9 de los TOP20 15de los TOP30 FIN


Descargar ppt "arqAva Encaminamiento (Modos) Conectividad-48"

Presentaciones similares


Anuncios Google