
DOCA GPUnetIO აერთიანებს GPU-ინიცირებულ ქსელურ ურთიერთქმედებას NVIDIA-ს პროგრამულ სტეკში
DOCA GPUnetIO CUDA-ს ბირთვებს აძლევს საერთო GDA-KI საფუძველს, რომ Ethernet, RDMA, Verbs და DMA ოპერაციები პირდაპირ მართონ და CPU კრიტიკული გზიდან მოშორდეს. ახლა NCCL, NVSHMEM, UCX/NIXL და Holoscan ერთ იმპლემენტაციას ეყრდნობიან.
საერთო საფუძველი GPU-ინიცირებული ქსელისთვის
DOCA GPUnetIO არის GPU-ზე ორიენტირებული ქსელური SDK ფენა რეალურ დროში პაკეტების დამუშავებისა და მონაცემთა გადაადგილებისთვის. ის აერთიანებს GPUDirect RDMA-ს, GPUDirect Async Kernel-Initiated (GDA-KI) და GDRCopy-ს, რათა CUDA-ს ბირთვებმა პირდაპირ მართონ Ethernet, RDMA, Verbs და DMA ოპერაციები, CPU კი კრიტიკული გზიდან მოშორდეს. NVIDIA-ს თქმით, ეს ერთიანი GDA-KI საფუძველია, რომელსაც NVSHMEM, NCCL, Aerial 5G SDK, UCX/NIXL, NVQLink Holoscan Sensor Bridge-თან, Holoscan Advanced Network Operator, DeepEP/HybridEP იყენებენ.
ღია კოდი და SDK-ის ვარიანტები
NVIDIA GPUnetIO-ს სრული DOCA SDK-ის სუპერნაკრებად და უფრო მსუბუქ, ღია კოდის Verbs-ზე ორიენტირებულ იმპლემენტაციად აწვდის. SDK-ის ვერსია მოიცავს Verbs, Ethernet, DMA და Comm Channel-ს, ღია ვერსია კი სრულად ღია ტრანსპორტის მსურველ ჩარჩოებს ემსახურება. ღია იმპლემენტაცია გაშვების დროს ამოიცნობს DOCA SDK-ს და dlopen-ით იძახებს შერჩეულ დახურულ ფუნქციებს, თუ გარემოს ცვლადი სწორ გზაზე მიუთითებს; თუ არა, დამოუკიდებლად მუშაობს. ორივე ფორმა მოწყობილობაზე ორიენტირებულ CUDA API-ს ავლენს, რაც GPU-ს პროგრამირების მოდელს ერთგვაროვანს ინახავს.
მართვის გზა, მონაცემთა გზა და API-ები
GPUnetIO-ს აპლიკაციები CPU-ს მართვის გზით იწყება: ინიციალიზდება GPU და ქსელი, ნაწილდება მეხსიერება, იქმნება ტრანსპორტის ობიექტები და დესკრიპტორები GPU-ს მეხსიერებაში გადადის. doca_gpu_verbs_create_qp_hl-ის მსგავსი დამხმარეები RDMA-ს რიგის წყვილის შექმნასა და დაკავშირებას ამოკლებს. GPU-ს მონაცემთა გზაზე CUDA-ს ნაკადები WQE-ებს ათავსებენ, ბარათის კარზე ზარს რეკავენ და საჭიროებისამებრ დასრულების ჩანაწერებს ამოწმებენ. კარის ზარის რეჟიმებია MMIO ჩაწერები CUDA-ს მეხსიერებიდან, BlueFlame-ით მთელი WQE-ს ჩაწერა დაბალი ლატენტურობისთვის მცირე რიგებზე და CPU-ს დამხმარე რეჟიმი პირდაპირი GPU-NIC კავშირის გარეშე სისტემებისთვის, მაგალითად DGX Spark. Ethernet-ისა და RDMA Verbs-ისთვის მაღალი დონის გამოძახებები (doca_gpu_dev_verbs_put_signal, doca_gpu_dev_eth_txq_send) სინქრონიზაციას და კარის ზარის გაგზავნას ნაკადის, warp-ის ან ბლოკის დონეზე მართავს. დაბალი დონის პრიმიტივები WQE-ების მომზადებას, რიგების გაგზავნასა და დასრულებების ამოწმებას იძლევა, მაგრამ ნაკადის მიმართ უსაფრთხო არ არის და აპლიკაციის სინქრონიზაციას საჭიროებს. მაგალითები ღია რეპოზიტორიასა და DOCA SDK-შია.
NCCL-ისა და NVSHMEM-ის ინტეგრაციები
NCCL GIN ავლენს მოწყობილობის მხარეს put, get, signal, wait და flush პრიმიტივებს. NCCL 2.27-დან GIN ღია კოდის GPUnetIO Verbs-ის გზას GDA-KI-ის ბექენდად იყენებს: GIN-ის ოპერაციები GPUnetIO-ს გამოძახებებზე აისახება WQE-ს მომზადების, კარის ზარის რეკვისა და დასრულების ამოწმებისთვის. NVSHMEM 3.7-მა დაამატა GPUnetIO-ს ტრანსპორტი, რომელიც IBGDA-ს სტრუქტურას მიჰყვება და დაბალი დონის დიდ ნაწილს GPUnetIO-ს გამოძახებებით ცვლის. ის მხარს უჭერს GDA-KI-ს და ჰოსტის მიერ ინიცირებულ RDMA-ს, რომლებიც NVSHMEM_REMOTE_TRANSPORT=gpunetio და NVSHMEM_GPUNETIO_ENABLE_GDAKI=1-ით ირჩევა. NVQLink იყენებს GPUnetIO-ზე დაფუძნებულ GPU RoCE Transceiver ოპერატორს დაახლოებით 2,6 მიკროწამი მინიმალური ორმხრივი ლატენტურობისთვის IGX Thor-ზე Blackwell GPU-სა და ConnectX-7-თან.
წყაროები: Nvidia Dev
SiTech — AI-გაძლიერებული ვებ დეველოპმენტი
ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.