编译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源码的更多相关文章

  1. Ubuntu TensorFlow 源码 Android Demo的编译运行

    Ubuntu TensorFlow 源码 Android Demo的编译运行 一. 安装 Android 的SDK和NDK SDK 配置 A:下载 国内下载地址选最新的: SDK: https://d ...

  2. 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 ...

  3. TensorFlow源码安装

    前言 TensorFlow如果能二进制包安装,我真的不想选择自己编译,但是情况不由人,好不容易找到一台服务器,CPU不支持AVX指令集,安装的release版本运行到import tensorflow ...

  4. Tensorflow源码解析1 -- 内核架构和源码结构

    1 主流深度学习框架对比 当今的软件开发基本都是分层化和模块化的,应用层开发会基于框架层.比如开发Linux Driver会基于Linux kernel,开发Android app会基于Android ...

  5. Tensorflow[源码安装时bazel行为解析]

    0. 引言 通过源码方式安装,并进行一定程度的解读,有助于理解tensorflow源码,本文主要基于tensorflow v1.8源码,并借鉴于如何阅读TensorFlow源码. 首先,自然是需要去b ...

  6. [图解tensorflow源码] 入门准备工作附常用的矩阵计算工具[转]

    [图解tensorflow源码] 入门准备工作 附常用的矩阵计算工具[转] Link: https://www.cnblogs.com/yao62995/p/5773142.html  tensorf ...

  7. Ubuntu16.04系统Tensorflow源码安装

    最近学习Tensorflow,记录一下安装过程.目前安装的是CPU版的 1.下载tensorflow源码 tensorflow是个开源库,在github上有源码,直接在上面下载.下载地址:https: ...

  8. tensorflow源码分析

    前言: 一般来说,如果安装tensorflow主要目的是为了调试些小程序的话,只要下载相应的包,然后,直接使用pip install tensorflow即可. 但有时我们需要将Tensorflow的 ...

  9. Windows编译Nginx源码

    Windows下的Nginx战役,人不作就不会死!就像是拿着麦当劳的优惠券去买肯德基一样,别扭啊 Nginx是一款轻量级的Web 服务器.反向代理服务器.邮件服务器等等集一大串荣誉于一身的大牌人物!他 ...

随机推荐

  1. (12.05)Java小知识!

     今天与大家分享关于抽象类的知识点. 抽象类: 抽象类应用场景:在某种情况下,某个父类只是知道子类应该包含怎样的方法,但无法准确的知道这些子类如何实现这些方法. 从多一个具有相同特征的类中抽象出一个抽 ...

  2. 程序员的自我救赎---11.3:WinService服务

    <前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...

  3. java 接口测试

    学习java 时间也不算太长,大学有点基础,学起来也顺手多了,其实我感觉更是因为学习完python之后,在学习别的语言的时候就简单多了,几乎所有的语言学起来都差不多.前几篇写过的都是python接口测 ...

  4. mac ox下android 通过battery-historian进行电量分析

    简单介绍下如何用battery-historian进行电量分析,因为battery-hostorian是基于go语言的框架,所以需要安装go 1.安装go 2.配置go环境变量到.bash_profi ...

  5. mongoDB之数据库操作

    mongoDB中的数据库操作 查看数据库名称: db 查看所有数据库: show dbs 切换数据库: use 数据库名称 注意:如果数据库不存在,则指向数据库,但不会创建.直到插入数据或者是创建集合 ...

  6. 大白话Vue源码系列(03):生成AST

    阅读目录 AST 节点定义 标签的正则匹配 解析用到的工具方法 解析开始标签 解析结束标签 解析文本 解析整块 HTML 模板 未提及的细节 本篇探讨 Vue 根据 html 模板片段构建出 AST ...

  7. Java爬虫——B站弹幕爬取

    如何通过B站视频AV号找到弹幕对应的xml文件号 首先爬取视频网页,将对应视频网页源码获得 就可以找到该视频的av号aid=8678034 还有弹幕序号,cid=14295428 弹幕存放位置为  h ...

  8. NHibernate3剖析:Configuration篇之SessionFactory lambda配置

    概览 在NHibernate3.0中.SessionFactory的Properties和Cache配置实现了流配置(fluent-configuration)和lambda表达式配置(lambda- ...

  9. HTTP请求中怎样选择Get和Post方式

    在应用中最经常使用的Http请求无非是get和post,get请求能够获取静态页面,也能够把參数放在URL字串后面,传递给servlet.post与get的不同之处在于post的參数不是放在URL字串 ...

  10. CentOS 7 安装.NET Core 2.0

    一.添加dotnet产品Feed 在安装.NET Core之前,您需要注册Microsoft产品Feed. 这只需要做一次. 首先,注册Microsoft签名密钥,然后添加Microsoft产品Fee ...