2016-11-11 6 views
0

Ich versuche, GPUDirect einzurichten, um Infiniband Verben Rdma Anrufe direkt im Gerätespeicher zu verwenden, ohne cudaMemcpy verwenden zu müssen. Ich habe 2 Maschinen mit nvidia k80 GPU Karten jeweils mit Treiberversion 367.27. CUDA8 installiert und Mellanox OFED 3.4 Auch die Mellanox-nvidia GPUDirect Plugin installiert ist:GPUDirect für Infiniband einrichten

-bash-4.2$ service nv_peer_mem status 
nv_peer_mem module is loaded. 

Nach diesem thread "How to use GPUDirect RDMA with Infiniband" ich alle Voraussetzungen für GPUDirect haben und der folgende Code sollte erfolgreich ausgeführt werden. Aber das tut es nicht und ibv_reg_mr schlägt mit dem Fehler "Bad Address" fehl, als wäre GPUDirect nicht richtig installiert.

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); 

Informationen angefordert:
mlx5 verwendet wird.
Last Kernel-Log:

[Nov14 09:49] mlx5_warn:mlx5_0:mlx5_ib_reg_user_mr:1418:(pid 4430): umem get failed (-14) 

bin ich etwas fehlt? Brauche ich noch andere Pakete oder muss ich GPUDirect irgendwie in meinem Code aktivieren?

+0

Verwenden Sie den Treiber 'mlx4' oder' mlx5'? Sehen Sie im Kernel-Protokoll weitere Fehler oder Warnungen? –

+0

Nur um sicher zu sein, können Sie überprüfen, dass der 'cudaMalloc()' Aufruf nicht fehlgeschlagen ist? –

+0

cudaMalloc ist fehlgeschlagen. – kusterl

Antwort

2

Ein häufiger Grund für das Fehlschlagen des Moduls nv_peer_mem ist die Interaktion mit Unified Memory (UVM). Könnten Sie versuchen, UVM zu deaktivieren:

export CUDA_DISABLE_UNIFIED_MEMORY=1 

?

Wenn das Ihr Problem nicht behebt, sollten Sie versuchen, validation und copybw Tests von https://github.com/NVIDIA/gdrcopy zu testen, um GPUDirectRDMA zu überprüfen. Wenn es funktioniert, ist Ihr Mellanox-Stack falsch konfiguriert.

+1

Export CUDA_DISABLE_UNIFIED_MEMORY = 1 hat es funktioniert. Danke – kusterl

+0

Meinst du "wenn es nicht funktioniert"? – JC1