Ubuntu 16.04, GIGABYTE 3090 X2, 装驱动和pytorch兼容
背景:原有Ubuntu16.04系统,原有1080ti的驱动,然后卸载了1080硬件和驱动,换上了两个3090显卡。需要重新装驱动,cuda等。据说和pytorch兼容有问题,还需要解决这个问题。目标是能跑起来原来的代码。
一、装驱动
步骤参见
https://blog.csdn.net/qq_39248298/article/details/107823324
我装的驱动版本是:NVIDIA-Linux-x86_64-460.67.run,是在这里下载的:https://www.nvidia.cn/drivers/results/171392/
使用nvidia-smi
查询驱动版本。
二、cuda, cudnn
使用了11.2版本,貌似是3090的支持问题?
有两种方式:网上安装,下载安装。我采用的是网上安装,如果下载安装,在这里下载:https://developer.nvidia.com/cuda-toolkit-archive
我采用的是网上安装方法,在这里选择平台和其它参数:
https://developer.nvidia.com/cuda-11.2.0-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1604&target_type=runfilelocal
然后按照下面的代码进行安装。
$wget https://developer.download.nvidia.com/compute/cuda/11.2.0/local_installers/cuda_11.2.0_460.27.04_linux.run
$sudo sh cuda_11.2.0_460.27.04_linux.run
安装过程中,会让用户选择安装项,不用选择显 卡驱动(第一项)因为之前已经安装过了。
可以看到我最开始两次都安装failed,就是因为选了安装显卡驱动,但是因为显卡驱动已经有了,所以就安装失败了。将显卡驱动选项去掉,就安装成功了。
安装完成了,出现了提示,即添加系统路径PATH和库路径LD_LIBRARY_PATH。我做了下述工作:
1)在home下面的bashrc里面,加入了两行:
export PATH="/usr/local/cuda-11.2":$PATH
export LD_LIBRARY_PATH="/usr/local/cuda-11.2/lib64":$LD_LIBRARY_PATH
然后另起一个终端中 source .bashrc。
2)在etc/ld.so.conf中加了一句话:
/usr/local/cuda-11.2/lib64
可以用以下方法写入:
$echo '/usr/local/cuda-11.2/lib‘ >> /etc/ld.so.conf
因为我之前装了cuda8.0,所以在usr/local下面的cuda文件夹仍然是以前cuda8.0的软连接,如果要使用新的cuda版本,要重新设置软连接(切换版本方法)。方法就是删除之前的软连接,建立你想要的版本链接即可:
$sudo rm -rf cuda
$sudo ln -s /usr/local/cuda-10.0 /usr/local/cuda
然后安装cudnn,在网上注册,以前注册就登录https://developer.nvidia.com/rdp/cudnn-download
这个是我下载的
Download cuDNN v8.1.1 (Feburary 26th, 2021), for CUDA 11.0,11.1 and 11.2
下载下来名字为:cudnn-11.2-linux-x64-v8.1.1.33.tgz
然后进行解压缩和拷贝:
$ cd ~/Downloads #文件路径
$ tar xvzf cudnn-11.2-linux-x64-v8.1.1.33.tgz
$ 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 /usr/local/cuda/lib64/libcudnn*
查看cuda版本:
打开终端,输入以下语句即可显示cuda版本。
nvcc --version
或者使用nvidia-smi
查询驱动版本和cuda版本。
三、pytorch 1.7.1
在anaconda环境下安装。首先建立一个新的虚拟环境空间,取名叫做:pytorch171
# To activate this environment, use:
# > source activate pytorch171
#
# To deactivate an active environment, use:
# > source deactivate
发现我的显卡驱动版本太高,导致cuda版本太高,然后pytorch的清华镜像这里目前没有11.2cuda对应的pytorch,
附:清华镜像:https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/?C=M&O=A
然而我也懒得管了直接装pytorch试一下。首先激活pytorch171环境,经试验直接用下面的用conda安装了pytorch和相关需要使用的组件,会报错:
conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=11.0 -c pytorch
报的错为:version libcublasLt.so.11 not defined in file libcublasLt.so.11 with link time reference
然后发现在pytorch环境中,直接pip安装,就没有这个问题了:
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
接下来,运行我的pix2pix代码,发现报错找不到skimage,以及dominate两个module,分别pip安装下就可以了。
安装skimage:
pip install scikit-image
安装dominate:
在pytorch171环境下,用下面语句:
conda install -c conda-forge dominate
然后终端在pytorch171环境下运行:
python test.py --dataroot ./testData/apollo_float_TIF/AB --direction AtoB --model pix2pix --checkpoints_dir /home/yexin/Documents/SFS/pytorch-CycleGAN-and-pix2pix/checkpoints --name pix2pix_float_TIF_AtoB --input_nc 1 --output_nc 1 --num_test 10
发现可以了。