Как сообщает NVIDIA Developer, приложения, использующие графические процессоры (GPU), всё чаще нуждаются в сетевом взаимодействии и перемещении данных, которые должны выполняться как операции, контролируемые GPU, а не как услуги, управляемые центральным процессором (CPU). Когда CPU выступает посредником в каждой сетевой транзакции, он становится узким местом, добавляя задержки и ограничивая эффективность реакций распределённых приложений в реальном времени. NVIDIA DOCA GPUNetIO — это слой сетевого программного обеспечения, ориентированный на GPU, для обработки пакетов в реальном времени и перемещения данных, который решает эту проблему напрямую. DOCA GPUNetIO объединяет такие технологии, как GPUDirect RDMA, GPUDirect Async Kernel-Initiated (GDA-KI) и GDRCopy, чтобы ядра CUDA могли напрямую управлять Ethernet, RDMA, Verbs и DMA-операциями, исключая CPU из критического пути приложения. В частности, DOCA GPUNetIO предоставляет функции CPU на контрольном пути для экспорта объектов транспортировки в памяти GPU, созданных с помощью DOCA Ethernet, DOCA Verbs, DOCA DMA и DOCA CommChannel, а также функции GPU CUDA на пути данных для создания ядер CUDA, которые могут манипулировать экспортированными объектами транспортировки. С момента первого представления обработки пакетов, ориентированной на GPU, с DOCA GPUNetIO, фреймворк значительно развился, превратившись из мощного способа исключения CPU из критического пути в единую основу GDA-KI, интегрированную в NVSHMEM, NCCL, Aerial 5G SDK, UCX/NIXL, NVQLink с оператором Holoscan Sensor Bridge и другими. В данной статье рассматриваются новшества: открытая библиотека, унифицированная архитектура и то, как эти интеграции работают на практике. Унифицированный GPUNetIO имеет важное значение, поскольку до его появления каждая библиотека связи создавала свою собственную отдельную реализацию GDA-KI, инициируемую GPU. Каждая из них работала независимо, имела свои предположения, свой код и собственные затраты на обслуживание. Объединение различных реализаций GDA-KI под эгидой GPUNetIO предоставляет значительное преимущество: вместо того, чтобы каждая библиотека строила и поддерживала свой собственный путь связи на основе GDA-KI, они могут сосредоточиться на единой реализации GPUNetIO GDA-KI, которую могут использовать, улучшать и расширять в одном месте. Это создает общую точку инвестиций для функций, оптимизаций и исправлений ошибок, сокращает дублирование инженерных усилий между SDK и позволяет инновациям, разработанным для одной платформы, быстро становиться доступными для других. Грубо говоря, GPUNetIO становится общей основой GDA-KI, на которой могут строиться несколько библиотек связи, а не набором параллельных, частично перекрывающихся реализаций. Этот унифицированный подход особенно ценен для библиотек более высокого уровня, таких как NIXL/UCX, NCCL и NVSHMEM, которые сотрудничают для обогащения GPUNetIO и все извлекают выгоду из улучшений, сделанных по всему стеку. С точки зрения экосистемы это означает меньшее дублирование кода, меньше фрагментации поведения и гораздо более прочный путь для долгосрочной эволюции. GPUNetIO предлагается в двух взаимосвязанных формах, поскольку экосистема нуждается как в широте, так и в открытости. Полная версия DOCA SDK является супerset: это реализация GPUNetIO, задокументированная в Руководстве по программированию DOCA, и охватывает более широкий стек DOCA, включая (но не ограничиваясь) интеграцией Verbs, Ethernet, DMA и Comm Channel, при этом сохраняя основную модель GPUNetIO, перемещая контрольный путь ближе к GPU и исключая CPU из критического пути приложения. Параллельно NVIDIA также публикует проект GPUNetIO с открытым исходным кодом как более легковесную реализацию, ориентированную на RDMA-Verbs, предназначенную для фреймворков, которые хотят оставаться полностью открытыми в том, как они интегрируют сетевые транспорты. Сегодня открытая версия является меньшим подмножеством, ориентированным на Verbs, в то время как версия DOCA SDK является супerset, который добавляет более широкие возможности, такие как более богатая поддержка RDMA, Ethernet и DMA. Это разделение не связано с созданием двух расходящихся программных стеков. Речь идет о предоставлении общей открытой основы для связи RDMA, инициируемой GPU, при этом оставляя путь к более продвинутым функциональным возможностям, когда доступен DOCA SDK. Материал подготовлен нейросетью на основе оригинальной публикации. ИИ может ошибаться в деталях (цифры, имена, даты, цитаты) — для важной информации сверяйтесь с первоисточником.