以前的几篇博客,各种搜索,解决问题,最终到了这篇算是解决了。因此,标题部分也是明确表明这个比前几篇应该受到关注。
说下情况,前面也有一些介绍。我有三台工作站,第一台用了一段时间,然后才来的第二台和第三台。其中,第一台单显卡,后两台都是双显卡。第一台dpkg包和apt方式安装cuda,到了后两台却不行了,遇到了依赖问题,用aptitude解决的,这些有博客记录。
后来新工作站1和2用的少,因为很多环境都在第一台,虽然配置弱一些。再后来才用起来1和2,只不过1没太出问题,2出了问题且几经修复。两台工作站都是128G DDR4 ECC,志强Gold 6154 18核心36线程CPU,双1080TI显卡,配置很好,这也是导致我被该问题折腾许久的因素之一。
因为配置很好,我从没怀疑过硬件会出问题。所以我总是用新工作站2对比1,因为他俩配置一模一样,安装的系统,cuda,驱动,各种配置。但是2还是各种崩,好好用着就坏了,包括nvidia的persistent报错,有时候就是cuda报错,有时还有显存堆栈信息。比如这最近的报错就包括“NVRM: os_schedule: Attempted to yield the CPU while in atomic or interrupt context”,都是内核层次的,难找解决办法。
尝尽了各种办法,终于还是找到了原因,或许这就是得来全不费工夫吧,但是这应该也是在踏破铁鞋无觅处的基础上啊。最终想是不是卡问题啊,BIOS中将slot 2的pcie通道禁用,保留了slot 5的,没有问题,系统跑了三四个小时pytorch程序,运行稳定。换了下,保留2槽的显卡,运行3分钟,图像界面卡死,各种报错。重复尝试三次,一样的表现。
最终确定是硬件问题,相同的机器,一张卡正常,换一个就有问题,两张卡一起都不禁用也是一样的问题。至此,学习了各种报错可能的原因,各种命令也尝试了,得到的结果却是硬件问题,我还一直觉得“Nvidia's driver is full of bug, has to reinstall linux”那个是主要原因呢,是有些讽刺。
不过找到问题就好受多了,原来被这些折磨得觉得Linux下各种乱七八糟的配置总容易出诡异的问题,都不喜欢Linux了。现在总算找到问题根源了,结帖了。另外前面的许多尝试可能就没太多参考意义了,比如run文件安装cuda不装驱动,apt方式安装非ppa驱动等操作。
OK,放一个正常工作的效果,虽然只有一个卡了:
@hp-server2:~$ lspci | grep -i vga
2d:00.0 VGA compatible controller: NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (rev a1)
@hp-server2:~$ nvidia-smi
Wed Sep 26 15:44:07 2018
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.48 Driver Version: 390.48 |
|-------------------------------+----------------------+----------------------+
| 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 108... Off | 00000000:2D:00.0 On | N/A |
| 0% 37C P8 11W / 250W | 295MiB / 11170MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1666 G /usr/lib/xorg/Xorg 40MiB |
| 0 1707 G /usr/bin/gnome-shell 49MiB |
| 0 1988 G /usr/lib/xorg/Xorg 142MiB |
| 0 2140 G /usr/bin/gnome-shell 56MiB |
| 0 2154 G /opt/teamviewer/tv_bin/TeamViewer 2MiB |
+-----------------------------------------------------------------------------+