6

我在尝试启动 CUDA 内核(通过 PyCUDA)时遇到资源不足的错误,我想知道是否可以让系统告诉我我缺少哪个资源。显然系统知道什么资源已经耗尽,我也想查询一下。

我使用了占用计算器,一切似乎都还不错,所以要么没有覆盖一个角落案例,要么我用错了。我知道这不是寄存器(这似乎是通常的罪魁祸首),因为我使用的是 <= 63,但它仍然失败,在 CC 2.1 设备上出现 1x1x1 块和 1x1 网格。

谢谢你的帮助。我在 NVidia 板上发布了一个帖子:

http://forums.nvidia.com/index.php?showtopic=206261&st=0

但没有得到任何回应。如果答案是“您不能向系统询问该信息”,那也很高兴知道(有点……;)。

编辑:

我见过的寄存器使用最多的是 63。编辑上面的内容以反映这一点。

4

2 回答 2

6

我认为 PyCUDA 使用 CUDA 驱动程序 API,因此可能出现以下问题: CUDA_ERROR_LAUNCH_OUT_OF_RESOURCES 如果您没有指定足够的参数,或者在使用cuLaunch()启动内核时为参数指定了错误的大小,则可能会发生。由于您使用的是 PyCUDA,因此很容易将内核所需的参数列表与您实际传递的参数不匹配,因此您可能需要检查您是如何调用内核的。

我认为在这种情况下这是一个名称不佳的错误代码......

于 2011-08-01T06:13:37.790 回答
0

看到这个答案

每个线程的 CUDA 最大寄存器数:sm_12 vs sm_20

似乎 70 个寄存器太多了。

于 2011-07-31T22:51:46.803 回答