在CUDA错误后重置GPU和驱动程序

时间:2012-06-03 15:07:37

标签: windows cuda gpu

有时,我的CUDA程序中的错误会导致桌面图形中断(在Windows中)。通常情况下,屏幕仍然有些可读,但是当图形发生变化时,例如拖动窗口时,会出现大量半随机彩色像素和小块。

我尝试通过更改桌面分辨率来重置GPU和驱动程序,但这没有用。我找到的唯一解决方法是重启计算机。

是否有一个程序或我可以使用一些技巧让驱动程序和GPU重置而不重新启动?

背景:

我有1.0,1.1,1.3和2.0卡,但我现在只有1.1和2.0卡。我在1.0和1.1上看过这个问题。我很确定我在1.3上看过它。我不确定2.0。内存保护是否在1.3左右增加了一些时间?我几乎可以肯定这不是由于硬件不稳定,因为问题似乎是由我的代码中的错误引发的,并且在修复错误时消失了。运行完成的代码后,卡已稳定。我在1.1卡上看到这个问题之后写了这个问题,但是在我修复了一个bug之后它就消失了,现在我没有任何代码可以重现它。也许我应该尝试写入1.1卡上的随机位置,看看是否有任何事情......

5 个答案:

答案 0 :(得分:8)

修改

如果您使用Linux上的Tesla硬件并且可以运行nvidia-smi,那么您可以使用

重置GPU
nvidia-smi -r

nvidia-smi --gpu-reset

以下是此开关的man输出:

  

重置GPU状态。可用于清除双位ECC错误或   恢复挂GPU。需要-i切换到特定设备的目标。   仅适用于Linux。

...否则


真正重置硬件的方法是重启。

你所描述的不应该发生。我建议使用不同的硬件进行测试,并告知我们是否仍然存在。

答案 1 :(得分:2)

我在NVDIA GPU SDK 4.2上有GeForce GTX 260,我遇到了一些问题。 有时开发我在程序中有bug。这会导致屏幕显示此帖中描述的随机彩色像素。

如上所述,如果我改变分辨率,它们就不会消失。此外,如果我只将COLOR DEPTH从32位更改为16位,则随机彩色像素消失,但返回32位(不重新启动)会使它们再次出现。 导致此行为的最后一个错误是使用__constant__内存但将其作为指针传递:

test<<<grid, threadsPerBlock>>>( cuda_malloc_data, cuda_constant_data );

如果我没有通过cudb_constant_data,那么就没有错误(因此,随机彩色像素不会出现)。

答案 2 :(得分:2)

由于有时在Unix上也会发生相同的问题,并且google将我转发到该线程,所以希望对其他人有所帮助。

在ubuntu上卸载和重新加载nvidia内核模块对我来说解决了这个问题:

sudo rmmod nvidia_uvm
sudo modprobe nvidia_uvm

答案 3 :(得分:1)

要在Windows中重置图形堆栈,请按 Win + Ctrl + Shift + B

答案 4 :(得分:0)

  1. 从“设备管理器”的“显示适配器”标签下,找到驱动程序
  2. 禁用它
  3. 按win + Ctrl + Shift + B(显示器将闪烁)
  4. 启用驱动程序

你去了。