0
我有以下多GPU CUDA代碼爲我的第一次:爲什麼多個GPU CUDA代碼失敗?
int main(void) {
int count;
cudaGetDeviceCount(&count);
float** gtt = new float*[count];
for (int i=0; i< count; i++) {
cudaSetDevice(i);
int j;
cudaGetDevice(&j);
printf("get device %d\n",j);
cudaMalloc((void**)>t[i], 2*sizeof(float));
cudaFree(gtt[i]);
}
}
我發現在同一節點上3個設備,但對第二GPU運行段故障。我有一個4010的CUDA版本,計算能力爲2.0。
您應該爲每個API調用添加錯誤檢查。可能會有一些重要的信息丟失。 – talonmies
@ talonmies我做了,但結束了同樣的事情。 –
segfaults通常意味着您正在訪問cpu範圍之外的內存。在做cudaMalloc之前打印出ptr gtt [i]。 –