𝗡𝗩𝗜𝗗𝗜𝗔 𝗣𝗘𝗘𝗥𝗠𝗘𝗠 𝗜𝗡𝗩𝗔𝗟𝗜𝗗 𝗔𝗥𝗚𝗨𝗠𝗘𝗡𝗧 ਠੀਕ ਕਰਨ ਦਾ ਤਰੀਕਾ

ਜਦੋਂ ਤੁਸੀਂ Ubuntu 'ਤੇ sudo modprobe nvidia-peermem ਚਲਾਉਂਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ "Invalid argument" ਦੀ ਗਲਤੀ (error) ਦਿਖਾਈ ਦਿੰਦੀ ਹੈ।

ਇਹ ਇਸ ਲਈ ਹੁੰਦਾ ਹੈ ਕਿਉਂਕਿ ਤੁਸੀਂ ਸਟੈਂਡਰਡ Ubuntu InfiniBand stack ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹੋ। nvidia-peermem ਮੋਡਿਊਲ ਨੂੰ ਇੱਕ ਖਾਸ API ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ ਜੋ ਸਿਰਫ਼ MLNX_OFED ਵਿੱਚ ਮਿਲਦੀ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ inbox rdma-core stack ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋ, ਤਾਂ ਮੋਡਿਊਲ ਹਮੇਸ਼ਾ ਫੇਲ ਹੋ ਜਾਵੇਗਾ।

ਇਸ ਨੂੰ ਠੀਕ ਕਰਨ ਲਈ ਸਿਰਫ਼ MLNX_OFED ਇੰਸਟਾਲ ਨਾ ਕਰੋ। ਇਹ ਇੱਕ ਭਾਰੀ ਅਤੇ ਬੇਲੋੜਾ ਕਦਮ ਹੈ।

ਜੇਕਰ ਤੁਸੀਂ NVIDIA open driver ਦੇ ਨਾਲ Hopper ਜਾਂ Blackwell GPUs ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ nvidia-peermem ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ। ਇਸ ਦੀ ਬਜਾਏ ਤੁਹਾਨੂੰ DMA-BUF ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ। ਇਹ ਨੈਟਿਵਲੀ (natively) GPUDirect RDMA ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।

ਇਸ ਨੂੰ ਕਿਵੇਂ ਠੀਕ ਕਰੀਏ:

ਤੁਹਾਨੂੰ nvidia-drm modeset=1 ਨੂੰ ਇਨੇਬਲ (enable) ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। DMA-BUF ਦੇ ਫੇਲ ਹੋਣ ਦਾ ਇਹ ਸਭ ਤੋਂ ਆਮ ਕਾਰਨ ਹੈ।

ਆਪਣੀ ਮੌਜੂਦਾ ਸਥਿਤੀ ਦੀ ਜਾਂਚ ਕਰੋ: cat /sys/module/nvidia_drm/parameters/modeset

ਜੇਕਰ ਇਹ N ਦਿਖਾਉਂਦਾ ਹੈ, ਤਾਂ ਇਹਨਾਂ ਕਦਮਾਂ ਦੀ ਪਾਲਣਾ ਕਰੋ:

ਮੌਜੂਦਾ ਸੈਸ਼ਨ (session) ਲਈ ਠੀਕ ਕਰਨ ਲਈ: 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)

ਇਹ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਕਿ ਇਹ ਕੰਮ ਕਰ ਰਿਹਾ ਹੈ, ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਹਾਡੇ ਕੋਡ ਵਿੱਚ ਇਹ ਤਿੰਨ ਕਦਮ ਸਫਲ ਹੁੰਦੇ ਹਨ:

  1. ਮੈਮੋਰੀ ਅਲਾਟ ਕਰਨ ਲਈ cudaMalloc()
  2. ਮੈਮੋਰੀ ਨੂੰ DMA-BUF ਫਾਈਲ ਡਿਸਕ੍ਰਿਪਟਰ ਵਜੋਂ ਐਕਸਪੋਰਟ ਕਰਨ ਲਈ cuMemGetHandleForAddressRange()
  3. ਉਸ ਡਿਸਕ੍ਰਿਪਟਰ ਨੂੰ HCA ਨਾਲ ਰਜਿਸਟਰ ਕਰਨ ਲਈ ibv_reg_dmabuf_mr()

ਤੁਲਨਾ:

Legacy (nvidia-peermem):

  • MLNX_OFED ਦੀ ਲੋੜ ਹੈ
  • ਇੱਕ ਬਾਹਰੀ ਮੋਡਿਊਲ ਦੀ ਲੋੜ ਹੈ
  • ਸਾਰੇ GPUs 'ਤੇ ਕੰਮ ਕਰਦਾ ਹੈ

Modern (DMA-BUF):

  • inbox rdma-core 'ਤੇ ਕੰਮ ਕਰਦਾ ਹੈ
  • ਕਿਸੇ ਬਾਹਰੀ ਮੋਡਿਊਲ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ
  • Hopper ਅਤੇ ਨਵੇਂ ਮਾਡਲਾਂ 'ਤੇ ਕੰਮ ਕਰਦਾ ਹੈ
  • NVIDIA ਦੁਆਰਾ ਪਸੰਦ ਕੀਤਾ ਜਾਂਦਾ ਹੈ

ਜੇਕਰ ਤੁਹਾਡੇ InfiniBand ਪੋਰਟ INIT ਮੋਡ ਵਿੱਚ ਰਹਿੰਦੇ ਹਨ, ਤਾਂ ਸ਼ਾਇਦ ਤੁਹਾਡੇ ਕੋਲ Subnet Manager ਦੀ ਕਮੀ ਹੈ। ਇਹ ਚਲਾਓ: sudo apt install opensm sudo systemctl start opensm

ਸਰੋਤ: https://dev.to/fpolica91/nvidia-peermem-invalid-argument-fix-2b3n

ਵਿਕਲਪਿਕ ਲਰਨਿੰਗ ਕਮਿਊਨਿਟੀ: https://t.me/GyaanSetuAi