GPUDirect от NVIDIA: прямой обмен данными для AI и HPC-инфраструктур

Введение

Ещё до того как искусственный интеллект занял центральное место в мире вычислительных технологий, исследователи в области высокопроизводительных вычислений (HPC) столкнулись с серьёзной проблемой: центральные процессоры перестали справляться с нарастающим потоком сложных расчётов в физике, химии и биологии. Выходом стало массовое применение графических процессоров (GPU) с их тысячами параллельных ядер. Но вместе с GPU появилось новое узкое место — передача данных. Традиционные схемы предполагали многократное копирование информации через оперативную память и буферы CPU, что порождало значительные задержки и неэффективно расходовало вычислительные ресурсы центрального процессора.

Именно для решения этой задачи компания NVIDIA в 2010 году представила технологию GPUDirect. Изначально она создавалась для научного сообщества и сектора HPC с единственной целью: обеспечить прямой обмен данными между GPU и другими компонентами системы — без промежуточных операций копирования через память CPU.

С тех пор контекст применения GPUDirect кардинально расширился. Сегодня, когда обучение и инференс нейронных сетей требуют перемещения гигабайтов данных каждые секунды, технология стала критически важным фундаментом для современных AI-кластеров. Она решает те же задачи, что и прежде: увеличивает пропускную способность при обмене данными между GPU, сетевыми интерфейсами и системами хранения, снижает латентность до минимума и освобождает CPU от рутинных операций перемещения данных.

В этом материале от СервакМастер мы подробно разберём, что представляет собой GPUDirect, какие разновидности технологии существуют, как она работает на архитектурном уровне и почему без неё невозможно построить эффективную современную вычислительную инфраструктуру.


Что такое GPUDirect?

GPUDirect — это не одна отдельная функция, а целый программно-аппаратный стек, разработанный NVIDIA. Его смысл заключается в предоставлении периферийным устройствам (другим GPU, сетевым картам, накопителям) возможности напрямую обращаться к видеопамяти (VRAM) графических процессоров — минуя оперативную память и вычислительные ядра CPU.

По своей концепции GPUDirect близок к идеологии RDMA (Remote Direct Memory Access): оба подхода направлены на минимизацию задержек передачи данных и снятие нагрузки с центрального процессора. Разница в том, что GPUDirect специализируется именно на GPU-памяти как источнике или получателе данных.


Разновидности GPUDirect

Технология реализована в нескольких вариантах, каждый из которых оптимизирует определённый путь передачи данных.

GPUDirect Peer-to-Peer (P2P)

Эта разновидность предназначена для серверов и рабочих станций с несколькими GPU. Она позволяет графическим процессорам, установленным в одной системе, обмениваться данными напрямую через шину PCI Express — без промежуточной буферизации в ОЗУ. Данные перемещаются из видеопамяти одного GPU непосредственно в видеопамять другого, что радикально сокращает время передачи внутри узла.

GPUDirect RDMA

Ключевая технология для многоузловых кластерных решений. GPUDirect RDMA позволяет сетевым адаптерам с поддержкой RDMA — таким как NVIDIA ConnectX с InfiniBand или Ethernet-адаптеры с протоколом RoCE — напрямую читать и записывать данные в видеопамять GPU через сеть. При этом ОЗУ хоста не участвует в процессе ни на передающем, ни на принимающем узле. Это делает GPUDirect RDMA незаменимым инструментом для обмена данными между GPU, физически расположенными на разных серверах в HPC-кластере или AI-ферме.

GPUDirect Storage (GDS)

Этот вариант ускоряет доступ к данным на локальных и сетевых устройствах хранения. GDS позволяет совместимым накопителям (в первую очередь NVMe SSD и устройствам NVMe over Fabric) передавать данные напрямую в VRAM, обходя системные буферы CPU. Это особенно важно при обучении крупных языковых и мультимодальных моделей, когда системе постоянно требуется загружать обучающие датасеты, а также при высокоскоростной аналитике больших объёмов данных.


Как работает GPUDirect?

На архитектурном уровне GPUDirect опирается на механизм прямого доступа к памяти (DMA) и шину PCIe. Специализированные драйверы — CUDA, драйверы сетевых адаптеров и драйверы подсистем хранения — совместно с аппаратными блоками IOMMU в GPU и периферийных устройствах координируют весь процесс.

Когда приложению необходимо передать данные, например от сетевой карты к GPU, драйверы настраивают DMA-движки адаптера на прямой доступ к физическим адресам видеопамяти. Сетевой адаптер, обязательно поддерживающий RDMA, инициирует передачу данных через PCIe самостоятельно — без участия CPU и без использования системной оперативной памяти в качестве промежуточного буфера.

Результат: данные перемещаются по кратчайшему пути, задержки сводятся к минимуму, а CPU остаётся свободным для задач управления и бизнес-логики приложения.


Преимущества использования GPUDirect

