NVLink es un enlace de comunicaciones serial basado en cables, de múltiples carriles y de corto alcance, desarrollado por Nvidia para la transferencia de datos y códigos de control entre CPUs y GPUs, y entre GPUs. A diferencia de PCI Express, un dispositivo puede consistir en múltiples NVLinks, y los dispositivos pueden usar redes en malla para comunicarse en lugar de un concentrador central o conmutador. El protocolo se anunció por primera vez en marzo de 2014 y utiliza una interconexión de señalización de alta velocidad propietaria (NVHS). NVLink está diseñado para abordar las crecientes demandas de ancho de banda de la computación de alto rendimiento, las cargas de trabajo de inteligencia artificial y aprendizaje automático, proporcionando una alternativa de baja latencia y alto rendimiento a las arquitecturas de bus tradicionales.
Arquitectura y versiones
NVLink especifica una conexión punto a punto con velocidades de datos de 20, 25 y 50 Gbit/s por par diferencial para las versiones 1.0, 2.0 y 3.0 y superiores, respectivamente. Para NVLink 1.0 y 2.0, ocho pares diferenciales forman un sub-enlace, y dos sub-enlaces (uno para cada dirección) forman un enlace. A partir de NVLink 3.0, solo cuatro pares diferenciales forman un sub-enlace. Para NVLink 2.0 y superiores, la velocidad total de datos para un sub-enlace es de 25 GB/s, y la velocidad total de datos para un enlace es de 50 GB/s. Cada GPU V100 admite hasta seis enlaces, proporcionando hasta 300 GB/s de ancho de banda bidireccional total. Anunciado el 14 de mayo de 2020, NVLink 3.0 aumentó la velocidad de datos por par a 50 Gbit/s, reduciendo a la mitad el número de pares por enlace. Con 12 enlaces en la GPU A100 basada en Ampere, el ancho de banda total alcanzó los 600 GB/s. La microarquitectura Hopper, anunciada en marzo de 2022, presenta 18 enlaces NVLink 4.0, lo que permite 900 GB/s. NVLink 6, utilizado en la plataforma Vera Rubin NVL72 de Nvidia, proporciona 3.6 TB/s de ancho de banda bidireccional por GPU, con nueve conmutadores NVLink 6 que entregan 260 TB/s de ancho de banda total de escalado por rack.
Escalabilidad y conmutación
Para números pequeños de GPUs, los carriles NVLink en un solo dispositivo son suficientes para la conectividad de malla de todos a todos. Para acomodar recuentos más altos de GPUs, NVLink ha utilizado una arquitectura de conmutación de paquetes desde 2018, donde un conmutador central puede servir hasta 32 puertos de dos carriles. El NVSwitch para NVLink 4.0 puede realizar cálculos simples (por ejemplo, suma, difusión) para reducir la sobrecarga de comunicación mediante el acelerador SHARP. Este enfoque basado en conmutadores permite construir grandes clústeres de GPUs, como los utilizados en el entrenamiento de aprendizaje profundo y la inferencia de modelos de lenguaje grandes, donde el escalado eficiente es crítico.
Características de rendimiento
El rendimiento en el mundo real se ve afectado por sobrecargas como la codificación de línea 128b/130b, caracteres de control de enlace, encabezados de transacción, capacidades de almacenamiento en búfer y uso de DMA en el lado del host. Estos factores típicamente reducen la velocidad de datos al 90-95% de la velocidad de transferencia teórica. Los puntos de referencia muestran una velocidad de transferencia alcanzable de aproximadamente 35.3 Gbit/s (host a dispositivo) para una conexión NVLink de 40 Gbit/s hacia una GPU P100 en un sistema impulsado por CPUs IBM POWER8. La tabla a continuación compara métricas básicas entre versiones:
| Versión | Velocidad de datos por par | Pares por sub-enlace | Enlaces por GPU | Ancho de banda total |
|---|---|---|---|---|
| 1.0 | 20 Gbit/s | 8 | 4 (P100) | 160 GB/s |
| 2.0 | 25 Gbit/s | 8 | 6 (V100) | 300 GB/s |
| 3.0 | 50 Gbit/s | 4 | 12 (A100) | 600 GB/s |
| 4.0 | 50 Gbit/s | 4 | 18 (H100) | 900 GB/s |
| 6.0 | - | - | - | 3.6 TB/s |
Uso con tarjetas de expansión
NVLink también está disponible en ciertas tarjetas gráficas de gama alta, que presentan conectores físicos para unir tarjetas en un grupo NVLink. Estos conectores son típicamente en forma de U con conectores de borde de rejilla fina, y el ancho determina el espaciado de ranuras requerido (comúnmente de 3 a 5 ranuras). La interconexión a menudo se denomina Interfaz de Enlace Escalable (SLI) debido a su diseño estructural, aunque el NVLink moderno es técnicamente diferente. Los dispositivos reportados incluyen Quadro GP100 (hasta 160 GB/s con dos puentes), Quadro GV100 (hasta 200 GB/s), GeForce RTX 2080 y 2080 Ti (puente único), GeForce RTX 3090 (puente único), y Quadro RTX 5000/6000/8000 (hasta 100 GB/s).
Software y programación
Para las líneas de productos Tesla, Quadro y Grid, la API NVML (API de Biblioteca de Gestión de Nvidia) proporciona funciones para controlar las interconexiones NVLink en Windows y Linux, incluyendo evaluación de componentes, consulta de estado/errores y monitoreo de rendimiento. La biblioteca NCCL (Biblioteca de Comunicaciones Colectivas de Nvidia) permite a los desarrolladores implementar potentes aplicaciones de IA y de cómputo intensivo sobre NVLink. La página "Configuración 3D" del Panel de Control de Nvidia y la muestra CUDA "simpleP2P" utilizan estas APIs. En Linux, la herramienta de línea de comandos nvidia-smi nvlink ofrece información avanzada y control similar.
Historia
El 5 de abril de 2016, Nvidia anunció que NVLink se implementaría en la GPU GP100 basada en Pascal, utilizada en productos como el Tesla P100. La computadora de alto rendimiento DGX-1 permitía hasta ocho módulos P100 en un solo rack, conectados a hasta dos CPUs host a través de una placa portadora dedicada para enrutar las conexiones NVLink. Cada P100 requería 800 pines (400 para PCIe y alimentación, y otros 400 para NVLink). Las generaciones posteriores (Volta, Ampere, Hopper y posteriores) han continuado aumentando el número de enlaces y el ancho de banda, consolidando NVLink como una tecnología clave para la IA generativa y la computación de alto rendimiento.