1

我在 Arch Linux 上运行:

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

例如

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

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

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

4

1 回答 1

2

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

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

于 2013-01-02T03:18:52.417 回答