Ubuntu16.04 + GPU Tesla V100 + CUDA + CuDNN
前置条件
- 确认你的电脑上有一张支持CUDA的显卡
lspci | grep -i nvidia
只有英伟达的部分中高端显卡才支持CUDA,因此确认是英伟达的显卡之后,还要查看你的显卡型号是否包含在NVIDIA官网的CUDA GPUs列表里面,里面包含的显卡类型都支持CUDA.
- 确认你安装的Linux发行版
查看CUDA支持的Linux版本,确认你的系统是否支持.
uname -m && cat /etc/*release
- 确认你的系统安装了gcc编译工具
这个条件一般情况下是满足的,因为一般的Linux发行版在安装系统时就默认安装了gcc,从这里查看。
运行CUDA程序的时候不需要gcc,但是在使用CUDA工具进行开发的时候需要用到它。可以在bash中输入以下命令确认:
gcc --version
- 确认你的系统已经安装了正确的kernel headers and development packages
在安装CUDA驱动前,必须要安装好与你的Linux系统内核版本相匹配的内核头和开发包。比如你的系统内核版本是3.17.4-301,那么你必须也要安装3.17.4-301版本的内核头和开发包。
使用以下命令确认你的系统内核版本:
uname -r
不同的操作系统,通过这里查看。
1. 基本概念
- CUDA:用于GPU编程的语言,跑TF的时候用了GPU,TF里面很多函数(或者依赖库)是CUDA语言编写的。不同TF版本需要不同的CUDA。
- cuDNN:NVIDIA为深度学习,矩阵运算写的一个加速库。CUDA版本必须和cuDNN版本匹配。cuDNN和TF版本匹配与否则无所谓(不过CUDA和TF版本必须匹配,所以cuDNN版本和TF版本是间接依赖关系)。
- TF:这个没什么好说的。个人经验,别用太新的,如果每次都用最新的,那么进而导致CUDA也要不断更新
- CUDA驱动版本:保持最新就好了,CUDA驱动版本要求和CUDA版本匹配,而CUDA又要求cuDNN/TF是匹配的。不过CUDA驱动版本是向下兼容的,所以保持最新就没事。输入nvidia-smi可以查看。
注:建议先安装 CUDA,再安装 tensorflow ,最后安装 cuDNN,严格按照这个顺序装,可以避免返工,避免一步错就必须重装。
2. 需要用到的文件
2.1 驱动文件
下载地址:https://www.nvidia.com/download/index.aspx?lang=en-us
2.2 CUDA
下载地址: https://developer.nvidia.com/cuda-toolkit-archive
指导资料:
- CUDA Installation Guide for Microsoft Windows;
- NVIDIA CUDA Installation Guide for Linux
- https://blog.csdn.net/baobei0112/article/details/79755803
2.3 CUDNN
下载地址: https://developer.nvidia.cn/rdp/cudnn-archive
下载地址: https://developer.nvidia.com/rdp/cudnn-download
指导资料: https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html
下载账号密码: cudnndown@163.com;Cudnndown123
。这个账号好像失效了。。。
查了下,提供另外一种方式:
来,告诉你不需要登录不需要问卷调查,直接使用apt管理的方法,apt不比下载安装更方便啊。
开放的apt repo,你进去直接下载当然也是可以的。
参考他们N家自己开的docker项目 nvidia / cuda照着它dockerfile里公开的地址,你直接添加到你的ubuntu中就可以。
Index of /compute/cuda/repos/ubuntu1604/x86_64下面是显卡驱动和cuda开发套件。
Index of /compute/machine-learning/repos/ubuntu1604/x86_64 下面是libcudnn和libnccl完美,他家的一切都在这儿了。
作者:任卫
链接:https://www.zhihu.com/question/37082272/answer/330575612
来源:知乎
2.4 Tensorflow
下载地址: https://pypi.tuna.tsinghua.edu.cn/simple;https://pypi.python.org/pypi/
windows whl源:https://www.lfd.uci.edu/~gohlke/pythonlibs/#tensorflow
指导资料:https://www.tensorflow.org/install/pip?hl=ko
2.5 版本配套关系
2.5.1 显卡驱动版本号与CUDA版本号对应关系
2.5.2 cuDNN版本和CUDA版本关系
2.5.3 CUDA-cuDNN-TF的关系
官方资料:https://www.tensorflow.org/install/source#tested_build_configurations
第三方资料:https://blog.csdn.net/oMoDao1/article/details/83241074?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
2.6 相关指导资料
维护多个cuda版本: https://blog.csdn.net/xs11222211/article/details/84782046
- Ubuntu 16.04+1080Ti机器学习基本环境配置:
https://blog.csdn.net/MahoneSun/article/details/80808930
- Ubuntu16.04环境GPU驱动和tensorFlow安装小结 :
http://3ms.huawei.com/hi/group/3050921/wiki_4891955.html
- Ubuntu18.04 Install Cuda、Cudnn、Tensorflow-gpu:
https://blog.csdn.net/qq_34296627/article/details/82833172
- 英伟达驱动卸载:
https://blog.csdn.net/ezhchai/article/details/80536949
- 显卡性能:
https://developer.nvidia.com/cuda-gpus
3. 环境准备和检查
重要:
- 建议按照2.5章节,下载好对应自己目标GPU的cuda、驱动和cudnn版本。
- 装好相应版本的编译器等。
检查:
关闭图形界面:
(1) sudo systemctl set-default multi-user.target
(启动时默认多用户文本界面)
sudo systemctl set-default graphical.target
(启动时默认图形界面)
(2) 或者也可以使用,关闭:sudo service lightdm stop
恢复:sudo service lightdm stop
(3) 关闭显卡驱动:
创建:/etc/modprobe.d/blacklist-nouveau.conf
编辑:blacklist nouveau
执行: options nouveau modeset=0
保存退出执行:sudo update-initramfs –u
验证是否关闭:lsmod | grep nouveau
没有输出则表示屏蔽好了,如果仍有输出,可以尝试重启.
4. 安装驱动
4.1 旧驱动检查
如果有旧的驱动,要完全卸载后再安装新的驱动。
卸载方式: 见4.4章节。
4.2 安装驱动
sudo sh cuda_9.0.176_384.81_linux.run
显示pass 就基本没什么问题了。
4.3 新驱动检查
nvidia-smi
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WAnzlBA5-1593317635768)(http://image.huawei.com/tiny-lts/v1/images/3ae7726cc85a1e89e679_555x160.png@900-0-90-f.png)]
4.4 驱动卸载
停止 lighttdm : sudo service lightdm stop
OR sudo /etc/init.d/lightdm stop
卸载:sudo /usr/bin/nvidia-uninstall
OR sudo apt-get install autoremove --purge nvidia*
OR sudo apt-get remove purge nvidia*
参考资料:https://blog.csdn.net/ezhchai/article/details/80536949
5. 安装CUDA
5.1 安装前准备
-
确认计算机有支持计算的GPU板卡:
lspci | grep –i nvidia (刷新:update-pciids)
uname -m && cat /etc/*release
-
确认计算机是否有正确的kernel headers 和 development packages:
在安装cuda驱动时,安装的内核头和开发包必须和系统运行的内核版本相一致;
在这里查看CUDA支持的内核版本:
-
确认内核版本:
uname -r
-
然后根据你的系统内核版本使用apt命令安装对应的内核头和开发包。在ubuntu中使用以下命令
sudo apt-get install linux-headers-$(uname -r)
当然,如果你的系统本身就满足要求,输入这条命令不会安装新的东西。
其他Linux发行版安装内核头和开发包的命令参考这儿。
【注意】 如果改变了系统内核,对应的内核头和开发包也必须做相应更改,否则cuda将无法使用;
- 确认 gcc版本是否符合要求,对应的 gcc 在这里查看。
gcc --version
5.2 开始安装CUDA
安装有两种方式:run
包 和 deb
包; 下载界面有相关安装方式; 建议用第一种。
两种安装方式的优缺点:
-
使用.run包的优点是支持更多的Linux发行版,不管是使用.deb格式的Ubuntu/Debian,还是使用.rpm格式的其他大多数Linux发行版;其缺点是无法更新Linux系统的本地包管理系统,也就是只能单机/stand alone安装,无法在线更新,而且只支持64位的系统。
-
使用指定发行版的安装包的优缺点和使用.run包刚好相反。
注意: 如果安装过驱动了,cuda
这里装驱动的时候要选 no
。
前面已经手动安装了NVIDIA驱动,所以在安装cuda时,询问是否安装NVIDIA图形驱动时选择否;其他询问默认即可;
sudo sh cuda_.run
(driver 选no
).
5.3 安装CUDA补丁
sudo sh patch1.run
sudo sh patch2.run
sudo sh patch3.run
sudo sh patch4.run
5.4 添加环境变量
5.4.1 etc/profile
$ sudo /etc/profile
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 /etc/profile
。
5.4.2 ~/.bashrc
$ sudo ~/.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
。
5.4.3 移除之前禁用的内容
移除这个文件:/etc/modprobe.d/blacklist-nouveau.conf
5.4.4 重启
5.5 检查
nvcc –V
5.6 卸载CUDA
sudo /usr/local/cuda-8.0/bin/uninstall_cuda-8.0.pl
根据自己安装的版本卸载。
6. 安装tensorflow
6.1 安装前的准备
python2 = 2.7,
python3 = 3.3-3.6,
pip == 20.x,
setuptools >=40.x,
Numpy == 1.16.0 版本太高否则会出现问题 6.5(pip3 install numpy==1.16.0)
# Numpy == 1.16.0这个版本适配 tensorflow==1.12.0版本; 其他版本的tensorflow不一定是这个版本兼容。
6.2 安装tensorflow
注:根据这个地址查看CUDA和CUDNN以及Tensorflow的版本配套关系,安装合适Tensorflow。
Google 官方教程: https://www.tensorflow.org/install/gpu
pip install tensorflow==1.15
pip3 install tensorflow-gpu==1.15
国内:
pip3 install tensorflow==1.12.0 -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip3 install tensorflow-gpu==1.12.0 -i https://pypi.tuna.tsinghua.edu.cn/simple/
建议:1. 换国内源快。2. cpu和gpu版本一致。
6.3 检查gpu和cpu版本的tf
import tensorflow as tf
matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.],[2.]])
product = tf.matmul(matrix1, matrix2)
sess = tf.Session()
print(product)
OR
python -c "import tensorflow as tf; print(tf.__version__)"
这里如果有问题,别急,先把CUDNN装好再检查一遍就知道gpu版本的tf装好了。
6.4 卸载tensorflow
sudo pip_x uninstall tensorflow
sudo pip_x uninstall tensorflow_gpu
7. 安装CUDNN
很简单,把下载好的CUDNN拷贝到安装地址,解压添加环境变量就好,执行以下命令。
tar -zxvf cudnn-9.0-linux-x64-v7.1.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ -d
chmod a+r /usr/local/cuda/include/cudnn.h
8. 可能遇到的问题
- No devices were found https://devtalk.nvidia.com/default/topic/1050968/nvidia-smi-quot-no-devices-were-found-quot-ubuntu-18-04/?offset=1
https://devtalk.nvidia.com/default/topic/1046442/linux/nvidia-smi-no-devices-were-found-/
- 安装tensorflow 很慢
pip install tensorflow == xxx -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install tensorflow-gpu == xxx -i https://pypi.tuna.tsinghua.edu.cn/simple/
- 查看cuda 和 cudnn的版本
查看cuda 版本
cat /usr/local/cuda/version.txt
查看cudnn 版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR –A
- /usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/dtypes.py:523: FutureWarning: Passing (type, 1) or ‘1type’ as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / ‘(1,)type’._np_qint8 = np.dtype([(“qint8”, np.int8, 1)])
https://www.cnblogs.com/youpeng/p/11732790.html
- Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
https://blog.csdn.net/hq86937375/article/details/79696023
- Pip安装很慢:更换pip源
su root
cd /
mkdir .pip
cd .pip
vim pip.conf
文件内容:
[global]
index-url =https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com
- 卸载之后,重启一下。可以看到分辨率有所不同
https://blog.csdn.net/ezhchai/article/details/69663082
中描述的方法,重新安装cuda9.0和cudnn7.0即可。