运行了一个需要GPU的程序,出现以下错误:
RuntimeError: cuda runtime error(100): no CUDA-capable device is detected at /opt/conda/conda-bld/pytorch_158742891666/work/aten/src/THC/THCGeneral.cpp:47
参考这篇博客,需要看NVIDIA的型号,输入:
>>>nvidia-smi
结果:
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
然后搜了搜这个问题,参考这篇博客。首先查看显卡的驱动版本,输入:
>>>cd /usr/src
>>>ls
linux-headers-5.4.0-59-generic linux-hwe-5.4-headers-5.4.0-58 nvidia-440.100
linux-headers-5.4.0-60-generic linux-hwe-5.4-headers-5.4.0-59
linux-hwe-5.4-headers-5.4.0-42 linux-hwe-5.4-headers-5.4.0-60
看到显卡驱动的版本是440.100。
然后输入:
>>>sudo apt-get install dkms
>>>sudo dkms install -m nvidia -v 440.100
Kernel preparation unnecessary for this kernel. Skipping...
Building module:
cleaning build area...
'make' -j16 NV_EXCLUDE_BUILD_MODULES='' KERNEL_UNAME=5.4.0-60-generic IGNORE_CC_MISMATCH='' modules...(bad exit status: 2)
ERROR (dkms apport): binary package for nvidia: 440.100 not found
Error! Bad return status for module build on kernel: 5.4.0-60-generic (x86_64)
Consult /var/lib/dkms/nvidia/440.100/build/make.log for more information.
发现并没有并没有解决这个问题,注意到博客中说到:
ubuntu18.04默认的gcc版本为7.5.0,如果gcc被用户改为较低的版本,需要将gcc的版本改回来,再按照上述步骤去解决。
gcc的版本我之前改成了5.5.0,所以我就先将gcc的版本改回7.5.0。
然后再次输入:
>>>sudo dkms install -m nvidia -v 440.100
Failed to initialize NVML: Driver/library version mismatch
发现仍然有问题。
由于我之前从官网下载的驱动文件还在,就想着按照之前装驱动的方法重新再装一遍驱动,驱动文件名改为了2060.run,输入:
>>>sudo telinit 3
此时电脑黑屏,按CTRL+ALT+F3,输入用户和密码,然后:
>>>sudo chmod +x 2060.run
>>>sudo sh 2060.run -no-opengl-files
后面出现的一系列yes/no的问题我按照这篇博客来选择的。
最后重启电脑,再次输入:
>>>nvidia-smi
结果:
写在最后
1、之前安装好显卡驱动的时候输入nvidia-smi是正常的,现在出错可能是因为装CUDA的时候又给我安装了别的版本的显卡驱动🔗,看来以后装CUDA可得小心点。
2、按照这篇博客,输入
>>>sudo dpkg --list | grep nvidia-*
ii libnvidia-compute-450-server:amd64 450.80.02-0ubuntu0.18.04.3 amd64 NVIDIA libcompute package
ii nvidia-cuda-dev 9.1.85-3ubuntu1 amd64 NVIDIA CUDA development files
ii nvidia-cuda-doc 9.1.85-3ubuntu1 all NVIDIA CUDA and OpenCL documentation
ii nvidia-cuda-gdb 9.1.85-3ubuntu1 amd64 NVIDIA CUDA Debugger (GDB)
ii nvidia-cuda-toolkit 9.1.85-3ubuntu1 amd64 NVIDIA CUDA development toolkit
ii nvidia-opencl-dev:amd64 9.1.85-3ubuntu1 amd64 NVIDIA OpenCL development files
ii nvidia-profiler 9.1.85-3ubuntu1 amd64 NVIDIA Profiler for CUDA and OpenCL
ii nvidia-visual-profiler 9.1.85-3ubuntu1 amd64 NVIDIA Visual Profiler for CUDA and OpenCL
>>>cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module 440.100 Fri May 29 08:45:51 UTC 2020
GCC version: gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
显示驱动版本还是不匹配,但程序能运行,我也就暂时不管了(脑壳疼)。
如果我操作或理解有什么不对的地方,恳请指正。