NVRM:Xid:79,GPU 已脱离总线

NVRM:Xid:79,GPU 已脱离总线

我正在尝试在 GeForce GTX 980 Ti GPU 上进行一些深度学习。我有一个 658W 电源,但是当我开始运行 TensorFlow 时,我在 dmesg 中收到以下错误:

[  158.598263] ata2: exception Emask 0x50 SAct 0x0 SErr 0x4090800 action 0xe frozen
[  158.598268] ata2: irq_stat 0x00400040, connection status changed
[  158.598271] ata2: SError: { HostInt PHYRdyChg 10B8B DevExch }
[  158.598277] ata2: hard resetting link
[  159.602605] NVRM: GPU at PCI:0000:01:00: GPU-e29ec6c5-5146-95c4-f09c-68b96546640b
[  159.602609] NVRM: Xid (PCI:0000:01:00): 79, GPU has fallen off the bus.

[  159.602613] NVRM: GPU at 0000:01:00.0 has fallen off the bus.
[  159.602623] NVRM: A GPU crash dump has been created. If possible, please run
               NVRM: nvidia-bug-report.sh as root to collect this data before
               NVRM: the NVIDIA kernel module is unloaded.
[  164.230199] ata2: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[  164.237244] ata2.00: configured for UDMA/133
[  164.237248] ata2: EH complete

似乎只是一次小的电涌就搞垮了我的硬盘和显卡。所以我想知道,也许我可以慢慢地增加我的 GPU,这样它就会以较慢的方式开始使用越来越多的电量,这样它就不会产生这种电涌?

我使用的是 Ubuntu 16.04.1,内核为 4.8.0-34-generic,nvidia 内核版本为 375.26。

nvidia-smi 
Tue Feb  7 15:02:47 2017       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.26                 Driver Version: 375.26                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 980 Ti  Off  | 0000:01:00.0     Off |                  N/A |
|  0%   42C    P0    56W / 275W |      0MiB /  6077MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

我尝试将 GPU 连接到它自己的电源(较旧的 750W,我无法直接在此主板上使用),但发生了类似的事情:

[   81.865432] NVRM: GPU at PCI:0000:01:00: GPU-e29ec6c5-5146-95c4-f09c-68b96546640b
[   81.865437] NVRM: Xid (PCI:0000:01:00): 79, GPU has fallen off the bus.

[   81.865474] NVRM: GPU at 0000:01:00.0 has fallen off the bus.
[   81.865484] NVRM: A GPU crash dump has been created. If possible, please run
               NVRM: nvidia-bug-report.sh as root to collect this data before
               NVRM: the NVIDIA kernel module is unloaded.

并且额外的电源关闭。所以看起来他们真的不喜欢 GPU 被激活。

答案1

按照Xid 错误列表(查看PDF),错误 79(GPU 已掉线) 可能与多种问题有关,例如驱动程序或硬件问题、系统内存损坏、总线错误或热问题(过热)。

跑步NVIDIA X 服务器设置应用程序(附带驱动程序)并检查温度、图形时钟、性能水平和 GPU 利用率水平。

下列邮政(基于此原文)线),建议禁用 PCI-E ASPM(主动状态电源管理)通过将启动参数更改为pcie_aspm=off(它强制禁用 PCIe ASPM)。

相关错误报告:GPU 已掉线

答案2

我解决这个问题的方法肯定不是最好的,但它完成了工作,现在我不再看到这个问题了。实际上,这个问题可能是由多种原因引起的,没有人有明确的解决办法。我尝试了很多建议,但都无济于事。NVIDIA在 Ubuntu 上打开应用程序,禁用 NVIDIA 支持并切换到英特尔图形管理,这样会更省电,不会导致此问题。开发人员在 Linux 上进行的大部分开发工作不需要太多 GPU,因此如果需要,请将笔记本电脑充电,从应用程序中启用 NVIDIA,完成工作,最后在工作完成后再次切换到英特尔。这是我目前正在关注的转变

答案3

我在 Dell Precision M6700 上遇到过这个问题。虽然我花了很长时间才想出解决方案,但解决方案很简单:取出电池(不,我没有使用电池,笔记本电脑始终连接到电源)。

这个想法是在读到“Xid: 79,GPU 已从总线上掉下来”错误也可能与电源问题有关时产生的。显然,电池无法正常工作,这可能是问题所在。

后来我发现在 GRUB 中添加 pcie_aspm=off 也能达到同样的效果(参见https://askubuntu.com/questions/868321/gpu-has-fallen-off-the-bus-nvidia)。

相关内容