Cuando escribes aplicaciones CUDA, una de las cosas más importantes en las que debes concentrarte para escribir un código excelente es el rendimiento de la transferencia de datos. Esto sabe aplica tanto a sistemas de una sola GPU como a sistemas de múltiples GPU. Una de las herramientas que puede utilizar para comprender las características de la memoria de su sistema GPU es NVIDIA NVbandwidth.
En esta publicación de blog, exploraremos qué es NVbandwidth, cómo funciona, sus características clave y cómo puede usarlo para probar y evaluar sus propios sistemas de GPU NVIDIA. Esta publicación está dirigida a desarrolladores de CUDA, arquitectos de sistemas e ingenieros de infraestructura de ML que necesitan medir y validar el rendimiento de la interconexión de GPU.
¿Qué es el ancho de banda NV?
NVbandwidth es una herramienta basada en CUDA que mide el ancho de banda y la latencia para varios patrones de copia de memoria a través de diferentes enlaces utilizando métodos de copia de motor (CE) o de kernel. Informa el ancho de banda medido actualmente en su sistema, proporcionando información valiosa sobre las características de rendimiento de su configuración de GPU. Si bien las GPU modernas cuentan con capacidades informáticas impresionantes, su rendimiento suele verse limitado por la rapidez con la que sabe pueden mover los datos entre diferentes dispositivos:
- Memoria de CPU a memoria de GPU
- Memoria de GPU a memoria de CPU
- Memoria de GPU a memoria de GPU
Comprender estas características de rendimiento ayuda a los desarrolladores a:
- Evaluar el rendimiento del sistema
- Medir la latencia de acceso a la memoria
- Medir el ancho de banda en implementaciones de GPU de uno o varios nodos
- Comprender las implicaciones de rendimiento de los diferentes patrones de transferencia de memoria.
- Diagnosticar cuellos de botella de ancho de banda en aplicaciones CUDA
- Optimice los patrones de transferencia de memoria para cargas de trabajo específicas
- Comparar el ancho de banda y la latencia entre múltiples GPU en un sistema
- Monitoreo y validación del desempeño
Motivación
El ancho de banda de la memoria es un factor de rendimiento crítico en las aplicaciones de GPU modernas, como los LLM. A medida que los modelos crecen en tamaño y complejidad, el movimiento eficiente de datos sabe vuelve cada vez más importante para un rendimiento óptimo en áreas como:
- Carga e inicialización del modelo: la carga rápida del modelo es crucial para tiempos de inicio rápidos
- Rendimiento de inferencia: afecta las capacidades de respuesta en tiempo real
- Eficiencia del entrenamiento: las limitaciones del ancho de banda pueden afectar el rendimiento de las diferentes fases del entrenamiento: Actualizaciones de gradiente Sincronización de parámetros
Características clave de NVbandwidth
Pruebas integrales de ancho de banda
NVbandwidth admite una amplia gama de pruebas de ancho de banda, que incluyen:
- Pruebas unidireccionales: Host -> Dispositivo (H2D) Dispositivo -> Host (D2H) Dispositivo ↔ Dispositivo (D2D)
- Pruebas bidireccionales: Host ↔ Dispositivo Dispositivo ↔ Dispositivo
- Pruebas de múltiples GPU: Todos a uno (A2O) Uno a todos (O2A) Todos a host (A2H) Host a todos (H2A)
- Pruebas de múltiples nodos (cuando sabe construyen con soporte MPI): pruebas para medir el ancho de banda a través de los límites de los nodos en un clúster.
Prueba de latencia
- Host ↔ Latencia del dispositivo
- Dispositivo ↔ Latencia del dispositivo
Múltiples métodos de copia
La herramienta implementa dos métodos principales para transferencias de memoria:
- Copy Engine (CE): utiliza las funciones de copia de memoria asíncrona integradas de CUDA
- Streaming Multiprocessor (SM): utiliza núcleos CUDA personalizados para realizar copias a través del SM.
Este enfoque dual permite una comprensión más completa de las capacidades de ancho de banda de su sistema.
Diseño independiente de la topología
NVbandwidth está diseñado para funcionar de manera eficiente en diferentes topologías de interconexión de GPU dentro de un sistema de un solo nodo o de múltiples nodos, ya sea que utilice NVLINK, NVLink C2C o PCIe. No requiere un conocimiento explícito del usuario sobre la topología del sistema para funcionar, lo que hace que su uso sea en gran medida independiente de la topología en la práctica.
Opciones de salida flexibles
Los resultados sabe pueden mostrar en:
- Formato de texto sin formato (predeterminado)
- Formato JSON (usando la opción -j)
Requisitos del sistema
Para usar nvbandwidth, necesitará:
- GPU NVIDIA compatible con CUDA
- Kit de herramientas CUDA (versión 11.X o superior para la versión de un solo nodo y 12.3 para la versión de múltiples nodos)
- Controlador de pantalla NVIDIA compatible con la versión del kit de herramientas CUDA
- Compilador compatible con C++17 (GCC 7.x o superior para Linux)
- CMake (versión 3.20 o superior, sabe recomienda 3.24+)
- Biblioteca de opciones del programa Boost
- Solo versión multinodo: kit de herramientas CUDA 12.3 y controlador 550 o superior, instalación MPI
Para obtener instrucciones de compilación más detalladas, los usuarios interesados pueden consultar las instrucciones README.
Usando ancho de banda NV
Uso básico
Para medir de manera integral el ancho de banda de interconexión de su sistema, simplemente ejecute:
Suponga que desea medir el ancho de banda de dispositivo a dispositivo utilizando el método del motor de copia, con un búfer de 1 GiB y 10 iteraciones, y generar los resultados en formato JSON:
Salida de ejemplo
A continuación sabe muestra un ejemplo de cómo sabe ve el resultado cuando sabe ejecuta una prueba de copia de host a dispositivo:
Debajo del capó: cómo funciona NVbandwidth
Arquitectura
NVbandwidth sigue un diseño modular que separa la definición de pruebas, las operaciones de memoria y los informes de resultados en distintos subsistemas:
- Interfaz CLI: maneja las entradas del usuario y organiza la ejecución de pruebas.
- Marco de casos de prueba: proporciona una interfaz estándar para definir diferentes pruebas de ancho de banda.
- Marco de copia de memoria: componente central que realiza operaciones de memoria. Núcleos CUDA: núcleos CUDA especializados para realizar operaciones de memoria.
- Sistema de salida: formatea y presenta los resultados de las pruebas NVbandwidth.cpp:178-246
Detalles de medición
La herramienta utiliza el siguiente enfoque para medir el rendimiento con precisión:
- Primero, pone en cola un núcleo giratorio que gira según una bandera en la memoria del host.
- El núcleo de giro gira en el dispositivo hasta que todos los eventos para la medición sabe hayan puesto en cola por completo.
- Luego, pone en cola un evento de inicio, un cierto recuento de iteraciones de memcpy y, finalmente, un evento de detención.
Finalmente suelta la bandera para iniciar la medición.
Este proceso garantiza que la sobrecarga de las operaciones en cola sabe excluya de la medición de la transferencia real a través de la interconexión.
Pruebas de ancho de banda bidireccional
Para pruebas bidireccionales, NVbandwidth mide el ancho de banda cuando los datos fluyen en ambas direcciones simultáneamente. Consulte la Figura 1 a continuación:
Copias CE
El flujo A (flujo medido) realiza escrituras en el dispositivo, mientras que el flujo B en la dirección opuesta produce lecturas.
copias SM
La prueba lanza una copia del kernel donde los hilos alternos copian datos en direcciones alternas.
Operación de múltiples nodos
La ejecución de NVbandwidth en modo de múltiples nodos requiere instalación y configuración adicionales.
- Inicie el servicio de intercambio de memoria entre nodos de NVIDIA (IMEX):
Configure las direcciones de nodo en /etc/nvidia-imex/nodes_config.cf g
Los sistemas NVIDIA Multi-Node NVLink (MNNVL) requieren un dominio IMEX completamente configurado y operativo para todos los nodos que forman el dominio NVLink. NVbandwidth utiliza MPI para coordinar mediciones entre nodos. Consulte la Figura 2, a continuación:
Salida de ejemplo
A continuación sabe muestra un ejemplo de cómo sabe ve el resultado al medir el rendimiento de igual a igual entre nodos en un sistema de múltiples nodos.
Casos de uso de ancho de banda NV
Optimización del rendimiento
Al comprender las características del ancho de banda de su sistema, puede optimizar sus aplicaciones CUDA para hacer un mejor uso del ancho de banda disponible. Por ejemplo, puede descubrir que ciertos patrones de transferencia son más eficientes que otros para su configuración de hardware específica.
Evaluación y prueba del sistema
NVbandwidth proporciona una forma estandarizada de medir y comparar el rendimiento del ancho de banda en diferentes sistemas, lo que lo hace valioso para pruebas y evaluación de sistemas.
Solución de problemas
Si su aplicación CUDA tiene problemas de rendimiento, NVbandwidth puede ayudar a identificar si las limitaciones de ancho de banda son un factor contribuyente. NVbandwidth informa el ancho de banda medido actualmente en una configuración de sistema específica. Los resultados de rendimiento pueden variar significativamente según múltiples factores, como el modelo de GPU, la generación de interconexión, los relojes actuales y otros aspectos de la configuración del sistema.
Validación de hardware: después de instalar nuevas GPU, actualizar controladores o realizar cambios en el sistema, NVbandwidth puede verificar que el rendimiento del ancho de banda de la memoria cumpla con las expectativas de rendimiento. Esto ayuda a identificar problemas de hardware, problemas de controladores o errores de configuración que podrían afectar el rendimiento de la aplicación.
Pruebas de regresión de rendimiento: al implementar nuevas versiones de software o actualizaciones del sistema, NVbandwidth proporciona una base para detectar regresiones de rendimiento. Al comparar las mediciones de ancho de banda antes y después de los cambios, puede identificar rápidamente si las actualizaciones han impactado negativamente el rendimiento del sistema.
Yendo más lejos
NVbandwidth es una herramienta indispensable para medir y comprender las características del ancho de banda de los sistemas GPU NVIDIA. Proporciona información valiosa para optimizar las aplicaciones CUDA, evaluar el rendimiento del sistema y solucionar problemas al ofrecer un conjunto de pruebas integral, opciones de configuración flexibles y soporte para implementaciones de un solo nodo y de múltiples nodos.
Al aprovechar NVbandwidth, puede tomar decisiones informadas para maximizar el rendimiento de sus aplicaciones CUDA y garantizar capacidades óptimas de transferencia de datos dentro de su configuración de GPU. A medida que los clústeres de GPU evolucionan en tamaño y complejidad, NVbandwidth continúa avanzando, abordando nuevos desafíos en la medición y análisis del ancho de banda, incluidas las pruebas de escalabilidad del rendimiento.Notas
Para obtener información más detallada, explore estos recursos adicionales.
- Descripción general (NVIDIA/nvbandwidth)
- Arquitectura (NVIDIA/nvbandwidth)
- Construcción y ejecución (NVIDIA/nvbandwidth)
Para comenzar a optimizar el rendimiento de su sistema GPU, descargue y pruebe NVbandwidth hoy.




