RDMA между GPU и удаленным хостом

Можно ли выполнить операцию RDMA между графическим процессором и удаленным хостом?

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

Примечание. У меня есть доступ к кластеру, оснащенному графическими процессорами K80 и сетевыми адаптерами Mellanox.


person JC1    schedule 25.05.2017    source источник
comment
Какая у вас сетевая карта mellanox (какой чип)? Nvidia называет эту функцию GPUDirect RDMA, и она должна поддерживаться в GPU с 2012 года. ваш хост-процессор - это x86/x86_64 или IBM? Какая у вас версия CUDA? Существуют такие публикации, как researchgate.net/publication/ и web.cse.ohio-state.edu/~panda.2/5194/slides /5m_5p_gpu.pdf   -  person osgx    schedule 26.05.2017
comment
У меня есть ConnectX-3 VPI. Центральный процессор x86_64. Версия Cuda — V8.0.61.   -  person JC1    schedule 26.05.2017


Ответы (1)


Можно ли выполнить операцию RDMA между графическим процессором и удаленным хостом?

Да, можно перемещать данные между графическим процессором и картой Infiniband с помощью функции «GPUDirect RDMA» графических процессоров Nvidia Compute (Tesla и Quadro) с 2012 года (графические процессоры класса Kepler и CUDA 5.0). В наборе инструментов CUDA есть веб-страница о GPUDirect RDMA http://docs.nvidia.com/cuda/gpudirect-rdma/

GPUDirect RDMA — это технология, представленная в графических процессорах класса Kepler и CUDA 5.0, которая обеспечивает прямой путь для обмена данными между графическим процессором и сторонним одноранговым устройством с использованием стандартных функций PCI Express. Примерами сторонних устройств являются: сетевые интерфейсы, устройства видеосъемки, адаптеры хранения.

GPUDirect RDMA доступен как на графических процессорах Tesla, так и на Quadro.

Может применяться ряд ограничений, наиболее важным из которых является то, что два устройства должны использовать один и тот же корневой комплекс восходящего канала PCI Express. Некоторые ограничения зависят от используемой платформы и могут быть сняты в текущих/будущих продуктах.

Необходимо внести несколько простых изменений в драйверы устройств, чтобы включить эту функцию с широким спектром аппаратных устройств. В этом документе представлена ​​технология и описаны шаги, необходимые для включения подключения GPUDirect RDMA к графическим процессорам NVIDIA в Linux.

Есть некоторые ограничения: http://docs.nvidia.com/cuda/gpudirect-rdma/index.html#supported-systems

2.4. Поддерживаемые системы

Основные пометки. Несмотря на то, что единственное теоретическое требование для GPUDirect RDMA для работы между сторонним устройством и графическим процессором NVIDIA заключается в том, что они используют один и тот же корневой комплекс, существуют ошибки (в основном в чипсетах), из-за которых он работает плохо или вообще не работает в определенные установки.

Мы можем различать три ситуации, в зависимости от того, что находится на пути между GPU и сторонним устройством: PCIe переключает только один CPU/IOH CPU/IOH ‹-> QPI/HT ‹-> CPU/IOH Первая ситуация, где на пути есть только коммутаторы PCIe, является оптимальным и обеспечивает наилучшую производительность. Второй вариант, в котором задействован один ЦП/ВВГ, работает, но дает худшую производительность (особенно было показано, что пропускная способность однорангового чтения сильно ограничена на некоторых процессорных архитектурах). Наконец, третья ситуация, когда путь проходит по каналу QPI/HT, может сильно ограничивать производительность или даже работать ненадежно. Совет: lspci можно использовать для проверки топологии PCI:

$ lspci -t 

Поддержка платформы Для платформы IBM Power 8 GPUDirect RDMA и P2P не поддерживаются, но явно не отключены. Они могут не работать во время выполнения.

На ARM64 необходимые функции одноранговой связи зависят как от аппаратного, так и от программного обеспечения конкретной платформы. Таким образом, хотя в этом случае GPUDirect RDMA явно не отключен, нет никаких гарантий, что он будет полностью функциональным.

IOMMUs GPUDirect RDMA в настоящее время полагается на то, что все физические адреса одинаковы с точки зрения различных устройств PCI. Это делает его несовместимым с модулями IOMMU, выполняющими любую форму перевода, кроме 1:1, поэтому они должны быть отключены или настроены для сквозного перевода, чтобы GPUDirect RDMA работал.

person osgx    schedule 25.05.2017
comment
Проверьте также stackoverflow.com/search?q=GPUDirect и stackoverflow.com/questions/31046386/ Как использовать GPUDirect RDMA с Infiniband — вы необходимо установить следующее: установлен Mellanox OFED. Установлен последний пакет NVIDIA CUDA. "nofollow noreferrer">mellanox.com/related-docs/prod_software/ - person osgx; 26.05.2017