Можно ли выполнить операцию 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