【发布时间】:2012-08-23 06:06:46
【问题描述】:
我的问题很像one。我运行最简单的 CUDA 程序,但内核没有启动。但是,我确信我的 CUDA 安装没问题,因为我可以毫无问题地运行由多个文件(我从其他人那里获取)组成的复杂 CUDA 项目。在这些项目中,编译和链接是通过带有很多标志的 makefile 完成的。我认为问题在于编译时使用的正确标志。我只是使用这样的命令:
nvcc -arch=sm_20 -lcudart test.cu 有这样一个程序(在linux机器上运行):
__global__ void myKernel()
{
cuPrintf("Hello, world from the device!\n");
}
int main()
{
cudaPrintfInit();
myKernel<<<1,10>>>();
cudaPrintfDisplay(stdout, true);
cudaPrintfEnd();
}
程序编译正确。当我添加 cudaMemcpy() 操作时,它不会返回任何错误。关于内核为什么不启动的任何建议?
【问题讨论】:
-
我相信对于计算能力 2.0 或更高版本的设备,您可以直接致电
printf。您可能需要进行一些错误检查,看看是否从您的调用中收到任何错误消息。 -
还要注意您链接到的问题中的第一条评论:stackoverflow.com/questions/9519272/cuda-kernel-not-launching - 您上面的代码绝对没有错误检查 - 这些函数返回状态是有原因的,您知道。
-
@Bart 好的,我现在用printf,把cudaPrinf的东西都去掉了,内核还没有打印出来!