更新于2020-4-21
安装前的准备工作
TensorFlow与CUDA、cuDNN版本的对应关系
cuda与显卡驱动的对应关系见NVIDIA CUDA Toolkit Release Notes中CUDA Driver项
版本 | Python 版本 | 编译器 | 构建工具 | cuDNN | CUDA |
---|---|---|---|---|---|
tensorflow_gpu-1.12.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.15.0 | 7 | 9 |
tensorflow_gpu-1.11.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.15.0 | 7 | 9 |
tensorflow_gpu-1.10.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.15.0 | 7 | 9 |
tensorflow_gpu-1.9.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.11.0 | 7 | 9 |
tensorflow_gpu-1.8.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.10.0 | 7 | 9 |
tensorflow_gpu-1.7.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.9.0 | 7 | 9 |
tensorflow_gpu-1.6.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.9.0 | 7 | 9 |
tensorflow_gpu-1.5.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.8.0 | 7 | 9 |
tensorflow_gpu-1.4.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.5.4 | 6 | 8 |
tensorflow_gpu-1.3.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.4.5 | 6 | 8 |
tensorflow_gpu-1.2.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.4.5 | 5.1 | 8 |
tensorflow_gpu-1.1.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.4.2 | 5.1 | 8 |
tensorflow_gpu-1.0.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.4.2 | 5.1 | 8 |
数据来源:TensorFlow
根据TensorFlow官方回复 目前已知tensorflow-gpu-1.13以上版本是基于CUDA10、cuDNN7构建
顺序
- 根据上表自己需要的Tensorflow版本下载对应版本的CUDA和cuDNN
- 安装CUDA(在此之前还需要安装好NVIDIA显卡驱动,本篇不详述)
- 解压cuDNN(这个只文件是个压缩包),并根据教程操作
- 测试是否安装成功
- 安装Anaconda并创建所需环境
- 安装tensorflow-gpu
下载地址
cudnn(需要注册账号)
cuDNN(CUDA Deep Neural Network library):是NVIDIA打造的针对深度神经网络的加速库,是一个用于深层神经网络的GPU加速库。如果你要用GPU训练模型,cuDNN不是必须的,但是一般会采用这个加速库。
安装CUDA
- 增加CUDA文件的执行权限
chmod +x 你下载的cuda文件
- 运行cuda文件(在cuda文件所在目录执行)
./你下载的cuda文件
*** 2020-04-21更新
详见:参考资料1
这一次我装了cuda10.1版本,安装方式有所改变
cuda_10.1.105_418.39_linux.run
是你下载的文件名,根据自己的情况确定
$HOME/cuda10.1
是将cuda安装在你的home
目录下的cuda10.1
文件夹中
1
./cuda_10.1.105_418.39_linux.run --toolkit --toolkitpath=$HOME/cuda10.1 --defaultroot=$HOME/cuda10.1
进入后将安装显卡驱动(driver)选项去掉,按Enter键
最后切换到install
安装
- 按
Ctrl+F
迅速阅读完安装协议 - 输入
accept
同意安装协议 - 询问是否安装显卡驱动(driver installation),建议在此之前安装,此处选择不安装(no)
- 输入cuda安装的位置
- 如果是root用户,可以直接使用默认选项(请记住这个目录,之后要用)
- 非root用户,输入个人用户的目录,如
/home/yourname/cuda9
,
- cuda samples目录同上
安装cuDNN
- 解压cuDNN文件得到CUDA文件夹
tar -xzvf cudnn-9.0-linux-x64-v7.tgz
(后面的名称根据自己的版本确定) - 将cuDNN拷贝到CUDA文件夹
(cuda9是上一项第6步时的目录,如装在个人用户的下的话就是/home/yourname/cuda9
,使用sudo
的话应该是在/usr/local/cuda9.0
下面)
cp cuda/include/cudnn.h cuda9/include/
cp cuda /lib64/libcudnn* cuda9/lib64
- 为各文件增加可读权限(有的本身就有可读权限,此处建议执行)
chmod a+r cuda9/include/cudnn.h cuda9/lib64/libcudnn*
修改环境变量,使系统能够识别新的安装
环境变量文件位于 ~/.bashrc
(用vi ~/.bashrc
编辑)
将光标移到最后一行,按i
进入编辑模式,然后输入
1
2
export PATH=$HOME/cuda9/bin:$PATH
export LD_LIBRARY_PATH=$HOME/cuda9/lib64/:$LD_LIBRARY_PATH
修改之后运行source ~/.bashrc
使环境变量生效
测试CUDA和cuDNN
- 进入安装CUDA时输入的cuda samples目录
cd NVIDIA_CUDA-9.0_Samples
或者cd cuda/samples/1_Utilities/deviceQuery
- 输入
make
编译(如果之前执行过make
,请先执行make clean
清理) *** 如果此处出现nvcc fatal : Unsupported gpu architecture 'compute_75'
错误
在Makefile的275行附近,有一个SMS ?= 30 35 37 50 52 60 61 70 75
删除大于你GPU算力的数,比如我的是GTX 1080Ti
,算力是6.1,所以删去70和75
即改成SMS ?= 30 35 37 50 52 60 61
重新make即可
算力查询,进去选择你GPU的系列型号即可看到 ***
- 进入设备信息查询目录
cd ~/NVIDIA_CUDA-9.0_Samples/bin/x86_64/linux/release
- 运行
./deviceQuery
如果出现显卡信息,且最后一行为Result = PASS
即为成功 - [可选的]检查一下系统和CUDA-Capable device的连接情况
./bandwidthTest
查看CUDA、cuDNN版本
CUDA:cat cuda所在目录/version.txt
cuDNN:cat cuda所在目录/include/cudnn.h | grep CUDNN_MAJOR -A 2
cuda所在目录:
- 如装在个人用户的下的话就是
/home/yourname/cuda9
- 使用
sudo
的话应该是在/usr/local/cuda9.0
安装Anaconda
- 增加Anaconda文件的执行权限
chmod +x 你下载的Anaconda文件
- 运行Anaconda文件(在Anaconda文件所在目录执行,不建议使用sudo)
./你下载的Anaconda文件
- 按
Ctrl+F
迅速阅读完安装协议 - 输入
accept
同意安装协议 - 在让你添加PATH前,一路回车默认安装(不要一下就按完了)
- 当出现让你添加PATH的时候(以下文字) ,输入
yes
1 2
Do you wish the installer to prepend the Anaconda3 install location to PATH in your /home/hj/.bashrc ? [yes|no]
- 如果上一步按了默认,则手动在.bashrc文件中添加以下内容
export PATH=$HOME/anaconda3/bin:$PATH
(如果安装在其他目录请将$HOME更换成对应目录)
然后
source ~/.bashrc
- 创建新的虚拟环境
conda create -n 环境名称
- 启动虚拟环境
source activate 环境名称
- 安装tensorflow-gpu
pip install tensorflow-gpu==1.12
(1.12可替换为你的指定版本)
pip install tensorflow==1.12
(纯CPU版本)
至此安装完毕
问题解决
1
Loaded runtime CuDNN library: 7500 (compatibility version 7500) but source was compiled with 7004 (compatibility version 7000). If using a binary install, upgrade your CuDNN library to match.
这个是由于cudnn
版本没有下载正确,读一下错误提示,这里提到运行使用的是7500
版本,但是源码是基于7000
版本进行的编译,因此,直接去官网 下载7.0.5版本的cudnn
即可(根据错误提示,选择自己相应的版本)
参考资料