Я пытаюсь настроить GPUDirect, чтобы использовать бесконечные вызовы rdma для прямого доступа к памяти устройства без использования cudaMemcpy. У меня есть 2 машины с картами nvidia k80 gpu с драйверами версии 367.27. установлен CUDA8 и Mellanox OFED 3,4 Также установлен Mellanox-плагин NVIDIA GPUDirect:Настройка GPUDirect для infiniband
-bash-4.2$ service nv_peer_mem status
nv_peer_mem module is loaded.
По этой теме «How to use GPUDirect RDMA with Infiniband» У меня есть все требования к GPUDirect и следующий код должен работать успешно. Но это не так, и ibv_reg_mr терпит неудачу с ошибкой «Плохой адрес», как если бы GPUDirect был неправильно установлен.
void * gpu_buffer;
struct ibv_mr *mr;
const int size = 64*1024;
cudaMalloc(&gpu_buffer,size); // TODO: Check errors
mr = ibv_reg_mr(pd,gpu_buffer,size,IBV_ACCESS_LOCAL_WRITE|IBV_ACCESS_REMOTE_WRITE|IBV_ACCESS_REMOTE_READ);
Запрашиваемая информация: используется
mlx5.
Последняя Ядро журнала:
[Nov14 09:49] mlx5_warn:mlx5_0:mlx5_ib_reg_user_mr:1418:(pid 4430): umem get failed (-14)
ли я что-то отсутствует? Нужны ли мне некоторые другие пакеты или мне нужно каким-то образом активировать GPUDirect?
Вы используете драйвер 'mlx4' или' mlx5'? Вы видите какие-либо другие связанные ошибки или предупреждения в журнале ядра? –
Чтобы быть уверенным, можете ли вы проверить, что вызов 'cudaMalloc() не прошел? –
cudaMalloc не подвел. – kusterl