编译TensorFlow源码

Posted majianguo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编译TensorFlow源码相关的知识,希望对你有一定的参考价值。

                      编译TensorFlow源码

 

参考:

https://www.tensorflow.org/install/install_sources

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/go/README.md

一 环境

ubuntu 16.04.2   (virtualbox 虚拟机)

        

二  安装 bazel

参考:https://docs.bazel.build/versions/master/install-ubuntu.html

Using Bazel custom APT repository (recommended)

1. Install JDK 8

Install JDK 8 by using:

sudo apt-get install openjdk-8-jdk

 

On Ubuntu 14.04 LTS you‘ll have to use a PPA:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update && sudo apt-get install oracle-java8-installer

  

2. Add Bazel distribution URI as a package source (one time setup)

echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -

 

If you want to install the testing version of Bazel, replace stable with testing.

 

3. Install and update Bazel

sudo apt-get update && sudo apt-get install bazel


Once installed, you can upgrade to a newer version of Bazel with:

sudo apt-get upgrade bazel

 

三 Python和Swig

sudo apt-get install python3-numpy python3-dev python3-pip python3-wheel  swig

 

四 下载源码及编译TensorFlow

github直接下载最新代码  https://github.com/tensorflow/tensorflow

终端切换到源码主目录,

./configure

涉及一些交互项

[email protected]:~/tensorflow-master$ ./configure 
WARNING: ignoring http_proxy in environment.
You have bazel 0.5.4 installed.
Please specify the location of python. [Default is /usr/bin/python]: /usr/bin/python3.5


Found possible Python library paths:
  /usr/local/lib/python3.5/dist-packages
  /usr/lib/python3/dist-packages
Please input the desired Python library path to use.  Default is [/usr/local/lib/python3.5/dist-packages]

Do you wish to build TensorFlow with jemalloc as malloc support? [Y/n]: y
jemalloc as malloc support will be enabled for TensorFlow.

Do you wish to build TensorFlow with Google Cloud Platform support? [y/N]: n
No Google Cloud Platform support will be enabled for TensorFlow.

Do you wish to build TensorFlow with Hadoop File System support? [y/N]: n
No Hadoop File System support will be enabled for TensorFlow.

Do you wish to build TensorFlow with XLA JIT support? [y/N]: n
No XLA JIT support will be enabled for TensorFlow.

Do you wish to build TensorFlow with GDR support? [y/N]: n
No GDR support will be enabled for TensorFlow.

Do you wish to build TensorFlow with VERBS support? [y/N]: n
No VERBS support will be enabled for TensorFlow.

Do you wish to build TensorFlow with OpenCL support? [y/N]: n
No OpenCL support will be enabled for TensorFlow.

Do you wish to build TensorFlow with CUDA support? [y/N]: n
No CUDA support will be enabled for TensorFlow.

Do you wish to build TensorFlow with MPI support? [y/N]: n
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]: 


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

开始编译

 

bazel build --config opt //tensorflow:libtensorflow.so

 

耗时比较长,用了90多分钟。

./tensorflow/core/framework/function.h:526:3: note: in expansion of macro REGISTER_OP_GRADIENT_UNIQ
   REGISTER_OP_GRADIENT_UNIQ(ctr, name, fn)
   ^
./tensorflow/core/framework/function.h:520:3: note: in expansion of macro REGISTER_OP_GRADIENT_UNIQ_HELPER
   REGISTER_OP_GRADIENT_UNIQ_HELPER(__COUNTER__, name, fn)
   ^
tensorflow/core/ops/nn_grad.cc:182:1: note: in expansion of macro REGISTER_OP_GRADIENT
 REGISTER_OP_GRADIENT("MaxPool", MaxPoolGrad);
 ^
./tensorflow/core/framework/function.h:529:15: warning: tensorflow::unused_grad_6 defined but not used [-Wunused-variable]
   static bool unused_grad_##ctr = SHOULD_REGISTER_OP_GRADIENT &&                ^
./tensorflow/core/framework/function.h:526:3: note: in expansion of macro REGISTER_OP_GRADIENT_UNIQ
   REGISTER_OP_GRADIENT_UNIQ(ctr, name, fn)
   ^
./tensorflow/core/framework/function.h:520:3: note: in expansion of macro REGISTER_OP_GRADIENT_UNIQ_HELPER
   REGISTER_OP_GRADIENT_UNIQ_HELPER(__COUNTER__, name, fn)
   ^
tensorflow/core/ops/nn_grad.cc:208:1: note: in expansion of macro REGISTER_OP_GRADIENT
 REGISTER_OP_GRADIENT("AvgPool", AvgPoolGrad);
 ^
./tensorflow/core/framework/function.h:529:15: warning: tensorflow::unused_grad_7 defined but not used [-Wunused-variable]
   static bool unused_grad_##ctr = SHOULD_REGISTER_OP_GRADIENT &&                ^
./tensorflow/core/framework/function.h:526:3: note: in expansion of macro REGISTER_OP_GRADIENT_UNIQ
   REGISTER_OP_GRADIENT_UNIQ(ctr, name, fn)
   ^
./tensorflow/core/framework/function.h:520:3: note: in expansion of macro REGISTER_OP_GRADIENT_UNIQ_HELPER
   REGISTER_OP_GRADIENT_UNIQ_HELPER(__COUNTER__, name, fn)
   ^
tensorflow/core/ops/nn_grad.cc:239:1: note: in expansion of macro REGISTER_OP_GRADIENT
 REGISTER_OP_GRADIENT("MaxPoolGrad", MaxPoolGradGrad);
 ^
./tensorflow/core/framework/function.h:529:15: warning: tensorflow::unused_grad_8 defined but not used [-Wunused-variable]
   static bool unused_grad_##ctr = SHOULD_REGISTER_OP_GRADIENT &&                ^
./tensorflow/core/framework/function.h:526:3: note: in expansion of macro REGISTER_OP_GRADIENT_UNIQ
   REGISTER_OP_GRADIENT_UNIQ(ctr, name, fn)
   ^
./tensorflow/core/framework/function.h:520:3: note: in expansion of macro REGISTER_OP_GRADIENT_UNIQ_HELPER
   REGISTER_OP_GRADIENT_UNIQ_HELPER(__COUNTER__, name, fn)
   ^
tensorflow/core/ops/nn_grad.cc:260:1: note: in expansion of macro REGISTER_OP_GRADIENT
 REGISTER_OP_GRADIENT("BiasAdd", BiasAddGrad);
 ^
Target //tensorflow:libtensorflow.so up-to-date:
  bazel-bin/tensorflow/libtensorflow.so
INFO: Elapsed time: 5544.039s, Critical Path: 63.77s
INFO: Build completed successfully, 2293 total actions

 

 

以上是关于编译TensorFlow源码的主要内容,如果未能解决你的问题,请参考以下文章

在Ubuntu中从源码编译TensorFlow

极智AI | centos7源码编译tensorflow

Tensorflow-1.x源码编译及C++API调用

TensorFlow 源码编译安装

源码编译tensorflow遇到的问题

无需源码编译 | 基于RTX3090配置tensorflow1.15环境