Qu茅 es NVIDIA nvbandwidth: c贸mo usar esta herramienta de prueba de ancho de banda de GPU

Basado en el repositorio oficial NVIDIA/nvbandwidth y su p谩gina de releases, este art铆culo explica qu茅 hace la herramienta de prueba de ancho de banda de GPU, de qu茅 depende, c贸mo usarla, c贸mo funciona la prueba multinodo y qu茅 cambi贸 en v0.9.

Si recientemente has estado solucionando problemas del rendimiento de la interconexión entre múltiples NVIDIA GPUs, o si deseas verificar el ancho de banda real entre PCIe, NVLink, la memoria host y la VRAM, NVIDIA/nvbandwidth es una herramienta pequeña que vale la pena conocer.

No es una utilidad de benchmark general, ni es un comando oculto dentro de un framework de modelo grande. Es una herramienta de código abierto de NVIDIA diseñada específicamente para medir el ancho de banda y la latencia para copias de memoria relacionadas con la GPU. En lugar de solo mirar el ancho de banda teórico, nvbandwidth es mejor para responder a una pregunta práctica: ¿cuánto ancho de banda puede entregar esta máquina y sus interconexiones GPU actuales en este momento?

false

1. ¿Qué hace nvbandwidth

Según el README oficial, nvbandwidth es una herramienta de línea de comandos para medir el ancho de banda en las NVIDIA GPU.

Se enfoca principalmente en el rendimiento de transferencia a través de diferentes patrones de memcpy, tales como:

  • GPU -> GPU
  • CPU -> GPU
  • GPU -> CPU
  • Transferencias entre GPUs a través de múltiples nodos

Estas pruebas son especialmente útiles en escenarios como:

  • Solucionar problemas de cuellos de botella de interconexión en el entrenamiento o la inferencia multi-GPU
  • Verificar el comportamiento real de enlaces como NVLink, PCIe y C2C
  • Comparar diferencias de transferencia entre servidores, topologías, drivers o versiones de CUDA
  • Realizar validación de hardware de referencia antes del despliegue del clúster

En resumen, nvbandwidth no se trata del rendimiento del modelo (model throughput). Se trata de la capacidad de bajo nivel para mover datos.

false

2. No produce solo una puntuación simple

Mucha gente considera una prueba de ancho de banda como algo que termina con un solo número, pero nvbandwidth proporciona una salida más detallada que eso.

Informa los resultados como matrices para cada tipo de prueba. Por ejemplo, en una prueba como device_to_device_memcpy_write_ce, muestra el ancho de banda entre cada par de GPUs por fila y columna. Eso significa que puedes ver más que solo una estimación aproximada de la velocidad a nivel de todo el sistema. También puedes detectar:

  • Qué pares de GPUs son especialmente rápidos
  • Qué rutas están claramente limitadas por PCIe
  • Si ciertos pares de GPUs muestran un ancho de banda anormalmente bajo
  • Si la topología multi-GPU coincide con tus expectativas

Si estás trabajando con un servidor de 8 GPUs, una plataforma dual-socket o un sistema multinodo, esta salida de estilo matriz suele ser más útil que un único número promedio.

false

3. Cómo entender las copias CE y SM

La documentación oficial divide las pruebas en dos categorías:

  • CE: transferencias del motor de copia basadas en las APIs memcpy
  • SM: transferencias basadas en el kernel

Estos dos tipos de resultados no están garantizados a coincidir exactamente, porque representan diferentes rutas de copia. Si principalmente quieres entender el comportamiento regular de transferencia de dispositivo a dispositivo, generalmente mirarás CE primero. Si quieres estudiar los detalles de ejecución más de cerca, entonces SM también vale la pena revisar.

El README también explica que los resultados de ancho de banda utilizan la mediana a través de múltiples ejecuciones de prueba por defecto. Las versiones más nuevas incluyen además estadísticas de variabilidad, lo que facilita juzgar cuán estables son los números.

false

4. ¿Qué entorno requiere

nvbandwidth no es una utilidad binaria pura que simplemente descargues y ejecutes. Espera un entorno de desarrollo CUDA estándar.

El README actual enumera estos requisitos básicos:

  • CUDA Toolkit 11.x o más reciente
  • Un compilador con soporte para C++17
  • CMake 3.20+, siendo 3.24+ recomendado
  • Boost program_options
  • Un dispositivo CUDA utilizable y un controlador compatible

Los requisitos son más altos si deseas la versión multinode. El README actual indica explícitamente:

  • Las compilaciones multinode requieren CUDA Toolkit 12.3
  • El controlador debe ser 550 o más reciente
  • Se requiere MPI
  • El servicio nvidia-imex debe estar configurado

Por lo tanto, esta es mucho más una herramienta de ingeniería para servidores y clusters de GPU en Linux que algo destinado a un uso de escritorio casual.

false

5. Cómo construir y ejecutar la versión de nodo único

El proceso de construcción de nodo único es sencillo:

1
2
cmake .
make

