各种深度学习,各种相机传感器可能都需要不同的nv+cuda环境,这里总结一下通用流程。
1.查看目前系统中安装的nv和cuda版本
查看GPU型号
lspci | grep -i nvidia
查看cuda版本
cat /usr/local/cuda/version.txt
查看nv驱动版本
sudo dpkg --list | grep nvidia-*
cat /proc/driver/nvidia/version
网上搜索一下版本是否匹配,cuda的版本是按“.”之后算的,10.1和10.0是不一样的,而且没有向下兼容一说,最终确定自己需要什么样的版本组合,并下载好runfile,放在home目录下面,添加可执行权限
sudo chmod +x NVIDIA-Linux-x86_64-410.93.run
chmod +x cuda_10.0.130_410.48_linux.run
2.卸载现安装在系统中的nv+cuda
1)卸载cuda,我安装的是cuda8.0
sudo /usr/local/cuda-8.0/bin/uninstall_cuda_8.0.pl
卸载之后,还有一些残留的文件夹,之前安装的是CUDA 8.0。可以一并删除:2
sudo rm -rf /usr/local/cuda-8.0/
2) 卸载nv驱动
这个稍微复杂一些
a)查看nouveau是否禁用
lsmod | grep nouveau
无输出说明禁用了,如果没有禁用,执行下面命令使其禁用
sudo vim /etc/modprobe.d/blacklist.conf
在文本最后添加:
blacklist nouveau
options nouveau modeset=0
然后执行:
sudo update-initramfs -u
重启后,执行以下命令,如果没有屏幕输出,说明禁用nouveau成功:
lsmod | grep nouveau
b)卸载旧驱动
Ctrl-Alt+F1
执行以下命令禁用X-Window服务,否则无法安装显卡驱动:
sudo service lightdm stop
进入命令行模式,执行以下三条命令卸载原有显卡驱动:
sudo apt-get remove --purge nvidia*
sudo chmod +x NVIDIA-Linux-x86_64-410.93.run
sudo ./NVIDIA-Linux-x86_64-410.93.run --uninstall
c)安装新驱动
直接执行驱动文件即可安装新驱动,一直默认即可:
sudo ./NVIDIA-Linux-x86_64-410.93.run -no-opengl-files
执行以下命令启动X-Window服务
sudo service lightdm start
最后执行重启命令,重启系统即可:
reboot
3.安装新的nv+cuda
nv上一步末尾已经安好了,这里安装cuda就好了
chmod +x cuda_10.0.130_410.48_linux.run
执行安装包,开始安装:
./cuda_10.0.130_410.48_linux.run
开始安装之后,需要阅读说明,可以使用Ctrl + C
直接阅读完成, 是否安装nv驱动那里选择no
安装完成之后,可以配置他们的环境变量,在vim ~/.bashrc的最后加上以下配置信息:
export CUDA_HOME=/usr/local/cuda-10.0
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
export PATH=${CUDA_HOME}/bin:${PATH}
最后使用命令source ~/.bashrc使它生效,最后一步可能使roscore无法运行,需要搜索一下适合自己的环境变量配置
参考链接:https://blog.csdn.net/qq_33200967/article/details/80689543#_36
4.一些奇怪的坑
1)安装zedsdk2.8时提示找不到cuda10.0,设置了环境变量也没用,综合几个博客,找到解决方法:
原因是CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.0这个cmake变量不对,需要手动设置
https://blog.csdn.net/hjxu2016/article/details/89497760
但是我们是catkin_make,所以需要通过catkin_make把参数传入cmake
https://blog.csdn.net/u013316124/article/details/53021448
综上两点,用如下语句进行安装
catkin_make --cmake-args -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.0
2)安装好cuda后添加环境变量时造成错误
需要修改环境变量如下:
# 这是添加cuda的
export PATH=/usr/local/cuda-10.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64$LD_LIBRARY_PATH
# 这是添加系统的,没有这句就会出现上边的错误
export LD_LIBRARY_PATH=/opt/ros/kinetic/lib