ubuntu 16.04 显卡驱动+CUDA+cuDNN安装
##一. ubuntu16.04 安装显卡驱动, CUDA和cuDNN
参考链接
cudnn5+caffe+ubuntu14.04安装配置
Ubuntu16.04 安装NVIDIA英伟达驱动教程 及常见几种报错Error的解决方案
1. 安装显卡驱动
1.1 下载驱动
下载NVIDIA官网的.run文件的驱动文件,利用禁用nouveau的方式进行安装
【http://www.geforce.cn/drivers】下载驱动程序
显卡为:GT 1030 , 对应驱动:NVIDIA-Linux-x86_64-418.56.run
正确步骤的参考链接【https://blog.csdn.net/u010159842/article/details/54344683】
1.2 卸载掉原有nvidia-的驱动
下载好.run文件的驱动后,卸载掉原有nvidia-的驱动
sudo apt-get remove nvidia-*
sudo apt-get remove nvidia*
说明:如果使用的是apt-get安装可以使用这种方法卸载,如果使用的是runfile,则使用–uninstall命令,当然runfile安
装的时候会卸载掉之前的驱动,所以可以不用手动去卸载。
1.3. 禁用nouveau
打开编辑配置文件:
/etc/modprobe.d/blacklist.conf
在最后一行添加:
blacklist nouveau
禁用nouveau第三方驱动,之后也不需要改回来
终端执行以下命令更新一下:
sudo update-initramfs -u
禁用X服务
执行:
sudo /etc/init.d/lightdm stop
重启:sudo reboot
1.4 安装驱动
ctrl + alt + F1
, 进入命令行界面
给驱动run文件赋予执行权限*
sudo chmod a+x NVIDIA-Linux-x86_64-375.20.run
安装(注意 参数)
sudo ./NVIDIA-Linux-x86_64-375.20.run –no-opengl-files
–no-opengl-files #只安装驱动文件,不安装OpenGL文件。这个参数最重要 –no-x-check #安装驱动时不检查X服务 –no-nouveau-check #安装驱动时不检查nouveau
后面两个参数可不加,但我都加了
注意此过程中的选择:
Accept License; Continue Installation; Yes--Register the Kernel module sources with DKMS; Yes--Install NviDia' 32-bit libraries; Installing DKMS kernel module:-------100% Yes--run the nvidia-xconfig...update...
重启,并不会出现循环登录的问题
执行以下命令
nvidia-smi
显示:
安装成功
###2. 安装CUDA
参考:
【https://blog.csdn.net/u010480194/article/details/54287335】
【https://blog.csdn.net/u010480194/article/details/54287335】
2.1 下载显卡支持的CUDA版本
查看支持[https://developer.nvidia.com/cuda-gpus]
官网下载链接[https://developer.nvidia.com/cuda-toolkit-archive]
2.2 检查自己的电脑环境是否具备安装CUDA的条件 (此部分安装官方英文指导pdf来就行)
a) 检查自己的GPU是否是CUDA-capable
在终端中输入: $ lspci | grep -i nvidia ,会显示自己的NVIDIA GPU版本信息
去CUDA的官网查看自己的GPU版本是否在CUDA的支持列表中
If your graphics card is from NVIDIA and it is listed in http://developer.nvidia.com/ cuda-gpus, your GPU is CUDA-capable.
b) 检查自己的Linux版本是否支持 CUDA(Ubuntu 16.04没问题)
c) 检查自己的系统中是否装了gcc
在终端中输入: $gcc –version
可以查看自己的gcc版本信息
gcc 4.8.4
d) 检查是否安装了kernel header
和 package development
在终端中输入: $uname -r
可以查看自己的kernel版本信息 4.15.0-47-generic
在终端中输入:$ sudo apt-get install linux-headers-$(uname -r)
可以安装对应kernel版本的kernel header和package development
一般安装系统时就安装了
如果没有满足要求的话,可以参考cuda的官方文档,里面有详细的针对每个问题的解决方案。
2.3 前面安装驱动已经禁用nouveau了,可以直接安装CUDA
重启电脑,到达登录界面时,ctrl+alt+f1
进入工作台,登录账户
在text mode中输入
sudo service lightdm stop
关闭图形化界面
//切换到cuda安装文件的路径,然后赋予权限
sudo chmod 777 cuda_8.0.61_375.26_linux.run
//运行安装,不安装opengl就在后面加 --no-opengl-libs
sudo sh cuda_8.0.61_375.26_linux.run --no-opengl-libs
//在运行以下代码前,一定要先知道当选择选项 Install NVIDIA Accelerated Graphics Driver for
//nvidia*时候选择取消,其他选项选择yes,或则回车,
//并且查看协议时候有快捷键CART + D
提示是否安装显卡驱动,因为第一步已经装过了,所以这里no:
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 375.26?
(y)es/(n)o/(q)uit: no
然后选择安装目录,默认就好(可以直接回车)
Enter Toolkit Location
[ default is /usr/local/cuda-8.0 ]:
接着是否创建链接,yes创建即可:
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: yes
接下来提示是否安装Sample,程序示例,以及保存位置,最好进行安装,一会测试是否安装成功用,保存位置默认即可
Install the CUDA 8.0 Samples?
(y)es/(n)o/(q)uit: yes
Enter CUDA Samples Location
[ default is /home/relaybot ]: //这里我安装在默认的文件夹下面
其实到现在CUDA 8.0已经安装好了,它的提示中有一段:
Please make sure that
- PATH includes /usr/local/cuda-8.0/bin
- LD_LIBRARY_PATH includes /usr/local/cuda-8.0/lib64, or, add /usr/local/cuda-8.0/lib64 to /etc/ld.so.conf and run ldconfig as root
//添加环境变量和设置
To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-8.0/bin
//可以在 /usr/local/cuda-8.0/bin 里运行卸载程序
安装出现的warning
前面第一步已经安装过NVIDIA的驱动,在安装cuda的过程中没有选择安装Drivers选项,所以出现如下警告
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 361.00 is required for CUDA 8.0 functionality to work.
To install the driver using this installer, run the following command, replacing with the name of this run file:
sudo .run -silent -driver
//缺少一些驱动
Logfile is /opt/temp//cuda_install_6583.log
sudo service lightdm start //重新启动图形化界面。
Alt + ctrl +F7 //返回到图形化登录界面,输入密码登录。
//如果能够成功登录,则表示不会遇到循环登录的问题,基本说明CUDA的安装成功了。
设置环境变量
终端中输入 $ sudo gedit /etc/profile
末尾添加:
官方上面是直接输入。但是在/etc/profile 上写会更好
export PATH=/usr/local/cuda-7.5/bin/:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda7.5/lib64/:$LD_LIBRARY_PATH
然后重新加载环境变量
$ source /etc/profile
查看一下是否设置成功了
$ env
检查Device Node Verification。
检查路径~/dev下 有无存在名为nvidia*(以nvidia开头)的多个文件(device files)
如果没有的话,可以参考官方文档里的指导步骤进行添加。
添加过程:
下新建一个文件modprobe,无后缀,文档内容如下:initialFrenet(1)
#!/bin/bash
/sbin/modprobe nvidia
if [ "$?" -eq 0 ]; then
# Count the number of NVIDIA controllers found.
NVDEVS=`lspci | grep -i NVIDIA`
N3D=`echo "$NVDEVS" | grep "3D controller" | wc -l`
NVGA=`echo "$NVDEVS" | grep "VGA compatible controller" | wc -l`
N=`expr $N3D + $NVGA - 1`
for i in `seq 0 $N`; do
mknod -m 666 /dev/nvidia$i c 195 $i
done
mknod -m 666 /dev/nvidiactl c 195 255
else
exit 1
fi
/sbin/modprobe nvidia-uvm
if [ "$?" -eq 0 ]; then
# Find out the major device number used by the nvidia-uvm driver
D=`grep nvidia-uvm /proc/devices | awk '{print $1}'`
mknod -m 666 /dev/nvidia-uvm c $D 0
else
exit 1
fi
然后在终端执行:
//为/dev文件夹下添加nvidia文件initialFrenet(1)
sudo chmod a+x modprode
sudo ./modprode
检查是否安装成功
检查 NVIDIA Driver是否安装成功
~$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module 375.82 Wed Jul 19 21:16:49 PDT 2017
GCC version: gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
输出NVIDIA Driver的版本号
输出cuda Toolkit的版本号
~$ nvcc -V
export PATH=/usr/local/cuda-7.5/bin/:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda7.5/lib64/:$LD_LIBRARY_PATH
尝试编译cuda提供的例子
切换到例子存放的路径,默认路径是 ~/NVIDIA_CUDA-8.0_Samples
终端输入:$ make
注意:这里的make操作是将Samples文件夹下所有的demo都编译了一遍,所以比较耗时,如果仅仅想测试某个例子,可以进入相应的文件夹去编译即可。
如果出现错误的话,则会立即报错停止,否则会开始进入编译阶段。
注意:如果运行的时候就报错了,错误是缺少一些依赖库,一般情况下也就是这个问题
不过我的电脑没碰到make失败的问题,这时其他博主中描述的。
$ sudo apt-get install freeglut3-dev //安装依赖项
$ sudo apt-get install build-essential
$ sudo apt-get install libx11-dev
$ sudo apt-get install libxmu-dev
$ sudo apt-get install libxi-dev
$ sudo apt-get install ibgl1-mesa-glx
$ sudo apt-get install llibglu1-mesa
$ sudo apt-get install libglu1-mesa-dev
make成功:
"/usr/local/cuda-8.0"/bin/nvcc -ccbin g++ -I../../common/inc -m64 -gencode arch=compute_20,code=compute_20 -o main.o -c main.cpp
nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
"/usr/local/cuda-8.0"/bin/nvcc -ccbin g++ -m64 -gencode arch=compute_20,code=compute_20 -o conjugateGradientPrecond main.o -lcublas -lcusparse
nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
mkdir -p ../../bin/x86_64/linux/release
cp conjugateGradientPrecond ../../bin/x86_64/linux/release
make[1]: Leaving directory `/home/relaybot/NVIDIA_CUDA-8.0_Samples/7_CUDALibraries/conjugateGradientPrecond'
Finished building CUDA samples
relaybot@ubuntu:~/NVIDIA_CUDA-8.0_Samples$
//切换路径 :
relaybot@ubuntu:~/NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release$ ls
alignedTypes cdpSimplePrint cuSolverSp_LowlevelQR interval nbody
shfl_scan simpleMultiCopy SobolQRNG
...
//终端输入 :
feng@feng-Vostro-3670:~/software/NVIDIA_CUDA-10.0_Samples$ cd bin/x86_64/linux/release/
feng@feng-Vostro-3670:~/software/NVIDIA_CUDA-10.0_Samples/bin/x86_64/linux/release$ ./deviceQuery
./deviceQuery Starting...
检查系统和cuda的连接测试
$ ./bandwidthTest
[CUDA Bandwidth Test] - Starting...
Running on...
//...
##3. 安装cuDNN
3.1 下载cuDNN[https://developer.nvidia.com/rdp/cudnn-archive],需要注册用户
下载第三个for linux
将cudnn文件夹下面的文件复制到cuda文件夹中:
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
#下面是建立软链接关系
relaybot@ubuntu:/usr/local/cuda$ sudo ln -sf lib64/libcudnn.so.5.0.5 lib64/libcudnn.so.5
relaybot@ubuntu:/usr/local/cuda$ sudo ln -sf lib64/libcudnn.so.5 lib64/libcudnn.so
relaybot@ubuntu:/usr/local/cuda$ sudo ldcongig #更新一下