【问题标题】:Resetting GPU and driver after CUDA errorCUDA 错误后重置 GPU 和驱动程序
【发布时间】:2012-06-07 22:36:49
【问题描述】:

有时,我的 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 卡上看到这个问题后写了这个问题,但在我修复了一个错误后它就消失了,现在我没有任何代码可以重现它。也许我应该尝试写入 1.1 卡上的随机位置,看看是否有任何事情发生......

【问题讨论】:

  • 您的意思是当您有一个长时间运行的 cuda 程序并且驱动程序崩溃时?
  • @Tudor:不,我不认为将内核因素运行到其中所需的时间。与看门狗定时器无关。
  • 这真的不应该发生,所以你应该测试你的电路板是否有硬件问题。首先尝试更换电路板并运行相同的导致错误的程序,看看是否可以重现它(理想情况下是相同型号电路板和不同电路板的实例)。如果它重现,则不太可能是硬件问题。你也可以试试像this 这样的内存检查器(不确定它是否是最新的)。

标签: windows cuda gpu


【解决方案1】:

因为在 unix 上有时会出现同样的问题,并且 google 将我转发到此线程,我希望这对其他人有所帮助..

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

sudo rmmod nvidia_uvm
sudo modprobe nvidia_uvm

【讨论】:

  • nvidia-smi -r 不起作用,因为“GPU 0 是主 GPU”。这个有效。
  • 我已经重启了几个月。非常感谢。
【解决方案2】:
  1. 从“设备管理器”的“显示适配器”选项卡下,找到驱动程序
  2. 禁用它
  3. 按win + ctrl +shift + B(显示器会闪烁)
  4. 启用驱动程序

你去。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      编辑:

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

      重置 GPU
      nvidia-smi -r
      

      nvidia-smi --gpu-reset
      

      这是此开关的man 输出:

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

      否则……


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

      你所描述的不应该发生。我建议使用不同的硬件进行测试,如果它仍然发生,请告诉我们。

      【讨论】:

      • 感谢您的回答。我添加了一些背景信息。我想知道将其标记为最喜欢的问题的人是否已经看到了该问题。
      • 您添加的内容确实不准确。您需要一个精确的重现案例才能提交错误。
      • 为什么不直接撤消使问题消失的错误修复,然后简化程序以进行简单的测试。
      • 是的,很抱歉描述不准确。我错误地认为这个问题是 CUDA 程序员所熟悉的,并且不认为可能需要重现。我继续使用该应用程序,这次触发它的特定错误早已丢失。我会尝试尝试类似于我当时所做的事情。
      • @harrism,如果我在发出 nvidia-smi --gpu-reset -i 5 后得到以下信息怎么办:指定了一组或多组不完整的 NVLink GPU。 GPU 重置无法运行,因为指定的 GPU 无法验证 NVLink 重置。我正在运行 DGX-1 服务器。
      【解决方案5】:

      我有一个基于 NVDIA GPU SDK 4.2 的 GeForce GTX 260,我遇到了一些问题。 有时开发我的程序中有错误。这会导致屏幕显示本文中描述的随机彩色像素。

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

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

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

      【讨论】:

        猜你喜欢
        • 2020-03-05
        • 2020-03-13
        • 2019-03-04
        • 2014-01-08
        • 1970-01-01
        • 1970-01-01
        • 2020-06-27
        • 1970-01-01
        • 2013-05-11
        相关资源
        最近更新 更多