笔者操作的系统为Ubuntu16.04,显卡为1080Ti,在反复重装CUDA的过程中遇到了不少问题,而网上博客的相关解决方法真的良!莠!不!齐!以下为笔者遇到并解决的坑,以及一些小Tips:
笔者从NVIDIA官网装好最新的NVIDIA GPU驱动(440)、装好CUDA后,nvcc -V有CUDA版本信息,未重启,输入nividia-smi,系统报了“no CUDA-capable device is detected”的ERROR,运行神经网络框架Darknet报了“Failed to initialize NVML: Driver/library version mismatch”的ERROR,笔者一开始采用了如下两篇博客中的操作Ubuntu中Failed to initialize NVML: Driver/library version mismatch问题的解决、出现“no CUDA-capable device is detected”报错解决,用sudo apt-get install重新安装驱动,结果系统报了CUDA安装时的GPU驱动版本与当前GPU驱动不匹配的错。
参考详解Ubuntu16.04安装nvidia驱动+CUDA+cuDNN的教程,必须先装驱动,而后重启!这种情况下重启即可解决no CUDA-capable device is detected的ERROR!!
Ubuntu安装NVIDIA最新驱动的方法如下:
到如下NVIDIA官网网址中搜索并下载自己电脑所搭载的NVIDIA显卡对应的驱动:https://www.nvidia.cn/Download/index.aspx?lang=cn,记住这个目录!
如果原先驱动由apt-get安装,则用:
sudo apt-get remove --purge nvidia*
sudo apt-get remove --purge nvidia-*
如果原先驱动由.run文件安装,则用
sudo chmod +x *.run
sudo ./.run --uninstall
删除。
sudo gedit /etc/modprobe.d/blacklist.conf
在文本最后添加并保存:
blacklist nouveau
options nouveau modeset=0
然后在命令行中运行:
sudo update-initramfs -u
重启,在命令行中输入:
lsmod | grep nouveau
如果无输出则代表nouveau禁用成功。
关闭图形界面:
sudo service lightdm stop
按Ctrl+Alt+F1进入系统1号命令行,输入Ubuntu系统的用户名、密码登录。
cd到先前下载的驱动目录下,输入:
sudo chmod +x .run
sudo ./.run –no-opengl-files
重启!!然后新开一个命令行输入
nvidia-smi
nvidia-settings
前者有输出显卡信息框,后者有打开显卡设置界面即为安装成功。
watch -n 1 -d nvidia-smi
1s更新一次,会占用一个命令行。
笔者下载的是CUDA9.0,网址为:https://developer.nvidia.com/cuda-90-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1604&target_type=deblocal,常用的Installer Type一般是deb(local)或者runfile(local),前者安装时需要联网下载的内容较少,笔者较熟悉;后者安装后自带CUDA卸载脚本。
以deb(local)的安装为例,直接参考选好Type后下方的官方安装命令:
sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb
sudo apt-key add /var/cuda-repo-/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda
其中cuda-repo-
还有就是要注意Darknet之类环境适配的CUDA版本,笔者先前试过CUDA9.2与Darknet不适配,不知道现在CUDA10时候能适配,建议在网上看看别人成功使用的版本配套方案。版本安装错误后一定要按照本文第5点的方法卸载先前安装的CUDA版本,不然CUDA多版本冲突的问题可比Python多版本冲突的问题烦多了。
上一步的链接中不仅包括Base Installer,还有官方对CUDA的后续补丁Patch 1到Patch 4,它们的安装方法在网上较为小众,参考CUDA 9.0在Ubuntu上的安装,对Patch1到4依次如下操作:
sudo dpkg -i .deb
sudo apt-get update
sudo apt-get upgrade cuda-9-0
网上各博客对CUDA的卸载描述各不相同,,很多完全就没有卸载干净。
本机的解决:
sudo apt-get remove cuda*
sudo apt-get remove --purge cuda*
sudo apt-get update
cd /usr/local/
sudo rm -r cuda-*
然后删除环境变量:
sudo gedit ~/.bashrc
在打开的本文中搜索“cuda”,删掉包含cuda的那几行。
cuDNN是CUDA的辅助包,能提高神经网络的训练、推理效率,一般在CUDA安装后安装,官网下载地址为:https://developer.nvidia.com/rdp/cudnn-download,Login后选择匹配CUDA版本的cuDNN版本,下载cuDNN Library for Linux的版本,解压并cd进解压后的目录(默认名称为cuda),用如下方法安装:
sudo cp include/cudnn.h /usr/local/cuda-9.0/include/
sudo cp lib64/* /usr/local/cuda-9.0/lib64/
其中cuda-9.0部分根据本机的cuda版本进行修改。
欢迎探讨!