安装完成可通过以下两个命令查看,查看结果如图所示(我的是418.87版本)。
cat /proc/driver/nvidia/version
nvidia-smi
先通过 https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html 官网查看cuda和显卡驱动的版本对应表(你的驱动版本可以大于CUDA要求的驱动版本,但不能小于)。
看完对应表后就可以下载cuda了,但是官网首页的CUDA一般是最新版,我们可能需要下载旧版本,https://developer.nvidia.com/cuda-toolkit-archiv,进入这个网址下载可以看到旧版本列表,如下图所示。
点击相应版本,进入下图界面,选择Linux,系统架构X86_64位,Ubuntu16.04版本,然后选择runfile(local)是一个完整的包,deb(network)得半途从官网下载一些组件(笔者下载runfile)。
① 好多博客都是要求先关闭nouveau,因为和显卡驱动冲突,但是我们这是仅仅安装cuda,显卡驱动已经安装过了,所以nouveau应该已经是被禁用的(反正笔者的已经是禁用的,没有任何输出),如果你没禁用那就禁用一下吧,用以下命令查看nouveau是否被禁用。
② 好多博客也是要求进入文本用户界面进行安装(其实是显卡驱动和cuda一起安装才需要),然后笔者由于文本用户界面登录不了(据说是系统kenerl太高),于是尝试直接在图像用户界面安装,结果安装成功。
1.直接终端在cuda.run文件目录打开终端,运行以下命令进行安装
sudo sh cuda_10.0.130_410.48_linux.run
然后一直回车直到问你是否同意用户协议(Do you accept the previously read EULA?),此时有一系列问题,问题回答如下图,然后安装成功。
解释以下
① Do you accept the previously read EULA?(是否同意用户协议)
选择 accept
② Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?
输入 n,因为我们已经安装显卡驱动了,现在不用安装。
③ Install the CUDA 10.0 Toolkit?
输入 y
④ Enter Toolkit Location(选择安装路径,默认/usr/local/cuda-10.0就行)
输入 回车
⑤ Do you want to install a symbolic link at /usr/local/cuda?
输入 y
⑥ Install the CUDA 10.0 Samples?
输入 n,因为cuda自带的,笔者手误选了y。
安装完成后,底部有一些注意事项,如图
上图提示不完全安装,没有安装cuda驱动(因为我们已经安装了显卡驱动,而且版本高于cuda10.0最低版本的要求,不用管),此时使用 nvcc -V 是查看不到cuda信息的,因为上图提示PATH和LD_LIBRARY_PATH需要确定,在~/.bashrc加入图中那两行命令并保存source一下,结果可查看到cuda版本,如下图。
sudo gedit ~/.bashrc #(打开bashrc文件)
在bashrc文件底部加入以下两行
export PATH=/usr/local/cuda-10.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH
保存退出,然后编译一下bashrc文件。
source ~/.bashrc #(编译bashrc文件,更新系统设置)
如果还想验证一下cuda是否正常工作,可以输入以下命令验证,结果都是result=pass就是安装成功。
cd /usr/local/cuda-10.0/samples/1_Utilities/deviceQuery
make
./deviceQuery
cd ../bandwidthTest
make
./bandwidthTest
去官网 https://developer.nvidia.com/rdp/cudnn-archive 选择相应版本点击,然后在展开的页面选择“cudnn library for linux”下载cudnn包,不要选择“cudnn library for Ubuntu16.04”,下载下来还是Windows的安装包。
下载后解压得到cuda文件夹
tar -xzvf cudnn-10.0-linux-x64-v7.6.5.32.tgz
解压后将文件拷贝到cuda的目录下
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 #给文件赋权限,好像可以不执行权限就可以验证成功,可以先不执行这个命令测试一下
查看cudnn版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
因为项目需要pytorch1.1.0版本,所以去torch官网的历史版本https://pytorch.org/get-started/previous-versions/中下载pytorch1.1.0和torchvision0.3.0,笔者喜欢pip安装,不喜欢anaconda,所以直接去https://download.pytorch.org/whl/cu100/torch_stable.html(不同cuda版本,把cu100改成相应版本,比如cu92)下载cuda10.0版本的torch文件,如下图。
由于项目需求需要安装3.8版本的python,但是Ubuntu自带3.5,本来想试试3.5可不可以,但是发现不行,所以只能再装3.6(不需要卸载3.5版本,可能卸载会导致系统不稳定,可以多版本兼容,最后改一下python指向即可)。
① https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz到官网下载python2.7
② 解压
tar -zxvf Python-3.7.1.tgz
③
cd Python3.7.1
./config
④
make #编译
sudo make install #安装
⑤ 更改python3.7和pip3.7的指向,为了避免Python多版本的冲突,重定向至python37和pip37,如下图所示。
sudo ln -s /usr/local/bin/python3.7 /usr/bin/python37
sudo ln -s /usr/local/bin/pip3.7 /usr/bin/pip37
接下来在下载下来的torch,whl目录打开终端,执行命令安装,如下图
安装完成后输入以下代码测试
import torch
torch.cuda.is_available()
a=torch.Tensor([1.])
a.cuda()
from torch.backends import cudnn
cudnn.is_acceptable(a.cuda())
结果如下图成功