Az NVIDIA egységesíti a GPU által vezérelt hálózatkezelést

Az NVIDIA DOCA GPUNetIO olyan egységes szoftveres alapot biztosít, amelyen a CUDA-kernelek közvetlenül vezérelhetik a hálózati és adatmozgatási műveleteket. A megoldás célja, hogy a CPU kikerüljön az alkalmazások kritikus útvonaláról.
- A DOCA GPUNetIO CUDA-kernelekkel vezérelt Ethernet-, RDMA-, Verbs- és DMA-műveleteket tesz lehetővé.
- A megoldás nyílt forráskódú, Verbs-központú változatban és teljes DOCA SDK-rétegként is elérhető.
- Az NCCL, az NVSHMEM, az UCX és NIXL, valamint több NVIDIA-rendszer közös GPUNetIO-alapra épít.
- Az NCCL GIN a 2.27-es verzió óta támogatja a nyílt GPUNetIO Verbs-útvonalat.
- Az NVIDIA szerint az NVQLink körülbelül 2,6 mikroszekundumos minimális oda-vissza késleltetést ér el egy meghatározott konfigurációban.
Közös alap a GPU által indított kommunikációhoz
Az NVIDIA Developer október 6-án bemutatott írása szerint a GPU-ra épülő alkalmazásoknál egyre fontosabb, hogy a hálózatkezelés és az adatmozgatás közvetlenül GPU által vezérelt műveletként működjön. Ha minden hálózati tranzakcióban közvetítő szerepet kap a CPU, az késleltetést okozhat, és korlátozhatja a valós idejű, elosztott alkalmazások működését.
A DOCA GPUNetIO ezt a problémát kezeli GPU-központú hálózatkezelési SDK-rétegként. A GPUDirect RDMA, a GPUDirect Async Kernel-Initiated, röviden GDA-KI, valamint a GDRCopy képességeire építve lehetővé teszi, hogy a CUDA-kernelek közvetlenül Ethernet-, RDMA-, Verbs- és DMA-műveleteket indítsanak. A CPU eközben a vezérlési útvonalon marad, az alkalmazás adatútvonaláról azonban kikerülhet.
A rendszer két részből áll. A CPU-funkciók előkészítik és a GPU számára elérhetővé teszik a DOCA Ethernet, DOCA Verbs, DOCA DMA és DOCA CommChannel által létrehozott memória- és szállítási objektumokat. A GPU-oldali CUDA-funkciók ezután lehetővé teszik, hogy a CUDA-kernelek ezeket az objektumokat használják.
SDK és nyílt forráskódú változat
Az NVIDIA két, egymáshoz kapcsolódó formában kínálja a GPUNetIO-t. A teljes DOCA SDK-változat a szélesebb képességű superset, amely a Verbs mellett többek között Ethernet-, DMA- és CommChannel-integrációt is tartalmaz. Ezt a DOCA programozási útmutató dokumentálja.
Ezzel párhuzamosan elérhető egy könnyebb, nyílt forráskódú GPUNetIO-projekt is. Ez elsősorban az RDMA Verbs útvonalra koncentrál, és azoknak a keretrendszereknek készült, amelyek nyílt módon szeretnék integrálni a hálózati átviteli réteget.
A két változat nem egymástól független szoftveres irány. A nyílt forráskódú megvalósítás futás közben képes felismerni a DOCA SDK jelenlétét, és a dlopen segítségével kiválasztott, zárt SDK-funkciókat is meghívhat. Ha az SDK nem érhető el, a nyílt változat önállóan működik tovább. A Verbs útvonal GPU-oldali API-ja a két kiadásban hasonló, így a CUDA-programozási modell nagyrészt azonos marad.
Több kommunikációs könyvtár épít rá
Az NVIDIA szerint a GPUNetIO korábban különálló GDA-KI-megvalósításokat egyesít. Korábban az egyes kommunikációs könyvtárak saját GPU által kezdeményezett RDMA-útvonalat tartottak fenn, saját kóddal és karbantartási igényekkel. A közös alap csökkentheti a párhuzamos fejlesztést, és lehetővé teszi, hogy egy könyvtárban elkészült optimalizációk és hibajavítások más rendszerekben is megjelenjenek.
A GPUNetIO-ra épül többek között az NCCL, az NVSHMEM, az UCX és NIXL, az Aerial 5G SDK, az NVQLink a Holoscan Sensor Bridge operátorával, a Holoscan Advanced Network Operator, valamint a DeepEP és HybridEP. Az NCCL GIN a 2.27-es verzió óta a nyílt forráskódú GPUNetIO Verbs-útvonalát is használhatja háttérként, így az eszközoldali kollektív algoritmusok közvetlenül a GPU-ról vezérelhetnek RDMA-műveleteket.
Az NVSHMEM 3.7 GPUNetIO-alapú átvitelt vezetett be. Az NVIDIA által közölt mérések szerint a GDA-KI kis üzenetméreteknél kedvezőbb CTA- és QP-skálázást tesz lehetővé, miközben megőrzi az IBGDA teljesítményét. Az NVQLink a GPUNetIO-alapú GPU RoCE Transceiver operátort használja, és az NVIDIA szerint IGX Thor, Blackwell GPU és ConnectX-7 kombinációján körülbelül 2,6 mikroszekundumos minimális oda-vissza késleltetést ér el kvantumklasszikus munkafolyamatokban.
Mit jelent ez a fejlesztőknek?
A GPUNetIO programozási modellje először CPU-oldali vezérlési szakaszt ír elő. Ekkor inicializálják és konfigurálják a GPU- és hálózati eszközöket, lefoglalják a szükséges memóriát, létrehozzák a hálózati szállítási objektumokat, majd ezek releváns elemeit a GPU-memóriában tárolt leíróban exportálják. Az alkalmazás ezután CUDA-kernelt indít a GPU-címmel.
A vezérlési szakasz lezárása után az adatútvonal a GPU-n fut. Egy vagy több CUDA-kernel a GPU-memóriába exportált szállítási objektumokon keresztül küldhet és fogadhat hálózati forgalmat. A fejlesztők számára a közös alap azt jelenti, hogy több kommunikációs keretrendszerhez hasonló GPU-oldali modellt használhatnak, miközben a DOCA SDK szélesebb képességeihez is hozzáférhetnek, ha az SDK jelen van.
NVIDIA Developer: How DOCA GPUNetIO Unifies GPU-Initiated Networking Across the NVIDIA Software Stack


