CUDA内核调用阻塞?

时间:2013-01-02 01:23:10

标签: c++ cuda blocking

我在Arch Linux上运行:

我已经在多个地方读过内核调用与CPU异步(将立即返回并允许CPU继续)。但是,我没有得到那种行为。

e.g。

kernel<<<blocks,threads>>>();
printf("print immediately\n"); 
check_cuda_error();

CPU似乎已锁定,并且在内核完成之前不会打印任何内容(同样没有其他任何内容执行)。测试了各种不同执行时间(1s,2s,3s等)的内核和计算,以确保它不是我的内核。

这是驱动程序问题吗?或者我误解了什么

1 个答案:

答案 0 :(得分:2)

我发现当我在X外部运行时(在非图形环境中),我得到了预期的行为。我的假设是,虽然我的GPU在内核中努力工作,但它没有更新屏幕上的图形,因此在打印到控制台之前似乎“挂起”。

从shell运行提供了预期的结果,所以我正在考虑回答我自己的问题。以下评论,您可能有更多的见解