3

我正在 GTX 980 ti 卡上尝试动态并行。运行代码的所有尝试都返回“未知错误”。下面显示了带有编译选项的简单代码。

我可以毫无问题地执行内核depth=0。第一次调用孩子时,会给出错误。在这里查看其他问题后将其cudaDeviceSynchronize()包括在内,但没有解决问题。

有任何想法吗?这可能是驱动程序问题吗?

编辑1:

操作系统:Linux-x86_64

英伟达驱动版本:384.59

nvcc 版本 7.5.17

有两个 980 ti 与 PCIe x16 Gen3 连接。该系统还在另一个配置了 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

1 回答 1

1

我能够(?)在带有 Maxwell Titan 卡的机器上重现错误。这是一个手动安装了 CUDA 8.0.61 的 Fedora 24 发行版。驱动程序版本为 375.51。

但是 -无论我是否调用第二个内核,问题似乎只发生cudaDeviceSynchronize()在我的系统上。ker_one()所以也许这就是你看到的问题,而不是动态并行本身。

考虑到@talonmies 的评论,这甚至可能只是一个驱动程序问题。

于 2017-07-31T20:50:38.550 回答