编译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 服务器.反向代理服务器.邮件服务器等等集一大串荣誉于一身的大牌人物!他 ...
随机推荐
- 【原创】python实现清理本地缓存垃圾
#coding=utf-8 import os import glob try: #利用glob模块定位需要清理垃圾的模糊路径 File_1 = glob.glob("C:\Windows\ ...
- ios2048小游戏
最近突然想写一个2048的小游戏,由于全部是自定义控件,所以程序看起来冗杂,但是核心的算法部分还是很不错的,大家感兴趣的可以仔细看看. 声明部分: #import <UIKit/UIKit.h& ...
- CentOS下redis集群安装
环境: 一台CentOS虚拟机上部署六个节点,创建3个master,3个slave节点 1.下载并解压 cd /root wget http://download.redis.io/releases/ ...
- linux磁盘管理系列-软RAID的实现
1 什么是RAID RAID全称是独立磁盘冗余阵列(Redundant Array of Independent Disks),基本思想是把多个磁盘组合起来,组合一个磁盘阵列组,使得性能大幅提高. R ...
- 51Nod 1256 乘法逆元 扩展欧几里得
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出2个数M和N(M < N),且M与N互质,找出一个数K满足0 < K < N且K * M % N = ...
- 修复mysql表
1>用"repair table"方式修复语法:repair table 表名 [选项]选项如下:QUICK 用在数据表还没被修改的情况下,速度最快EXTENDED 试图去恢 ...
- 制造测试数据的程序及对拍程序概述(Like CyaRon)
作为一名OIer,比赛时,对拍是必须的 不对拍,有时可以悔恨终身 首先,对拍的程序 一个是要交的程序 另一个可以是暴力.搜索等,可以比较慢,但是必须正确 下面是C++版对拍程序(C++ & c ...
- 使用PowerApps快速构建基于主题的轻业务应用 —— 进阶篇
作者:陈希章 发表于 2017年12月14日 在上一篇 使用PowerApps快速构建基于主题的轻业务应用 -- 入门篇 中,我用了三个实际的例子演示了如何快速开始使用PowerApps构建轻业务应用 ...
- PDFBox 打印带背景的文件速度慢
打印慢的原因 java的RasterPrinterJob会执行很多次printPage方法 他应该是按块填充的, 如果页面元素非常复杂, 那么printPage方法可能会执行十几次. 而如果你用了如下 ...
- 【Java入门提高篇】Day9 Java内部类——静态内部类
今天来说说Java中的最后一种内部类--静态内部类 所谓的静态内部类,自然就是用static修饰的内部类,那用static修饰过后的内部类,跟一般的内部类相比有什么特别的地方呢? 首先,它是静态的,这 ...