CUDA内核调用阻塞

CUDA kernel invocation blocking?

本文关键字:调用 内核 CUDA      更新时间:2023-10-16

我在Arch Linux上运行:

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

kernel<<<blocks,threads>>>();
printf("print immediatelyn"); 
check_cuda_error();

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

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

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

从shell运行提供了预期的结果,所以我认为我自己的问题得到了回答。在下面评论你的见解