NVIDIA PEERMEM INVALID ARGUMENT FIX
Ubuntu-വിൽ sudo modprobe nvidia-peermem പ്രവർത്തിപ്പിക്കുമ്പോൾ "Invalid argument" എന്ന എറർ നിങ്ങൾക്ക് കാണാൻ സാധിക്കും.
നിങ്ങൾ സ്റ്റാൻഡേർഡ് Ubuntu InfiniBand സ്റ്റാക്ക് ഉപയോഗിക്കുന്നത് കൊണ്ടാണ് ഇത് സംഭവിക്കുന്നത്. nvidia-peermem മോഡ്യൂളിന് MLNX_OFED-ൽ മാത്രം കാണപ്പെടുന്ന ഒരു പ്രത്യേക API ആവശ്യമാണ്. നിങ്ങൾ inbox rdma-core സ്റ്റാക്ക് ആണ് ഉപയോഗിക്കുന്നതെങ്കിൽ, ഈ മോഡ്യൂൾ എപ്പോഴും പരാജയപ്പെടും.
ഇത് പരിഹരിക്കാൻ വേണ്ടി മാത്രം MLNX_OFED ഇൻസ്റ്റാൾ ചെയ്യരുത്. അത് അനാവശ്യവും വലിയൊരു പ്രക്രിയയുമാണ്.
നിങ്ങൾ NVIDIA open driver ഉപയോഗിക്കുന്ന Hopper അല്ലെങ്കിൽ Blackwell GPU-കൾ ആണ് ഉപയോഗിക്കുന്നതെങ്കിൽ, നിങ്ങൾക്ക് nvidia-peermem ആവശ്യമില്ല. പകരം DMA-BUF ഉപയോഗിക്കണം. ഇത് സ്വാഭാവികമായി തന്നെ GPUDirect RDMA നൽകുന്നു.
ഇത് എങ്ങനെ പരിഹരിക്കാം:
നിങ്ങൾ nvidia-drm modeset=1 എന്നത് എനേബിൾ ചെയ്യണം. DMA-BUF പരാജയപ്പെടുന്നതിനുള്ള ഏറ്റവും പ്രധാനപ്പെട്ട കാരണം ഇതാണ്.
നിങ്ങളുടെ നിലവിലെ സ്റ്റാറ്റസ് പരിശോധിക്കുക:
cat /sys/module/nvidia_drm/parameters/modeset
ഇത് 'N' എന്ന് കാണിക്കുന്നുണ്ടെങ്കിൽ, ഈ ഘട്ടങ്ങൾ പാലിക്കുക:
നിലവിലെ സെഷനിൽ ഇത് പരിഹരിക്കാൻ:
sudo modprobe -r nvidia_drm
sudo modprobe nvidia_drm modeset=1
ഇത് സ്ഥിരമായി പരിഹരിക്കാൻ:
echo 'options nvidia-drm modeset=1' | sudo tee /etc/modprobe.d/nvidia-drm-modeset.conf
sudo update-initramfs -u
DMA-BUF-ന് ആവശ്യമായവ: • NVIDIA open kernel driver • ODP സപ്പോർട്ട് ഉള്ള HCA (ConnectX-6 അല്ലെങ്കിൽ ConnectX-7) • Hopper അല്ലെങ്കിൽ പുതിയ GPU (H100, H200, അല്ലെങ്കിൽ B200)
ഇത് പ്രവർത്തിക്കുന്നുണ്ടെന്ന് ഉറപ്പാക്കാൻ, നിങ്ങളുടെ കോഡിൽ ഈ മൂന്ന് ഘട്ടങ്ങളും വിജയകരമാണെന്ന് ഉറപ്പുവരുത്തുക:
- മെമ്മറി അലോക്കേറ്റ് ചെയ്യാൻ
cudaMalloc()ഉപയോഗിക്കുക. - മെമ്മറി ഒരു DMA-BUF file descriptor ആയി എക്സ്പോർട്ട് ചെയ്യാൻ
cuMemGetHandleForAddressRange()ഉപയോഗിക്കുക. - ആ descriptor HCA-യിൽ രജിസ്റ്റർ ചെയ്യാൻ
ibv_reg_dmabuf_mr()ഉപയോഗിക്കുക.
താരതമ്യം:
Legacy (nvidia-peermem):
- MLNX_OFED ആവശ്യമാണ്
- ഒരു എക്സ്റ്റേണൽ മോഡ്യൂൾ ആവശ്യമാണ്
- എല്ലാ GPU-കളിലും പ്രവർത്തിക്കും
Modern (DMA-BUF):
- inbox
rdma-core-ൽ പ്രവർത്തിക്കും - എക്സ്റ്റേണൽ മോഡ്യൂൾ ആവശ്യമില്ല
- Hopper അല്ലെങ്കിൽ പുതിയവയിൽ പ്രവർത്തിക്കും
- NVIDIA ശുപാർശ ചെയ്യുന്നത് ഇതാണ്
നിങ്ങളുടെ InfiniBand പോർട്ടുകൾ INIT മോഡിൽ തന്നെ തുടരുകയാണെങ്കിൽ, ഒരുപക്ഷേ നിങ്ങൾക്ക് ഒരു Subnet Manager ഇല്ലാത്തതുകൊണ്ടാകാം. ഇത് പ്രവർത്തിപ്പിക്കുക:
sudo apt install opensm
sudo systemctl start opensm
Source: https://dev.to/fpolica91/nvidia-peermem-invalid-argument-fix-2b3n
Optional learning community: https://t.me/GyaanSetuAi