NVIDIA Linux Open GPU ड्राइवर में P2P सपोर्ट जोड़ा गया

यह प्रोजेक्ट NVIDIA ड्राइवर को fork करके 4090 GPU में P2P सपोर्ट जोड़ता है।

  • ./install.sh चलाकर आसानी से इंस्टॉल किया जा सकता है
  • DKMS में मौजूदा ड्राइवर को पहले हटाना पड़ सकता है
  • सिस्टम में Large BAR सपोर्ट होना चाहिए और IOMMU बंद होना चाहिए
  • यह निश्चित नहीं है कि सभी cache flush सही तरह से हो रहे हैं, इसलिए कोई issue मिले तो रिपोर्ट करें
  • यह कोई hack नहीं बल्कि PCIe spec के अनुसार किया गया implementation है, और यदि ठीक से व्यवस्थित किया जाए तो upstream में शामिल हो सकता है

यह कैसे काम करता है

मौजूदा NVIDIA P2P की समस्याएँ

  • पहले GPU के बीच memory transfer के लिए MAILBOXP2P नाम का hardware interface इस्तेमाल होता था
  • 4090 में यह hardware मौजूद नहीं है या disabled है, इसलिए P2P काम नहीं करता
  • शुरुआती ड्राइवरों ने इसे गलत तरीके से काम कर रहा बताया, लेकिन वास्तव में ट्रांसफर PCIe bus के जरिए हो रहा था
  • लेकिन mailbox hardware न होने की वजह से कॉपी किया गया डेटा सही जगह नहीं जा रहा था और इससे सिस्टम crash हो सकता था

Large BAR सपोर्ट जोड़ना

  • कुछ 3090 और सभी 4090 में NVIDIA ने Large BAR सपोर्ट जोड़ा
  • H100 में mailbox की जगह सीधे BAR इस्तेमाल करने वाला BAR1P2P नाम का PCIe mode जोड़ा गया
  • 4090 में इसे सक्षम करने के लिए HAL को bypass करके GH100 methods को सीधे कॉल करना पड़ा
    • kbusEnableStaticBar1Mapping_GH100 जैसे methods से पूरे VRAM को BAR1 पर map किया गया
    • MapAperture function में उस region के उपयोग को disable करना पड़ा

P2P सक्षम करने में कठिनाइयाँ

  • VRAM mapping के बाद भी cuda-samples का ./simpleP2P चलाने पर MMU error आया
    • यह mapping type के रूप में GMMU_APERTURE_PEER इस्तेमाल करता है, जो 4090 में supported नहीं है
    • 4090 में supported types सिर्फ GMMU_APERTURE_VIDEO, GMMU_APERTURE_SYS_NONCOH, GMMU_APERTURE_SYS_COH हैं
  • GMMU_APERTURE_PEER को GMMU_APERTURE_SYS_NONCOH में बदला गया
    • क्योंकि CPU L2 cache के साथ coherence की जरूरत नहीं थी, लेकिन PCIe bus के जरिए बाहर जाना जरूरी था
  • peer address field fldAddrPeer को fldAddrSysmem में बदला गया
  • fabricBaseAddress field में BAR1 आधारित address सेट किया गया

काम करने की पुष्टि

  • ./simpleP2P के सही तरह से काम करने की पुष्टि हुई
    • GPU0 और GPU1 के बीच 24GB/s की speed पर P2P काम किया
  • p2pBandwidthLatencyTest से bidirectional bandwidth की पुष्टि की गई
    • 920GB/s की local bandwidth और 51GB/s की P2P bandwidth मापी गई
  • NCCL tests से compatibility की पुष्टि हुई
    • 6x 4090 GPU के साथ औसत bus bandwidth 24.5GB/s हासिल हुई

GN⁺ की राय

  • लगता है कि NVIDIA ड्राइवर का बड़ा हिस्सा open source के रूप में उपलब्ध होने के कारण डेवलपर कम्युनिटी ऐसे प्रयास कर पाई। उम्मीद है कि आगे और हिस्से भी open source होंगे।
  • अगर 4090 की मजबूत performance को कई कार्ड जोड़कर इस्तेमाल किया जा सके, तो व्यक्तिगत डेवलपर या छोटे labs भी बहुत बड़े AI models को train कर पाएंगे।
  • लेकिन hardware पर इतनी निर्भर और जटिल चीज़ों को डेवलपर्स को खुद संभालना पड़े, यह इस बात का भी संकेत है कि NVIDIA ने अभी 4090 सपोर्ट पूरी तरह पूरा नहीं किया है।
  • यह बात अभी Linux ड्राइवर तक सीमित है, और Windows पर commercial उपयोग अभी भी दूर की बात लगती है। उम्मीद है NVIDIA जल्द आधिकारिक सपोर्ट दे।
  • चूँकि 4090 बहुत नया hardware है, इसलिए CUDA, PyTorch, Tensorflow जैसी libraries या ML frameworks के साथ पूरी compatibility की उम्मीद करना मुश्किल लगता है। स्थिर होने तक इंतजार करना पड़ सकता है।

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.