编译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--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
涉及一些交互项
dell@dell-VirtualBox:~/tensorflow-master$ ./configure
WARNING: ignoring http_proxy in environment.
You have bazel 0.5. installed.
Please specify the location of python. [Default is /usr/bin/python]: /usr/bin/python3. Found possible Python library paths:
/usr/local/lib/python3./dist-packages
/usr/lib/python3/dist-packages
Please input the desired Python library path to use. Default is [/usr/local/lib/python3./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::: note: in expansion of macro 'REGISTER_OP_GRADIENT_UNIQ'
REGISTER_OP_GRADIENT_UNIQ(ctr, name, fn)
^
./tensorflow/core/framework/function.h::: note: in expansion of macro 'REGISTER_OP_GRADIENT_UNIQ_HELPER'
REGISTER_OP_GRADIENT_UNIQ_HELPER(__COUNTER__, name, fn)
^
tensorflow/core/ops/nn_grad.cc::: note: in expansion of macro 'REGISTER_OP_GRADIENT'
REGISTER_OP_GRADIENT("MaxPool", MaxPoolGrad);
^
./tensorflow/core/framework/function.h::: 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::: note: in expansion of macro 'REGISTER_OP_GRADIENT_UNIQ'
REGISTER_OP_GRADIENT_UNIQ(ctr, name, fn)
^
./tensorflow/core/framework/function.h::: note: in expansion of macro 'REGISTER_OP_GRADIENT_UNIQ_HELPER'
REGISTER_OP_GRADIENT_UNIQ_HELPER(__COUNTER__, name, fn)
^
tensorflow/core/ops/nn_grad.cc::: note: in expansion of macro 'REGISTER_OP_GRADIENT'
REGISTER_OP_GRADIENT("AvgPool", AvgPoolGrad);
^
./tensorflow/core/framework/function.h::: 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::: note: in expansion of macro 'REGISTER_OP_GRADIENT_UNIQ'
REGISTER_OP_GRADIENT_UNIQ(ctr, name, fn)
^
./tensorflow/core/framework/function.h::: note: in expansion of macro 'REGISTER_OP_GRADIENT_UNIQ_HELPER'
REGISTER_OP_GRADIENT_UNIQ_HELPER(__COUNTER__, name, fn)
^
tensorflow/core/ops/nn_grad.cc::: note: in expansion of macro 'REGISTER_OP_GRADIENT'
REGISTER_OP_GRADIENT("MaxPoolGrad", MaxPoolGradGrad);
^
./tensorflow/core/framework/function.h::: 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::: note: in expansion of macro 'REGISTER_OP_GRADIENT_UNIQ'
REGISTER_OP_GRADIENT_UNIQ(ctr, name, fn)
^
./tensorflow/core/framework/function.h::: note: in expansion of macro 'REGISTER_OP_GRADIENT_UNIQ_HELPER'
REGISTER_OP_GRADIENT_UNIQ_HELPER(__COUNTER__, name, fn)
^
tensorflow/core/ops/nn_grad.cc::: 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: .039s, Critical Path: .77s
INFO: Build completed successfully, total actions
编译TensorFlow源码的更多相关文章
- Ubuntu TensorFlow 源码 Android Demo的编译运行
Ubuntu TensorFlow 源码 Android Demo的编译运行 一. 安装 Android 的SDK和NDK SDK 配置 A:下载 国内下载地址选最新的: SDK: https://d ...
- tensorflow 源码编译tensorflow 1.1.0到 tensorflow 2.0,ver:1.1.0rc1、1.4.0rc1、1.14.0-rc1、2.0.0b1
目录 tensorflow-build table 更多详细过程信息及下载: tensorflow-build tensorflow 源码编译,提升硬件加速,支持cpu加速指令,suport SSE4 ...
- TensorFlow源码安装
前言 TensorFlow如果能二进制包安装,我真的不想选择自己编译,但是情况不由人,好不容易找到一台服务器,CPU不支持AVX指令集,安装的release版本运行到import tensorflow ...
- Tensorflow源码解析1 -- 内核架构和源码结构
1 主流深度学习框架对比 当今的软件开发基本都是分层化和模块化的,应用层开发会基于框架层.比如开发Linux Driver会基于Linux kernel,开发Android app会基于Android ...
- Tensorflow[源码安装时bazel行为解析]
0. 引言 通过源码方式安装,并进行一定程度的解读,有助于理解tensorflow源码,本文主要基于tensorflow v1.8源码,并借鉴于如何阅读TensorFlow源码. 首先,自然是需要去b ...
- [图解tensorflow源码] 入门准备工作附常用的矩阵计算工具[转]
[图解tensorflow源码] 入门准备工作 附常用的矩阵计算工具[转] Link: https://www.cnblogs.com/yao62995/p/5773142.html tensorf ...
- Ubuntu16.04系统Tensorflow源码安装
最近学习Tensorflow,记录一下安装过程.目前安装的是CPU版的 1.下载tensorflow源码 tensorflow是个开源库,在github上有源码,直接在上面下载.下载地址:https: ...
- tensorflow源码分析
前言: 一般来说,如果安装tensorflow主要目的是为了调试些小程序的话,只要下载相应的包,然后,直接使用pip install tensorflow即可. 但有时我们需要将Tensorflow的 ...
- Windows编译Nginx源码
Windows下的Nginx战役,人不作就不会死!就像是拿着麦当劳的优惠券去买肯德基一样,别扭啊 Nginx是一款轻量级的Web 服务器.反向代理服务器.邮件服务器等等集一大串荣誉于一身的大牌人物!他 ...
随机推荐
- openvpn技术实现客户端直接访问远程机器中docker内容器的实现与原理
传统开发中如果要从开发机中访问服务器中的docker中的服务可能可能需要如下方案: 利用docker run的-p属性直接映射端口到服务器中 优点:客户端直接访问服务器就可以访问到docker容器. ...
- HTTPS原理浅析
HTTPS(Hypertext Transfer Protocol Secure)协议用于提供安全的超文本传输服务. 其本质上是SSL/TLS层上的HTTP协议, 即所谓的"HTTP ove ...
- Scala中的override
Scala中的override override是覆盖的意思,在很多语言中都有,在scala中,override是非常常见的,在类继承方面,它和java不一样,不是可写可不写的了,而是必须写的.如果不 ...
- SQL Server学习之路(三):“增删改查”之“增”
0.目录 1.前言 2.通过SSMS添加数据 3.通过SQL语句添加数据 3.1 添加单条数据 3.2 添加多条数据 4.通过其他表导入数据 4.1 通过数据库中的其他表导入数据 4.2 通过exce ...
- centos7 简单搭建lnmp环境
1:查看环境: 1 2 [root@10-4-14-168 html]# cat /etc/redhat-release CentOS release 6.5 (Final) 2:关掉防火墙 1 [r ...
- .NET Core 快速入门教程
.NET Core 快速学习.入门系列教程.这个入门系列教程主要跟大家聊聊.NET Core的前世今生,以及Windows.Linux(CentOS.Ubuntu)基础开发环境的搭建.第一个.NET ...
- java 之 命令模式(大话设计模式)
命令模式,笔者一直以为当我们开发的过程中基本上很难用到,直到维护阶段或者重构阶段,我们会发现有些撤销命令和追加命令比较频繁时,自然而然就用到命令模式. 先看下类图 大话设计模式-类图 简单说下类图,最 ...
- JavaScript实现策略模式
在开篇之前先分享今天看到的一句关于设计模式的话:将不变的部分和变化的部分隔开是每个设计模式的主题 请大家自行感受这句话的精髓所在,并且思考学习设计模式究竟能给我们编程带来什么样的东西,欢迎大家在文章下 ...
- Memory Monitor
Heap Viewer,Memory Monitor和Allocation Tracker是用来可视化你的app使用内存的补充工具. 使用Memory Monitor Tool来发现是否有不好的内存回 ...
- Java中enum的学习总结
一.通常的定义常量的方法 public class Sex{ public final static int MALE = 1; public final static int FEMALE=2; } ...