La imagen de fondo de la portada es una imagen de libre uso tomada de Pixabay y editada por @abdulmath con Inkscape
Desde los inicios de la computación paralela, el principal distintivo de un sistema paralelo ha sido el tipo de unidad central de procesamiento (CPU) y la red de interconexión. Pero ahora esto ha está cambiando.
Experimentos recientes han demostrado que los tiempos de ejecución de la mayoría de las aplicaciones paralelas del mundo real dependen cada vez más del tiempo de comunicación que del tiempo de cálculo. Así, a medida que aumenta el número de unidades de procesamiento o computadores que cooperan, el rendimiento de las redes de interconexión se está volviendo más importante que el rendimiento de la unidad de procesamiento.
En concreto, la red de interconexión tiene un gran impacto en la eficiencia y escalabilidad de un computador paralelo en la mayoría de las aplicaciones paralelas del mundo real. En otras palabras, el alto rendimiento de una red de interconexión puede reflejarse en última instancia en un mayor aumento de la velocidad, ya que dicha red de interconexión puede acortar el tiempo total de ejecución paralela, así como aumentar el número de unidades de procesamiento que pueden explotarse de forma eficiente.
Imagen de Pixabay
El rendimiento de una red de interconexión depende de varios factores. Tres de los más importantes son:
- el enrutamiento,
- los algoritmos de control de flujo y
- la topología de la red.
El enrutamiento es el proceso de selección de una ruta para el tráfico en una red de interconexión.
El control de flujo es el proceso de gestión de la velocidad de transmisión de datos entre dos nodos para evitar que un emisor rápido abrume a un receptor lento.
La topología de la red es la disposición de los distintos elementos, como los nodos de comunicación y los canales, de una red de interconexión.
Imagen de Pixabay
Para los algoritmos de enrutamiento y control de flujo ya se conocen y utilizan técnicas eficaces. En cambio, para las topologías de red no se han adaptado a los cambios de las tendencias tecnológicas con la misma rapidez que los algoritmos de enrutamiento y control de flujo.
Esta es una de las razones por las que muchas topologías de red que se descubrieron poco después del propio nacimiento de la computación paralela se siguen utilizando ampliamente. Otra razón es la libertad que tienen los usuarios finales a la hora de elegir la topología de red adecuada para el uso previsto.
En consecuencia, cabe esperar que las mejoras en la topología de las redes de interconexión supongan un paso más en el aumento del rendimiento. Por ejemplo, estas mejoras deberían permitir redes de interconexión se adapten dinámicamente a la aplicación actual de alguna manera óptima.
Podemos clasificar las redes de interconexión de muchas maneras y caracterizarlas por varios parámetros. Para definir la mayoría de estos parámetros, la teoría de grafos es el marco matemático más elegante. En concreto, una red de interconexión puede modelarse como un grafo G(N,C), donde N es un conjunto de nodos de comunicación y C es un conjunto de enlaces de comunicación (o canales de comunicación) entre los nodos de comunicación.
Basándonos en esta visión teórica de las redes de interconexión, podemos definir parámetros que representen tanto las propiedades topológicas como las propiedades de rendimiento de las redes de interconexión.
Las propiedades topológicas más importantes de las redes de interconexión, definidas por las nociones de teoría de grafos, son las siguientes:
- grado de los nodos,
- la regularidad,
- simetría,
- diámetro,
- diversidad de trayectorias, y
- escalabilidad de la expansión.
Las principales propiedades de rendimiento de las redes de interconexión son:
- ancho de banda del canal
- bisección del ancho de banda y
- la latencia.
Imagen de Pixabay
Las redes de interconexión pueden clasificarse en redes directas e indirectas.
- Se dice que una red es directa cuando cada nodo está directamente conectado a sus vecinos.
¿Cuántos vecinos puede tener un nodo?
En una red totalmente conectada, cada uno de los n = |N| nodos está conectado directamente con todos los demás nodos, por lo que cada nodo tiene n-1 vecinos. - Una red indirecta conecta los nodos a través de conmutadores. Normalmente, conecta las unidades de procesamiento en un extremo de la red y los módulos de memoria en el otro. El circuito más sencillo para conectar las unidades de procesamiento con los módulos de memoria es el interruptor de barra transversal totalmente conectado. Su ventaja es que puede establecer una conexión entre las unidades de procesamiento y los módulos de memoria de forma arbitraria.
Por ello, las redes indirectas conectan los nodos a través de muchos conmutadores. Los propios conmutadores suelen estar conectados entre sí por etapas, utilizando un patrón de conexión regular entre las etapas. Estas redes indirectas se denominan redes de interconexión multietapa.
Las redes indirectas pueden clasificarse a su vez como sigue:
- red no bloqueante,
- reordenable de bloqueo,
- red de bloqueo.
La distinción entre redes directas e indirectas es menos clara hoy en día. Toda red directa puede representarse como una red indirecta, ya que cada nodo de la red directa puede representarse como un router con su propio elemento de procesamiento conectado a otros routers. Sin embargo, tanto en las redes de interconexión directa como en las indirectas, el travesaño completo, como conmutador ideal, es el corazón de las comunicaciones.
Imagen de Pixabay
No es difícil ver que existen muchas topologías de red capaces de interconectar p unidades de procesamiento y m módulos de memoria. Sin embargo, no todas las topologías de red son capaces de transmitir las peticiones de memoria con la suficiente rapidez como para respaldar eficazmente el cálculo paralelo.
Además, resulta que la topología de red tiene una gran influencia en el rendimiento de la red de interconexión y, en consecuencia, del cálculo paralelo. Además, la topología de la red puede suponer considerables dificultades en la construcción real de la red y su coste.
En las últimas décadas, los investigadores han propuesto, analizado, construido, probado y utilizado diversas topologías de red. A continuación, ofrecemos una lista de las más notables o populares:
- Bus,
- Ring,
- Mesh,
- 3D Mesh,
- Torus,
- hypercube,
- multistage network,
- fat tree.
Imagen de Pixabay
Espero que les haya gustado está serie de la programación y computación en paralelo. Si alguno está interesado en leer y ampliar más el tema, los invito a leer las siguientes referencias:
- Atallah, M., Blanton, M. (eds.): Algorithms and Theory of Computation Handbook, Chapman and Hall, Boca Raton (2010).
- Chandra, R., Menon, R., Dagum, L., Kohr, D., Maydan, D., McDonald, J.: Parallel Programming in OpenMP. Morgan Kaufmann, Burlington (2000).
- Foster, I.: Designing and Building Parallel Programs: Concepts and Tools for Parallel Software Engineering. Addison-Wesley Longman Publishing Co., Inc, Boston (1995).