ubuntu18.04 CUDA详解
Ubuntu18.04安装cuda(10.1及10.0)和cudnn
在安装Cuda前首先要根据自己的显卡来安装显卡驱动
1. 安装显卡驱动
1.1 禁用nouveau驱动
在/etc/modprobe.d/blacklist.conf
里添加,如下内容,并执行 sudo update-initramfs -u
命令
blacklist nouveau
options nouveau modeset=0
重启后用lsmod | grep nouveau
, 如果没有任何输出说明禁用成功。
1.2 安装NVIDIA显卡驱动
ubuntu 18.04 直接使用sudo ubuntu-drivers autoinstall
安装的是390的驱动,cuda 10 显卡必须是410以上,所以要安装新一点的驱动
安装更新版本的驱动可以先添加源:
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update
接下来执行:
$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001E87sv00001043sd0000865Fbc03sc00i00
vendor : NVIDIA Corporation
driver : nvidia-driver-470-server - distro non-free recommended
driver : nvidia-driver-450-server - distro non-free
driver : nvidia-driver-418-server - distro non-free
driver : nvidia-driver-470 - distro non-free
driver : nvidia-driver-460 - distro non-free
driver : nvidia-driver-460-server - distro non-free
driver : xserver-xorg-video-nouveau - distro free builtin
recommended
符合我们的要求,我们直接如下指令安装:
$ sudo apt install nvidia-driver-470
2. 安装CUDA10.1
2.1 下载cuda安装包
下载地址如下:
https://developer.nvidia.com/cuda-toolkit-archive
如上有不同的版本,我们这里选择了CUDA10.1(其余版本相同操作方式)
这里下载:cuda_10.1.105_418.39_linux.run
2.2 安装
使用如下命令安装:
$ sudo sh cuda_10.1.105_418.39_linux.run --no-opengl-libs
接下来会出现协议说明,可以直接按q退出协议说明
安装选项,因为已经提前安装了显卡驱动,所以把显卡驱动的安装选项取消掉:
Do you accept the previously read EULA?
accept/decline/quit: accept # 接受协议
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?
(y)es/(n)o/(q)uit: n # 是否安装显卡驱动包,由于已经安装显卡驱动,选择n
Install the CUDA 10.0 Toolkit?
(y)es/(n)o/(q)uit: y # 是否安装工具包,选择y
Enter Toolkit Location
[ default is /usr/local/cuda-10.0 ]: # 工具包安装地址,默认回车即可
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: n # 如果之前安装过另一个版本的cuda,除非你确定想要用这个新版本的cuda,否则这里就建议选n,因为指定该链接后会将cuda指向这个新的版本
Install the CUDA 10.0 Samples?
(y)es/(n)o/(q)uit: y # 安装样例
Enter CUDA Samples Location
[ default is /home/jiaoda ]: # 样例安装地址默认即可
Installing the CUDA Toolkit in /usr/local/cuda-10.0 ...
Missing recommended library: libGLU.so
Missing recommended library: libXmu.so
Missing recommended library: libGL.so
Installing the CUDA Samples in /home/jiaoda ...
Copying samples to /home/jiaoda/NVIDIA_CUDA-10.0_Samples now...
Finished copying samples.
===========
= Summary =
===========
Driver: Not Selected
Toolkit: Installed in /usr/local/cuda-10.0
Samples: Installed in /home/jiaoda, but missing recommended libraries
Please make sure that
- PATH includes /usr/local/cuda-10.0/bin
- LD_LIBRARY_PATH includes /usr/local/cuda-10.0/lib64, or, add /usr/local/cuda-10.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-10.0/bin
Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-10.0/doc/pdf for detailed information on setting up CUDA.
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 384.00 is required for CUDA 10.0 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
sudo <CudaInstaller>.run -silent -driver
Logfile is /tmp/cuda_install_6090.log
# ***安装完成***
2.3 配置环境
终端首先输入:
gedit ~/.bashrc
在打开的 .bashrc末尾添加环境变量
export PATH=/usr/local/cuda/binKaTeX parse error: Expected '}', got 'EOF' at end of input: {PATH:+:{PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64KaTeX parse error: Expected '}', got 'EOF' at end of input: …LIBRARY_PATH:+:{LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda
注意上面的路径都是指向/usr/local/cuda 软连接,并没有写死指向某一个cuda版本,后面切换时不用改路径了,只改软连接指向就可以了。
保存关闭后,执行下面命令,使之立即生效
source ~/.bashrc
另一种vim方式设置环境变量:
vim ~/.bashrc # 修改配置文件
#在结尾处添加
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda
source ~/.bashrc # 让更改生效
输入如下命令,检测是否安装成功:
注意如果存在问题,可尝试重启终端
stat cuda # stat /usr/local/cuda
cat /usr/local/cuda/version.txt
nvcc --version
nvcc -V
ls -al # 在/usr/local目录下查看
3 安装cudnn
3.1 下载cudnn
下载地址:https://developer.nvidia.com/rdp/cudnn-archive
注册一下即可
这里我下载的是对应CUDA 10.1版本的 cuDNN v8.0.5
3.2 安装
下载好后直接解压,得到文件夹 cuda,然后复制lib64和include文件夹到usr/local/cuda-10.0,更改权限,安装完成(此过程可考虑,在UI界面实现直接文件的copy,见补充)。命令如下:
sudo cp cuda/include/cudnn.h /usr/local/cuda-10.0/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-10.0/lib64
sudo chmod a+r /usr/local/cuda-10.0/include/cudnn.h /usr/local/cuda-10.0/lib64/libcudnn*
确定是否安装完成
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
4. CUDA10.0 及其对应cuDNN
4.1 下载CUDA安装包
下载地址如下:
https://developer.nvidia.com/cuda-toolkit-archive
整个过程与前面相似,cuda选择下图中的各个选项,然后下载。这里一共有两个包,一般只下载第一个包,第二个是patch,也就是补丁,可有可无。下载完成后放在主目录中。
下面执行命令进行安装:
sudo sh cuda_10.0.130_410.48_linux.run
然后下面是一堆协议说明,直接按q推出协议说明
Do you accept the previously read EULA?
accept/decline/quit: accept #接受协议
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?
(y)es/(n)o/(q)uit: n #是否已有显卡驱动包,已有则选择n
Install the CUDA 10.0 Toolkit?
(y)es/(n)o/(q)uit: y #是否安装工具包,选择y
Enter Toolkit Location
[ default is /usr/local/cuda-10.0 ]: #工具包安装地址,默认回车即可
Do you want to install a symbolic link at /usr/local/cuda?
这里是建立软连接,若第一次安装cuda,就输入y;若之前安装过其他版本的cuda,则有两种情况,如果想启用当前安装的cuda版本就选y,如果只是安装这个版本就选n。
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: n
#**这里是建立软连接,若第一次安装cuda,就输入y;若之前安装过其他版本的cuda,则有两种情况,如果想启用当前安装的cuda版本就选y,如果只是安装这个版本就选n。**
Install the CUDA 10.0 Samples?
(y)es/(n)o/(q)uit: y
Enter CUDA Samples Location
[ default is /home/zcc ]: #样例安装地址默认即可
Logfile is /tmp/cuda_install_16509.log #**安装完成**
4.2 下载cuDNN安装包
下面是cudnn下载的链接选项,这里选择下面那部分的第三个即“cudnn library for Linux”,下载完成后放在主目录中。
5. CUDA版本切换
到/usr/local/
目录下打开终端
sudo rm -rf cuda #删除之前的软链接(原本指向10.1)
sudo ln -s /usr/local/cuda-10.0 /usr/local/cuda #生成新的软链接,指向10.0
以下四行命令均可以查看当前cuda软链接指向的哪个cuda版本
stat cuda # stat /usr/local/cuda
cat /usr/local/cuda/version.txt
nvcc --version
nvcc -V
ls -al # 在/usr/local目录下查看
cuda-10.1版本时,只需要删除上面的软链接,然后重新建立指向cuda-10.1版本的软链接即可。
sudo rm -rf cuda
sudo ln -s /usr/local/cuda-10.1 /usr/local/cuda
6. 卸载CUDA
如果需要卸载cuda,重新安装的话要根据自己的cuda版本找到卸载脚本:
sudo /usr/local/cuda-10.0/bin/uninstall_cuda_10.0.pl
卸载之后,如有一些残留的文件夹,之前安装的是CUDA 10.0。可以一并删除:
sudo rm -rf /usr/local/cuda-10.0/
补充:ubuntu打开usr/root等文件方法: