𝗡𝗩𝗜𝗗𝗜𝗔 𝗣𝗘𝗘𝗥𝗠𝗘𝗠 𝗜𝗡𝗩𝗔𝗟𝗜𝗗 𝗔𝗥𝗚𝗨𝗠𝗘𝗡𝗧 𝗙𝗜𝗫

Podczas uruchamiania sudo modprobe nvidia-peermem na systemie Ubuntu pojawia się błąd „Invalid argument”.

Dzieje się tak, ponieważ używasz standardowego stosu InfiniBand w Ubuntu. Moduł nvidia-peermem wymaga specyficznego API, które znajduje się wyłącznie w MLNX_OFED. Jeśli korzystasz ze stosu rdma-core (inbox), moduł zawsze zakończy się niepowodzeniem.

Nie instaluj MLNX_OFED tylko po to, aby to naprawić. Jest to krok ciężki i niepotrzebny.

Jeśli używasz procesorów GPU Hopper lub Blackwell z otwartym sterownikiem NVIDIA (NVIDIA open driver), nie potrzebujesz nvidia-peermem. Powinieneś zamiast tego użyć DMA-BUF. Zapewnia on natywną obsługę GPUDirect RDMA.

Jak to naprawić:

Musisz włączyć nvidia-drm modeset=1. Jest to najczęstsza przyczyna błędów DMA-BUF.

Sprawdź aktualny status: cat /sys/module/nvidia_drm/parameters/modeset

Jeśli wyświetla „N”, wykonaj poniższe kroki:

Aby naprawić to w bieżącej sesji: sudo modprobe -r nvidia_drm sudo modprobe nvidia_drm modeset=1

Aby naprawić to na stałe: echo 'options nvidia-drm modeset=1' | sudo tee /etc/modprobe.d/nvidia-drm-modeset.conf sudo update-initramfs -u

Wymagania dla DMA-BUF: • Otwarty sterownik jądra NVIDIA • HCA z obsługą ODP (ConnectX-6 lub ConnectX-7) • GPU architektury Hopper lub nowszej (H100, H200 lub B200)

Aby zweryfikować, czy działa, upewnij się, że te trzy kroki w kodzie zakończą się sukcesem:

  1. cudaMalloc() w celu alokacji pamięci.
  2. cuMemGetHandleForAddressRange() w celu wyeksportowania pamięci jako deskryptora pliku DMA-BUF.
  3. ibv_reg_dmabuf_mr() w celu zarejestrowania tego deskryptora w HCA.

Porównanie:

Starsze rozwiązanie (nvidia-peermem):

  • Wymaga MLNX_OFED
  • Wymaga zewnętrznego modułu
  • Działa na wszystkich GPU

Nowoczesne rozwiązanie (DMA-BUF):

  • Działa na stosie rdma-core (inbox)
  • Nie wymaga zewnętrznego modułu
  • Działa na architekturze Hopper i nowszych
  • Rekomendowane przez NVIDIA

Jeśli porty InfiniBand pozostają w trybie INIT, prawdopodobnie brakuje Subnet Managera. Uruchom: sudo apt install opensm sudo systemctl start opensm

Źródło: https://dev.to/fpolica91/nvidia-peermem-invalid-argument-fix-2b3n

Opcjonalna społeczność edukacyjna: https://t.me/GyaanSetuAi