En Ubuntu / Debian, el proyecto también proporciona un script debian_install.sh que instala dependencias comunes y construye el proyecto.

Después de construir, puedes verificar primero la salida de ayuda:

1
./nvbandwidth -h

Algunas opciones comúnmente utilizadas incluyen:

  • -l: listar pruebas disponibles
  • -t: ejecutar una prueba específica por nombre o índice
  • -p: ejecutar pruebas por prefijo
  • -b: establecer el tamaño del búfer de memcpy, predeterminado 512 MiB
  • -i: establecer el número de iteraciones de benchmark
  • -j: salida JSON
  • -H: habilitar huge pages para la asignación de memoria del host

Si solo deseas ejecutar la suite de pruebas predeterminada una vez, usa:

1
./nvbandwidth

Si solo quieres probar un elemento específico, como una copia de dispositivo a dispositivo:

1
./nvbandwidth -t device_to_device_memcpy_read_ce

false

6. El soporte multinodo es una de sus características más destacadas

nvbandwidth no es solo para pruebas multi-GPU en un solo nodo. También admite escenarios multinodo.

Según el README, la compilación multinodo se realiza de esta manera:

1
2
cmake -DMULTINODE=1 .
make

En tiempo de ejecución, normalmente se utiliza junto con mpirun, con un proceso lanzado por GPU. La documentación también requiere que todos los ranks participantes pertenezcan al mismo clúster multinodo, y recomienda ejecutar las pruebas principalmente con el prefijo multinode bajo MPI.

Esto acerca su posicionamiento a la informática de alto rendimiento (high-performance computing) y a los sistemas GPU grandes que a las comprobaciones básicas de una estación de trabajo.

Si estás trabajando con implementaciones multinodo de NVLink o plataformas más complejas como GB200 / Grace Hopper, el valor de nvbandwidth es mucho mayor de lo que sería en una configuración típica de GPU de consumo.

false

7. Qué cambió en v0.9

A partir del 24 de abril de 2026, la página de GitHub Releases muestra que la última versión de nvbandwidth es v0.9, lanzada el 8 de abril de 2026.

Las actualizaciones más destacadas en este lanzamiento incluyen:

  • Se agregaron estadísticas de variabilidad a la salida de ancho de banda
  • Se agregó soporte para páginas grandes (huge page) para la memoria anfitriona (excluyendo Windows)
  • Se agregó muestreo de pares (pair sampling) para pruebas de dispositivo a dispositivo
  • Se agregó una guía de solución de problemas
  • Se unificaron los caminos de ejecución de nodo único y multinodo

También vale la pena señalar dos cambios orientados a la ingeniería:

  • Mejora en la detección de la arquitectura CUDA sin depender tanto del acceso directo a la GPU
  • Se eliminó el soporte para Volta (sm_70 / sm_72) en entornos de CUDA Toolkit 13.0+

Por lo tanto, si solo mirabas las versiones anteriores, v0.9 ya no es solo un probador básico de ancho de banda. Claramente se está moviendo hacia una mejor automatización, solución de problemas y validación de sistemas a gran escala.

false

8. ¿Cuándo es una buena opción?

``nvbandwidth` es especialmente adecuado cuando:

  • Quieres verificar el ancho de banda de interconexión real entre múltiples NVIDIA GPUs
  • Sospechas que una GPU está instalada en una ranura PCIe con ancho de banda limitado
  • Quieres comparar rutas NVLink frente a rutas no NVLink
  • Estás desplegando un clúster de GPU multinode y necesitas validar los enlaces
  • Quieres los resultados de las pruebas en JSON para pipelines de automatización

Pero si tu objetivo es solo responder preguntas como “¿qué tan rápido es el entrenamiento?” o “¿cuántos tokens por segundo puede alcanzar la inferencia?”, esta herramienta no es la respuesta completa. En ese caso, todavía necesitas pruebas a nivel de carga de trabajo (workload-level testing) con tu framework de entrenamiento, motor de inferencia o aplicación real.

false

9. Cómo pensar sobre su valor

Muchos problemas de rendimiento de GPU no son causados realmente por una capacidad de cómputo insuficiente. Ocurren porque la ruta de datos no está funcionando como se espera.

Por ejemplo:

  • Las GPUs no están utilizando la ruta de interconexión prevista
  • El acceso Cross-NUMA está reduciendo la velocidad
  • Ciertos pares de GPU tienen un ancho de banda anormal
  • La comunicación multinode está solo parcialmente configurada

Estos problemas a menudo son difíciles de diagnosticar si solo se observa nvidia-smi o el rendimiento del modelo. Una herramienta de nivel más bajo y orientada a matrices, como nvbandwidth, es útil precisamente porque expone lo que está sucediendo en la capa de interconexión.

Así que una forma sencilla de pensarlo es: nvbandwidth es una herramienta de verificación de salud en línea de comandos para el ancho de banda en sistemas NVIDIA GPU.

Enlaces relacionados

记录并分享
Creado con Hugo
Tema Stack diseñado por Jimmy