我有一个python3program,它涉及到cuda kernel的执行。在
当我在下面的配置中启动代码时,它运行得很好
但是,当在同一台机器上使用GeForce GTX 970时,我得到了以下错误:
cuMemFree failed: the launch timed out and was terminated
PyCUDA WARNING: a clean-up operation failed (dead context maybe?)
请注意,当我使用较少的线程调用内核时(即,在每个块的线程数不变的情况下,网格维数很小),不会发生此错误。在
In this post,Andreas解释了错误消息的含义:
This means your context went away while PyCUDA was still talking to it. This will happen most often if you perform some invalid operation (such as access out-of-bounds memory in a kernel).
换句话说,这似乎表明我编写的内核有问题。然而,由于代码在其他GPU上启动时不会引发错误,我想知道其他问题是否也会引发相同的错误。在
所以我的问题是:
我可以理解,这里很多人对没有代码和最少例子的问题过敏。我试图编写一个简单的示例来重现错误,但我做不到。希望输入参数加倍的内核运行良好,达到内存错误的极限。。。所以我希望能得到一些建议,在搜索错误时,应该朝哪个方向看。在
正是塔龙密斯对这个问题的评论使我找到了答案。在
问题是其中一个卡(GTX 970)同时用于系统的图形输出。正如所解释的here和{a2},这意味着有一个“看门狗”阻止CUDA内核在停止之前运行超过某个最长时间。在
我的解决方案是通过
sudo service lightdm stop
停止X服务器。然后,程序在两张卡上运行,没有出错。在相关问题 更多 >
编程相关推荐