PyCUDA清除错误,CUDA启动超时错误,仅在某些计算机上

2024-05-23 15:58:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python3program,它涉及到cuda kernel的执行。在

当我在下面的配置中启动代码时,它运行得很好

  • GeForce GTX 1080 Ti GPU
  • Ubuntu 16.04
  • CUDA版本8.0.61
  • NVIDIA驱动程序版本384.111
  • Python 3.5.2版
  • PyCUDA版本(2017年1月1日)。在

但是,当在同一台机器上使用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上启动时不会引发错误,我想知道其他问题是否也会引发相同的错误。在

所以我的问题是:

  • 在不利的环境中运行正确编写的内核时,是否也会导致上述错误?在
  • 会不会是NVIDIA驱动程序、CUDA版本、PyCUDA版本和GPU型号错误组合造成的?在
  • 关于驱动程序版本,CUDA版本,PyCUDA版本和GPU模型,我有什么要考虑的,以确保一切正常运行?在

我可以理解,这里很多人对没有代码和最少例子的问题过敏。我试图编写一个简单的示例来重现错误,但我做不到。希望输入参数加倍的内核运行良好,达到内存错误的极限。。。所以我希望能得到一些建议,在搜索错误时,应该朝哪个方向看。在


Tags: 代码pycuda版本gpu错误驱动程序outkernel
1条回答
网友
1楼 · 发布于 2024-05-23 15:58:34

正是塔龙密斯对这个问题的评论使我找到了答案。在

问题是其中一个卡(GTX 970)同时用于系统的图形输出。正如所解释的here和{a2},这意味着有一个“看门狗”阻止CUDA内核在停止之前运行超过某个最长时间。在

我的解决方案是通过sudo service lightdm stop停止X服务器。然后,程序在两张卡上运行,没有出错。在

相关问题 更多 >