2017-07-30 42 views
3

我正在嘗試GTX 980 ti卡上的動態並行。 運行代碼的所有嘗試都返回「未知錯誤」。 簡單代碼如下所示,帶有編譯選項。GTX 980 ti上的動態並行:未知錯誤

我可以執行內核depth=0沒有問題。 第一次調用小孩時,會給出錯誤。 cudaDeviceSynchronize()在查看其他問題後被納入,但沒有解決問題。

任何想法?這可能是一個驅動程序問題嗎?

編輯1:

操作系統:Linux-x86_64的

的Nvidia驅動程序版本:384.59

NVCC版本7.5.17

有兩個980 TI與條PCIE x16第3代連接。系統還在另一個配置了RAID的SSD上安裝了Windows。

#include <cuda.h> 
#include <fstream> 
#include <stdio.h> 
#include <stdlib.h> 

__global__ void ker_two(){ 
int two=0; 
two++; 
} 

__global__ void ker_one(){ 
int one=0; 
one++; 
ker_two<<<1,1>>>(); 
cudaDeviceSynchronize(); 
}; 

int main(){ 

ker_one<<<1,1>>>(); 
cudaDeviceSynchronize(); 

cudaError_t err = cudaGetLastError(); 
if (err != cudaSuccess) 
    printf("Cuda Error: %s\n", cudaGetErrorString(err));//*/ 

return 0; 
} 

編譯

nvcc -arch=compute_52 -rdc=true -lcudadevrt test.cu 
+4

我的代碼和編譯命令沒有任何問題。你不會說你的環境(操作系統,驅動程序版本,CUDA版本)。 –

+0

「我正在嘗試動態平行主義」 - 坦率地說?不要打擾。現在它的方式幾乎是不值得的,如果有的話。 – einpoklum

回答

0

我能(?),以重現錯誤的機器上用麥克斯韋泰坦卡。這是一個手動安裝CUDA 8.0.61的Fedora 24發行版。驅動程序版本是375.51。

但是 - 看起來問題只發生在我的系統上,當我在ker_one()內調用cudaDeviceSynchronize()時,無論我是否調用第二個內核。所以也許這就是你所看到的問題,而不是動態並行本身。

考慮到@talonmies的評論,這可能甚至只是一個驅動程序問題。

+0

爲了解決這個問題,我使用367.48驅動程序和Maxwell卡編譯並運行了CUDA 7.5和CUDA 8下的MCVE代碼,但無法重現錯誤 – talonmies