Применение GPUDirect даёт ощутимый выигрыш сразу по нескольким параметрам:

  • Снижение задержек. Исключение промежуточных буферов в памяти CPU сокращает латентность передачи данных до минимально достижимых значений — конкретные цифры зависят от типа оборудования, объёма передаваемых данных и конфигурации драйверов.

  • Высвобождение ресурсов CPU. Центральный процессор больше не тратит вычислительные мощности на перемещение данных и может полностью сосредоточиться на логике приложения, планировании задач и управлении кластером.

  • Увеличение пропускной способности ввода/вывода. Прямой доступ к VRAM позволяет достичь максимально возможных скоростей передачи данных, ограниченных только пропускной способностью линий PCIe и самих устройств.

  • Рост общей производительности системы. Совокупный эффект от снижения латентности и освобождения CPU заметен на уровне приложений. В частности, использование GPUDirect RDMA в кластерных системах способно увеличить производительность межсерверных коммуникаций на 30–50% и более по сравнению с традиционными подходами.


Области применения GPUDirect

Технология GPUDirect стала неотъемлемым компонентом любой серьёзной GPU-вычислительной инфраструктуры:

  • Суперкомпьютеры и HPC-кластеры. GPUDirect применяется для ускорения межузловых коммуникаций через MPI, что повышает эффективность масштабных параллельных расчётов — моделирования физических, химических и биологических процессов, вычислительной гидродинамики и других задач.

  • Обучение и инференс AI-моделей. Технология обеспечивает быструю загрузку обучающих данных в GPU и ускоряет обмен градиентами и весовыми параметрами между графическими процессорами в гетерогенных многоузловых системах.

  • Обработка больших данных. В Big Data-системах GPUDirect сокращает время доступа к данным из хранилищ и ускоряет их последующую обработку на GPU.

  • Периферийные вычисления. В ряде систем технология используется для эффективной обработки потоков данных от датчиков или видеокамер непосредственно на GPU без лишних задержек.

  • Специализированные платформы. Системы NVIDIA DGX и NVIDIA HGX, а также кластерные конфигурации на базе InfiniBand или высокоскоростного Ethernet в значительной мере опираются на возможности GPUDirect для достижения максимальной производительности.


Аппаратные и программные требования

Для полноценной работы GPUDirect необходима совместимость как на уровне аппаратного обеспечения, так и программного стека.

Поддерживаемые GPU

GPUDirect поддерживается профессиональными ускорителями NVIDIA: серия Tesla начиная с архитектуры Kepler, а также A100, L40, H100, H200, B200 и B300. Потребительские видеокарты GeForce поддержку актуальных версий GPUDirect не получают.

Сетевые адаптеры

Для GPUDirect RDMA требуются адаптеры с поддержкой RDMA-интерфейсов — например, NVIDIA ConnectX с InfiniBand или Ethernet-адаптеры с поддержкой RoCE — и соответствующие производительные драйверы.

Программное обеспечение

Обязательна установка актуальных драйверов NVIDIA CUDA. Для сетевых функций необходима поддержка CUDA-aware MPI в используемых библиотеках — Open MPI, MVAPICH2 и других. Для GPUDirect Storage дополнительно потребуются CUDA Toolkit актуальной версии, специальный драйвер GDS и совместимая файловая система с поддержкой библиотеки libcufile.so.

Конфигурация PCIe

Система должна поддерживать P2P-коммуникации через PCIe и располагать достаточным количеством линий для прямого взаимодействия GPU и сетевого адаптера. Поддержка GPUDirect не привязана к конкретной версии PCIe — она определяется топологией подключения устройств и поддержкой со стороны платформы: чипсета, CPU и настроек BIOS.

Операционная система

GPUDirect поддерживается серверными дистрибутивами Linux — Ubuntu, Debian, CentOS, RHEL и другими. Windows Server формально совместим, однако используется значительно реже из-за ограничений совместимости с CUDA и меньших возможностей тонкой настройки.


Вывод

GPUDirect — это один из ключевых технологических фундаментов, на котором строятся современные AI- и HPC-инфраструктуры. Без возможности прямого обмена данными между GPU, сетевыми картами и накопителями без участия CPU масштабируемость вычислительных кластеров упиралась бы в непреодолимые узкие места.

Совокупность трёх вариантов технологии — P2P, RDMA и Storage — позволяет охватить все сценарии передачи данных: внутриузловой обмен между GPU, межузловые коммуникации в кластере и быстрый доступ к данным на накопителях. Результат — минимальная латентность, высокая пропускная способность и разгруженный CPU, готовый заниматься своими прямыми задачами.

Следует учитывать, что GPUDirect является проприетарной разработкой NVIDIA, что ограничивает её применение экосистемой продуктов компании и дополнительно укрепляет позиции NVIDIA на рынке AI-ускорителей. Для платформ AMD существует собственный аналог — ROCm RDMA, которому СервакМастер посвятит отдельный материал.

Если вас интересует подбор серверного оборудования с поддержкой GPUDirect — свяжитесь с нами, специалисты СервакМастер помогут подобрать оптимальную конфигурацию под ваши задачи.