CUDA 9.0 + cuDNN 7.0 + Tensorflow源码编译

来源:互联网 发布:李强强 php 编辑:程序博客网 时间:2024/06/05 06:48

手欠把CUDA升级到了9.0,然后发现cuDNN必须升级到7.0才支持。于是顺手把cuDNN升级到了7.0。然后发现在Python中导入Tensorflow报错。一查才知道tensorflow 1.3只支持CUDA8.0cuDNN6.0.想把CUDA和cuDNN降级回去,却发现Nvidia官网6.0版本的cuDNN下载不下来了。悲催。
这时候终于理解了为何会有源码编译安装这种麻烦的方式–就是为了给我这种手欠的人一条活路。
没有查到官方编译安装的教程。从网上搜到了一些,我参考的是TensorFlow学习一:源码安装。

克隆tensorflow源码

git clone --recurse-submodules https://github.com/tensorflow/tensorflow

安装Bazel

按照官方教程安装


我的CUDA和cuDNN是装好的,因此安装好Bazel就可以开始配置和编译tensorflow了。

配置tensorflow

下面是我配置tensorflow的log。

shengchun@wangsc-asus:~tensorflow$ ./configure
You have bazel 0.6.1 installed.
Please specify the location of python. [Default is /usr/bin/python]: /usr/bin/python3
Found possible Python library paths:
/home/shengchun/tensorflow/models/
/bin
/usr/local/cuda/bin
/sbin
/home/shengchun/tensorflow/models/slim
/usr/bin
/usr/local/sbin
/usr/local/games
/usr/lib/python3/dist-packages
/usr/games
/home/shengchun/mxnet-ssd/mxnet/python
/usr/sbin
/usr/local/bin
/usr/local/lib/python3.5/dist-packages
Please input the desired Python library path to use. Default is [/home/shengchun/tensorflow/models/]/usr/local/lib/python3.5/dist-packages
Do you wish to build TensorFlow with jemalloc as malloc support? [Y/n]: [Enter]
jemalloc as malloc support will be enabled for TensorFlow.
Do you wish to build TensorFlow with Google Cloud Platform support? [Y/n]: [Enter]
Google Cloud Platform support will be enabled for TensorFlow.
Do you wish to build TensorFlow with Hadoop File System support? [Y/n]: [Enter]
Hadoop File System support will be enabled for TensorFlow.
Do you wish to build TensorFlow with XLA JIT support? [y/N]: [Enter]
No XLA JIT support will be enabled for TensorFlow.
Do you wish to build TensorFlow with GDR support? [y/N]: [Enter]
No GDR support will be enabled for TensorFlow.
Do you wish to build TensorFlow with VERBS support? [y/N]: [Enter]
No VERBS support will be enabled for TensorFlow.
Do you wish to build TensorFlow with OpenCL support? [y/N]: [Enter]
No OpenCL support will be enabled for TensorFlow.
Do you wish to build TensorFlow with CUDA support? [y/N]: y
CUDA support will be enabled for TensorFlow.
Please specify the CUDA SDK version you want to use, e.g. 7.0. [Leave empty to default to CUDA 8.0]: 9.0
Please specify the location where CUDA 9.0 toolkit is installed. Refer to README.md for more details. [Default is /usr/local/cuda]: [Enter]
Please specify the cuDNN version you want to use. [Leave empty to default to cuDNN 6.0]: 7.0.3
Please specify the location where cuDNN 7.0.3 library is installed. Refer to README.md for more details. [Default is /usr/local/cuda]:[Enter]
**Please specify a list of comma-separated Cuda compute capabilities you want to build with.
You can find the compute capability of your device at: https://developer.nvidia.com/cuda-gpus.
Please note that each additional compute capability significantly increases your build time and binary size. [Default is: 5.0]**[Enter]
Do you want to use clang as CUDA compiler? [y/N]: [Enter]
nvcc will be used as CUDA compiler.
Please specify which gcc should be used by nvcc as the host compiler. [Default is /usr/bin/gcc]:
Do you wish to build TensorFlow with MPI support? [y/N]: [Enter]
No MPI support will be enabled for TensorFlow.
Please specify optimization flags to use during compilation when bazel option “–config=opt” is specified [Default is -march=native]: [Enter]
Add “–config=mkl” to your bazel command to build with MKL support.
Please note that MKL on MacOS or windows is still not supported.
If you would like to use a local MKL instead of downloading, please set the environment variable “TF_MKL_ROOT” every time before build.
Configuration finished

编译tensorflow, 开启 GPU 支持:

bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package

整个过程还是比较顺利的,只是编译时间有点儿长。

生成whl文件

bazel编译命令建立了一个名为build_pip_package的脚本。运行如下的命令将会在 /tmp/tensorflow_pkg路径下生成一个.whl文件:

bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

pip安装tensorflow

sudo pip3 install /tmp/tensorflow_pkg/tensorflow-1.3.0-cp35-cp35m-linux_x86_64.whl

验证安装

打开任意一个新的终端,注意不要在tensorflow的安装路径下,运行

python3

输入以下代码

import tensorflow as tf
hello = tf.constant(‘Hello, TensorFlow!’)
sess = tf.Session()
print(sess.run(hello))

至此,tensorflow 1.3从源码编译安装成功,世界恢复了正常。

原创粉丝点击