Сценарий:
У меня есть две машины, клиент и сервер, подключенные к Infiniband. Серверная машина имеет графический процессор NVIDIA Fermi, а клиентская машина не имеет графического процессора. У меня есть приложение, работающее на машине с графическим процессором, которое использует графический процессор для некоторых вычислений. Данные результата на графическом процессоре никогда не используются серверной машиной, а вместо этого отправляются непосредственно на клиентскую машину без какой-либо обработки. Прямо сейчас я делаю cudaMemcpy
, чтобы получить данные из графического процессора в системную память сервера, а затем отправить их клиенту через сокет. Я использую SDP для включения RDMA для этого сообщения.
Вопрос:
Могу ли я воспользоваться преимуществами технологии NVIDIA GPUDirect, чтобы избавиться от вызова cudaMemcpy
в этой ситуации? Я считаю, что у меня правильно установлены драйверы GPUDirect, но я не знаю, как инициировать передачу данных без предварительного копирования их на хост.
Я предполагаю, что невозможно использовать SDP в сочетании с GPUDirect, но есть ли другой способ инициировать передачу данных RDMA с графического процессора серверной машины на клиентскую машину?
Бонус: если у кого-то есть простой способ проверить правильность установки зависимостей GPUDirect, это тоже будет полезно!
cudaMemcpyAsync
для асинхронного копирования на хост GPU. - person Sayan   schedule 15.08.2012cudaMemcpy
. То, что я ищу, - это способ прямой передачи из графического процессора в память на другом хосте с использованием RDMA и Infiniband. - person DaoWen   schedule 17.08.2012cudaMallocHost
) или использовать функциюcudaHostRegister
. Я предполагаю, что вам просто нужно закрепить память, и GPUDirect включит передачу RDMA, если настройка в порядке (если ваша пропускная способность после этого немного лучше, чем текущая, тогда вы можете быть уверены в улучшении). И насколько я знаю, GPUDirect ускорил бы только cudaMemCpy, и что его нельзя убрать, если у вас много функций memcpy (H2D,D2H), то можно было бы просто использоватьcudaMemcpyDefault
. - person Sayan   schedule 17.08.2012cudaHostRegister
для настройки клиента в качестве удаленного хоста, а затем вызовуcudaMemcpy
для прямой передачи данных с графического процессора на клиент. - person DaoWen   schedule 17.08.2012