==================2020/06/24 一种简单方法=================
利用conda搭建环境
- wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
- bash Miniconda3-latest-Linux-x86_64.sh
- 安装miniconda过程中基本都选‘yes’或者enter
- 退出terminal,再新开一个terminal,然后尝试运行 conda create --name pytorch14 python=3.6.9 pytorch=1.4.0
- 这句的意思是创建一个名为pytorch14的virtual env,要求使用python 3.6.9, pytorch 1.4.0
- conda会自动分析需要安装哪些依赖,以及cuda, cudnn版本等等。(这项功能在pip和virtualenv里好像是没有的)
然后里可以选择y安装,也可以选择n不安装
- 可以尝试一下conda create --name pytorch15 python=3.6.9 pytorch=1.5.0。在我的系统里,conda会说有conflict所以fail掉。不过,这些信息未必完全准确,conflict未必是真的conflict,换句话说就是conda的依赖管理好像有点不准确。
- 因此,我采用先运行conda create --name pytorch15 python=3.6.9 pytorch=1.4.0,然后conda activate pytorch15,绕开conda,直接运行pip3 install torch==1.5.0
==================以下为比较复杂的方法====================
1. 检查一下我们要安装的Tensorflow, Pytorch等的版本-->这些版本要求的CUDA和CUDNN版本-->然后根据CUDA的版本查询出Nvidia Driver的版本。
- 1. pytorch: 从下图中可以看出,为了使用pytorch 1.2.0和1.5,我们需要安装CUDA10.0和10.1.
- 2. https://pytorch.org/get-started/previous-versions/
- 3.
- 4.
- 5. Tensorflow: 从下图中可以看出,我们为了使用TF 1.13 - 2.1,需要安装CUDA 10.0,10.1和cuDNN 7.4,7.6。
- 6. https://www.tensorflow.org/install/source#common_installation_problems
- 7.
- 8. 从https://developer.nvidia.com/rdp/cudnn-archive,我们可以查看对任何一个版本的CUDA,都有哪些版本的cuDNN available。
- 9.
- 10. 从https://www.jianshu.com/p/c9230101a272可以查到CUDA版本和Nvidia GPU driver版本之间的对应关系
- 11.
- 12. 到此为止,我们知道需要安装CUDA 10.0,10.1和cuDNN 7.4,7.6,以及>=418.39的Driver。
2. 安装好Ubuntu18.04后,软件更新器-→设置-→附加驱动。可以看到我们往往已经安装了Nvidia driver.
- 3. Driver版本为435,所以Driver是OK的,无需再装。
4. 安装多个版本的CUDA:https://blog.csdn.net/ksws0292756/article/details/80120561
- 1. 从https://developer.nvidia.com/cuda-toolkit-archive下载CUDA 10.0和10.1的runfile。
- 2.
- 3. #先执行下面的命令安装相关依赖,#否则会出现`Missing recommended library`错误
- 4. sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
- 5. 然后对其中一个CUDA版本,根据网页的说明进行安装
- 6.
- 7. #..一堆协议说明...
- 8. #可以直接按q退出协议说明.
- 9. accept/decline/quit: accept #接受协议
- 10. Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 375.26?
- 11. y)es/(n)o/(q)uit: n #是否显卡驱动包,由于已经安装显卡驱动,选择n
- 12. Install the CUDA 10.1 Toolkit?
- 13. (y)es/(n)o/(q)uit: y #是否安装工具包,选择y
- 14. Enter Toolkit Location
- 15. [ default is /usr/local/cuda-8.0 ]: #工具包安装地址,默认回车即可
- 16. Do you want to install a symbolic link at /usr/local/cuda?
- 17. (y)es/(n)o/(q)uit: y #添加链接**注意这个连接,如果你之前安装过另一个版本的cuda,除非你确定想要用这个新版本的cuda,否则这里就建议选no,因为指定该链接后会将cuda指向这个新的版本**
- 18. Install the CUDA 10.1 Samples?
- 19. (y)es/(n)o/(q)uit: y #安装样例
- 20. Enter CUDA Samples Location
- 21. [ default is /root ]: #样例安装地址默认即可
- 22. # ***安装信息***
5. 配置CUDA相关环境变量:修改~/.bashrc文件
6. #在文件.bashrc结尾处添加
- export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
- export PATH=$PATH:/usr/local/cuda/bin
- export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
10. 到此为止我们完成了第一个CUDA版本10.1的安装。
11. 用同样的方式去下载第二个CUDA版本10.0的runfile
12.
13. 安装Base runfile
- 14. Do you want to install a symbolic link at /usr/local/cuda?
- 15. (y)es/(n)o/(q)uit: n
- 16. 在此过程中也不要去安装Nvidia Driver.
17. 然后用sudo sh xxx.run的方法去安装patch文件
18. 安装成功后,我们会在/usr/local/下面看到cuda-10.0, cuda-10.1两个folder,以及一个指向cuda-10.1的soft link文件cuda.
19. CUDA版本切换:
cd /usr/local/
sudo rm -rf cuda
sudo ln -s cuda-10.0 cuda
20. 检测目前的CUDA版本:nvcc --version
安装cuDNN:https://blog.csdn.net/shangpapa3/article/details/79420183
21. 去官网下载需要的CUDNN(https://developer.nvidia.com/rdp/cudnn-archive),需要邮箱注册。
22.
23. 注意:cuDNN文件是由CUDA版本号和cuDNN版本号共同决定的。我们需要下载的是CUDA10.1对应的cuDNN7.6,和CUDA10.0对应的cuDNN7.4.
24.
25. 这四个文件都需要下载,但只有第一个文件是安装cuDNN所需文件。后三个文件是检测cuDNN是否安装成功用的。
26. 解压 tar zxvf cudnn-10.1-linux-x64-v7.6.0.64.tgz,我会把该目录移到/home/wangding/DW_ALL/Software/下。
27. 删除原来的CUDNN
sudo rm -rf /usr/local/cuda/include/cudnn.h
sudo rm -rf /usr/local/cuda/lib64/libcudnn*
#cd 到刚才解压的文件夹进行安装
sudo cp include/cudnn.h /usr/local/cuda/include/
sudo cp lib64/lib* /usr/local/cuda/lib64/
#cd到/usr/local/cuda/lib64/文件夹下,建立软链接(注意版本号换成你自己的)
cd /usr/local/cuda/lib64/
sudo chmod +r libcudnn.so.7.6.0
sudo ln -sf libcudnn.so.7.6.0 libcudnn.so.7
sudo ln -sf libcudnn.so.7 libcudnn.so
sudo ldconfig
检测cuDNN和CUDA是否安装正确:https://blog.csdn.net/caicaiatnbu/article/details/87626491
现在检查CUDA10.1对应的cuDNN7.6是否安装正确。首先需要把CUDA切换到10.1 (run choose_CUDA_cuDNN.py 10.1 7.6.3),然后运行
sudo dpkg -i libcudnn7_7.6.3.30-1+cuda10.1_amd64.deb
sudo dpkg -i libcudnn7-dev_7.6.3.30-1+cuda10.1_amd64.deb
sudo dpkg -i libcudnn7-doc_7.6.3.30-1+cuda10.1_amd64.deb
cp -r /usr/src/cudnn_samples_v7/ ~/xxxx/
cd ~/xxxx/cudnn_samples_v7/mnistCUDNN
make clean && make
./mnistCUDNN
48. 如果能够成功运行,那就说明该版本的CUDA和cuDNN已经安装成功。
安装好另外一个版本的CUDA对应的某个版本的cuDNN后
需要把上面的测试步骤全都重复一遍,一定要注意切换CUDA版本和cuDNN版本后,再进行make clean和make。
查看所用cuDNN版本:cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
附CUDA,cuDNN版本切换:
run choose_CUDA_cuDNN.py 10.0 7.4.1
run choose_CUDA_cuDNN.py 10.1 7.6.3
choose_CUDA_cuDNN.py:
import os
import sys
from glob import glob
if len(sys.argv) < 3:
print(sys.argv)
print('Need to run this file like this way: python choose_CUDA_cuDNN.py 10.0 7.4')
raise(Exception())
cuda_version = sys.argv[-2]
cudnn_version = sys.argv[-1]
cuda_tmp = glob('/usr/local/cuda-*')
cuda_v_available = [ i.split('-')[-1] for i in cuda_tmp]
print('Available CUDA: %s' % cuda_v_available)
cudnn_tmp = glob('/home/wangding/DW_ALL/Software/cudnn_*')
cudnn_v_available = [ '_'.join(i.split('_')[-2:]) for i in cudnn_tmp]
print('Available cuDNN: %s' % cudnn_v_available)
#choose CUDA version
sudopwd = 'my password'
os.system('echo %s | sudo -S rm -rf /usr/local/cuda' % sudopwd)
os.system('echo %s | sudo -S ln -s /usr/local/cuda-%s /usr/local/cuda' % (sudopwd, cuda_version))
print('==========================CUDA version============================')
os.system('nvcc --version')
#choose cuDNN version
os.system('echo %s | sudo -S rm -f /usr/local/cuda/include/cudnn.h'%sudopwd)
os.system('echo %s | sudo -S rm -f /usr/local/cuda/lib64/libcudnn*'%sudopwd)
#cd 到刚才解压的文件夹进行安装
os.system('echo %s | sudo -S cp /home/wangding/DW_ALL/Software/cudnn_%s_%s/include/cudnn.h /usr/local/cuda/include/' % (sudopwd, cuda_version, cudnn_version))
os.system('echo %s | sudo -S cp /home/wangding/DW_ALL/Software/cudnn_%s_%s/lib64/lib* /usr/local/cuda/lib64/' % (sudopwd, cuda_version, cudnn_version))
#cd到/usr/local/cuda/lib64/文件夹下,建立软链接(注意版本号换成你自己的)
#cd /usr/local/cuda/lib64/
os.system('echo %s | sudo -S chmod +r /usr/local/cuda/lib64/libcudnn.so.%s' % (sudopwd, cudnn_version))
# os.system('echo %s | sudo -S rm /usr/local/cuda/lib64/libcudnn.so.%s'%(sudopwd, cudnn_version.split('.')[0]))
os.system('echo %s | sudo -S ln -sf /usr/local/cuda/lib64/libcudnn.so.%s /usr/local/cuda/lib64/libcudnn.so.%s'%(sudopwd, cudnn_version, cudnn_version.split('.')[0]))
# os.system('echo %s | sudo -S rm -f /usr/local/cuda/lib64/libcudnn.so'%sudopwd)
os.system('echo %s | sudo -S ln -sf /usr/local/cuda/lib64/libcudnn.so.%s /usr/local/cuda/lib64/libcudnn.so'%(sudopwd, cudnn_version.split('.')[0]))
os.system('echo %s | sudo -S ldconfig' % sudopwd)
print('==================cuDNN version================================')
os.system('cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2')
参考:
https://blog.kovalevskyi.com/multiple-version-of-cuda-libraries-on-the-same-machine-b9502d50ae77blog.kovalevskyi.comTensorflow 2.1 running on GPU-Ubuntu 18.04 https://medium.com/@shravan007.c/tensorflow-2-1-running-on-gpu-ubuntu-18-04-76b0c8b0a25d
两种在Ubuntu 18.04上安装Nvidia驱动程序的方法ywnz.comsudo lshw -c display
sudo ubuntu-drivers devices
sudo ubuntu-drivers autoinstall
如果要安装特定驱动程序,请运行以下命令:
sudo apt install nvidia-driver-version-number