Передача GPUDirect RDMA с графического процессора на удаленный хост
Сценарий:
У меня есть две машины, клиент и сервер, связанные с Infiniband. Серверный компьютер имеет графический процессор NVIDIA Fermi, но клиентский компьютер не имеет графический процессор. У меня есть приложение, работающее на компьютере с графическим процессором, которое использует графический процессор для некоторых вычислений. Данные результатов на графическом процессоре никогда не используются сервером, а вместо этого отправляются напрямую на клиентский компьютер без какой-либо обработки. Прямо сейчас я делаю cudaMemcpy
получить данные из графического процессора в системную память сервера, а затем отправить их клиенту через сокет. Я использую SDP для включения RDMA для этого общения.
Вопрос:
Могу ли я воспользоваться преимуществами технологии NVIDIA GPUDirect, чтобы избавиться от cudaMemcpy
позвонить в этой ситуации? Я считаю, что у меня правильно установлены драйверы GPUDirect, но я не знаю, как инициировать передачу данных, не предварительно скопировав их на хост.
Я предполагаю, что невозможно использовать SDP в сочетании с GPUDirect, но есть ли другой способ инициировать передачу данных RDMA с графического процессора серверного компьютера на клиентский компьютер?
Бонус: если у somone есть простой способ проверить правильность установки зависимостей GPUDirect, это также будет полезно!
2 ответа
GPUDirect RDMA - это новая функция, которая будет реализована в сотрудничестве с бесконечными партнерами NVIDIA. Он был анонсирован с CUDA 5.0, но пока недоступен. Следите за обновлениями на странице GPUDirect.
Я хотел бы поделиться своим расследованием по этому вопросу. Для использования GPUDirrect между графическим процессором и сетевой картой ваша сетевая карта должна поддерживать RDMA. Итак, если вы используете, например, сетевую карту NVIDIA Mellanox MCX623106AN-CDAT ConnectX®-6 Dx и, например, карту NVIDIA Quadro с поддержкой RDMA. Вы можете использовать этот пример для отправки данных между графическим процессором и сетевой картой.