如何诊断由于资源不足导致的CUDA启动失败?

时间:2011-07-31 21:02:19

标签: cuda pycuda

我在尝试启动CUDA内核(通过PyCUDA)时遇到了资源外的错误,我想知道是否有可能让系统告诉我哪个资源是我的简短上。显然,系统知道哪些资源已耗尽,我只想查询它。

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

感谢您的帮助。我在NVidia板上贴了一个帖子:

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

但没有回应。如果答案是“你不能向系统询问那些信息”,那么也应该知道(有点......;)。

修改

我见过的最多注册用法是63.编辑上面的内容以反映这一点。

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:0)

看到这个答案

CUDA maximum registers per thread: sm_12 vs sm_20

看来70个寄存器的寄存器太多了。