Назад
DOCA GPUnetIO об'єднує GPU-ініційовану мережеву взаємодію в програмному стеку NVIDIA
SiTech AI Team2 хв читання

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, запис усього WQE через BlueFlame для низької затримки на малих чергах та допоміжний режим 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 використовує оператор GPU RoCE Transceiver на основі GPUnetIO для мінімальної двобічної затримки близько 2,6 мікросекунди на IGX Thor з Blackwell GPU та ConnectX-7.

Джерела: Nvidia Dev

SSiTech

SiTech — веброзробка з підтримкою AI

Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.