torch.cuda.is_available()
返回False,但nvidia-smi可以正常运行。
问题描述
在pytorch用GPU来加速计算时发现。torch.cuda.is_available()
返回False,但nvidia-smi可以正常运行。
1 | >>> import torch |
此时,nvidia-smi
可以正常运行。
可能原因
在nvidia-smi
的运行结果中可以看到,driver version是390.xx
。可能是driver version版本太低,造成了这个问题,实际上也是如此。
driver version的常见版本是384.xx
,390.xx
,396.xx
。接下来,把driver version升级到396.xx
看能不能解决问题。
升级nvidia driver version
卸载旧版本的NVIDIA driver
1
sudo apt-get remove --purge nvidia-\*
添加NVIDIA的ppa源.
1
sudo add-apt-repository ppa:graphics-drivers/ppa
安装新版本的NVIDIA driver
1
sudo apt-get update && sudo apt-get install nvidia-driver-396
此时,运行nvidia-smi
,会报以下错误。
1 | Failed to initialize NVML: Driver/library version mismatch |
这是更新NVIDIA driver版本后的常见问题。这个问题出现的原因是kernel mod的NVIDIA driver版本没有更新。
执行以下命令可以查看nvidia kernel mod的version。
1 | cat /proc/driver/nvidia/version |
可以看到已经加载的nvidia kernel mod的版本是还是旧版本390.xx
。一般情况下,重启服务器就能解决问题。
如果由于某些原因不能重启,可以重新加载kernel mod。思路是先unload kernel mod,再reload kernel mod. 详见解决Driver/library version mismatchnvidia-smi
可以正常运行后,问题就解决了。
1 | >>> import torch |