SOLUCIÓN AL ERROR "INVALID ARGUMENT" DE NVIDIA PEERMEM
Ves el error "Invalid argument" al ejecutar sudo modprobe nvidia-peermem en Ubuntu.
Esto sucede porque utilizas el stack estándar de InfiniBand de Ubuntu. El módulo nvidia-peermem requiere una API específica que solo se encuentra en MLNX_OFED. Si utilizas el stack rdma-core (inbox), el módulo siempre fallará.
No instales MLNX_OFED solo para solucionar esto. Es un paso pesado e innecesario.
Si utilizas GPUs Hopper o Blackwell con el driver abierto de NVIDIA, no necesitas nvidia-peermem. En su lugar, debes usar DMA-BUF. Este proporciona GPUDirect RDMA de forma nativa.
Cómo solucionarlo:
Debes habilitar nvidia-drm modeset=1. Esta es la razón más común por la que falla DMA-BUF.
Comprueba tu estado actual:
cat /sys/module/nvidia_drm/parameters/modeset
Si muestra N, sigue estos pasos:
Para solucionarlo en la sesión actual:
sudo modprobe -r nvidia_drm
sudo modprobe nvidia_drm modeset=1
Para solucionarlo de forma permanente:
echo 'options nvidia-drm modeset=1' | sudo tee /etc/modprobe.d/nvidia-drm-modeset.conf
sudo update-initramfs -u
Requisitos para DMA-BUF: • Driver de kernel abierto de NVIDIA • HCA con soporte ODP (ConnectX-6 o ConnectX-7) • GPU Hopper o más reciente (H100, H200 o B200)
Para verificar que funciona, asegúrate de que estos tres pasos se completen correctamente en tu código:
cudaMalloc()para asignar memoria.cuMemGetHandleForAddressRange()para exportar la memoria como un descriptor de archivo DMA-BUF.ibv_reg_dmabuf_mr()para registrar ese descriptor con la HCA.
Comparación:
Legacy (nvidia-peermem):
- Requiere MLNX_OFED
- Requiere un módulo externo
- Funciona en todas las GPUs
Moderno (DMA-BUF):
- Funciona con el stack rdma-core (inbox)
- No requiere módulos externos
- Funciona en Hopper y versiones posteriores
- Preferido por NVIDIA
Si tus puertos InfiniBand permanecen en modo INIT, es probable que te falte un Subnet Manager. Ejecuta:
sudo apt install opensm
sudo systemctl start opensm
Fuente: https://dev.to/fpolica91/nvidia-peermem-invalid-argument-fix-2b3n
Comunidad de aprendizaje opcional: https://t.me/GyaanSetuAi