Google Tensorflow 源码编译(二):Bazel<v0.1.0>
这几天终于把tensorflow安装上了,中间遇到过不少的问题,这里记录下来。供大家想源码安装的参考。
安装环境:POWER8处理器,Docker容器Ubuntu14.04镜像。
Build Bazel<v0.1.0> for IBM POWER8 CPU from Source Code
My computer's os is ubuntu 14.04 , and I want to install bazel, There is only java7 available, so I choose bazel 0.1.0.
Here are the steps that I succeed to install bazel 0.1.0 on my computer:
1. Get source code
git clone https://github.com/bazelbuild/bazel.git
git checkout 0.1.0
2. Install protobuf
Check which version is needed:
opuser@nova:~/tensorflow/bazel-0.1.0$ ls third_party/protobuf/
LICENSE protobuf-java-3.0.0-alpha-3.jar protoc-linux-x86_64.exe protoc-osx-x86_32.exe protoc-windows-x86_32.exe
README.md protoc-linux-x86_32.exe protoc-linux-x86_64.real protoc-osx-x86_64.exe protoc-windows-x86_64.exe
protobuf-java-3.0.0-alpha-3.jar is the jar file bazel uses. so we need to install protobuf with version <3.0.0-alpha-3> , you can refer to "Build Protobuf<v3.0.0-alpha-3> for IBM POWER8 CPU from Source Code" to build protobuf .
3. Create a link protoc-linux-x86_64.exe to protoc binary file
such as : ln -s /usr/bin/protoc $(pwd)/ third_party/protobuf/protoc-linux-x86_64.exe
4. Install other dependencies
4.1 sudo apt-get install zlib1g-dev zip unzip openjdk-7-jre openjdk-7-jdk
4.2 add java path to ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-ppc64el
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
5. Modify bazel source code to support POWER cpu
5.1 in src/main/java/com/google/devtools/build/lib/util/CPU.java
in enum "public enum CPU" add
POWER("power", ImmutableSet.of("power", "power64le", "power64be", "ppc")),
5.2 in /src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
in function "public static class HostCpuConverter implements Converter<String>"add:
case POWER:
return "power";
5.3 in tools/cpp/CROSSTOOL, add
default_toolchain {
cpu: "power"
toolchain_identifier: "local_linux"
}
5.4 in third_party/BUILD, add
config_setting(
name = "power",
values = {"host_cpu": "power"},
)
5.5 in scripts/bootstrap/buildenv.sh, add
MACHINE_IS_64BIT='yes'
6. Compile bazel
./compile // better to see step 7 before run ./compile
after a long time, a message displayed:
Build successful! Binary is here: /home/opuser/tensorflow/tools/bazel-0.1.0/output/bazel
7. Problems during compiling
It is not easy to build bazel from source code. not to mention that I build it in a docker container. there are mainly two problems.
7.1 namespace-sandbox
<error: mount() permission denied!>
bazel may choose to build a sanbox which uses namespace . but there are priority strictions in container. to avoid this problem, you can choose not to build sandbox .
I refer to dcreager's solution posted at https://github.com/bazelbuild/bazel/issues/418. create a bazelrc and use command "BAZELRC=/tmp/bazelrc ./compile.sh" to compile the code. the bazelrc file contains:
startup --batch
build --spawn_strategy=standalone --genrule_strategy=standalone
7.2 openjdk-7
<error: unrecognized option -client!>
The java installed on my computer does not support -client option, but -server option is ok. just as the issue opened at
https://github.com/bazelbuild/bazel/issues/56
Although there is a commit about this:
https://github.com/bazelbuild/bazel/commit/1fa163c42ee26a72c21c118ec820d677a431ee49#commitcomment-13207150.
But it does not work to me. so I changed all the -client option to -server.
8. Reference
Can't run Bazel as part of a Docker build due to sandboxing issues
https://github.com/bazelbuild/bazel/issues/418
Compiling the Java example with SAP JVM does not work
https://github.com/bazelbuild/bazel/issues/56
Add jvm_opts attribute to the java_toolchain rule
https://github.com/bazelbuild/bazel/commit/1fa163c42ee26a72c21c118ec820d677a431ee49#commitcomment-13207150.
Google Tensorflow 源码编译(二):Bazel<v0.1.0>的更多相关文章
- Google Tensorflow 源码编译(三):tensorflow<v0.5.0>
这几天终于把tensorflow安装上了,中间遇到过不少的问题,这里记录下来.供大家想源码安装的参考. 安装环境:POWER8处理器,Docker容器Ubuntu14.04镜像. Build Tens ...
- Google Tensorflow 源码编译(一):Protobuf<v3.0.0-alpha-3>
这几天终于把tensorflow安装上了,中间遇到过不少的问题,这里记录下来.供大家想源码安装的参考. 安装环境:POWER8处理器,Docker容器Ubuntu14.04镜像. Build Prot ...
- 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[源码安装时bazel行为解析]
0. 引言 通过源码方式安装,并进行一定程度的解读,有助于理解tensorflow源码,本文主要基于tensorflow v1.8源码,并借鉴于如何阅读TensorFlow源码. 首先,自然是需要去b ...
- Tensorflow源码编译常见问题点总结
Tensorflow源码编译分两种:一种是本地源码编译,另一种是针对ARM平台的源码编译. 接下来分别介绍: 一.本地编译 本地编译时,使用的编译工具是本地GCC. 一般会碰到以下问题: 第1个:ex ...
- jmeter4.0 源码编译 二次开发
准备: 1.jmeter4.0源码 - apache-jmeter-4.0_src.zip 2.IDE Eclipse - Oxygen.3 Release (4.7.3) 3.JDK - 1.8.0 ...
- TensorFlow 源码编译安装
## Install prerequisites (rhel) yum install numpy python-devel python-wheel python-mock ## Install B ...
- Ubuntu 16.04源码编译安装nginx 1.10.0
一.下载相关的依赖库 pcre 下载地址 http://120.52.73.43/jaist.dl.sourceforge.net/project/pcre/pcre/8.38/pcre-8.38.t ...
- Centos7下源码编译安装与配置redis5.0
1.下载redis5.0源码包 wget http://download.redis.io/releases/redis-5.0.5.tar.gz 2.检查是否安装过之前的历史版本 rpm -qa|g ...
随机推荐
- 什么是 kNN 算法?
学习 machine learning 的最低要求是什么? 我发觉要求可以很低,甚至初中程度已经可以. 首先要学习一点 Python 编程,譬如这两本小孩子用的书:[1][2]便可. 数学方面 ...
- 黑马程序员:Java编程_网络编程
=========== ASP.Net+Android+IOS开发..Net培训.期待与您交流!=========== 网络编程就是两个(或多个)设备(例如计算机)之间的数据传输,更具体的说,网络编程 ...
- 最新ecshop v2.7.3版本去版权完全版
该偏文章模板堂搜集总结,包括ecshop前台版权,ecshop后台版权,一个都不留,干干净净,推荐收藏 一.去掉网页标题 Powered by ECShop 打开includes/lib_main.p ...
- Linux mint 18版本开启SSH服务
linux mint 18版本默认是没有安装ssh server的 需要手动安装 安装ssh server: 此命令需要联网,会自动下载安装 安装之后看是否开始了ssh, 看到ssh-agent 和s ...
- thinkphp 介绍
一.ThinkPHP的介绍 MVC M - Model 模型 工作:负责数据的操作 V - View 视图(模板) 工作:负责 ...
- Java的数组长度无需编译指定,因为它是对象
大家可以看从Thinking in Java中摘出来的代码理解一下,甚至.多维数组的子数组无须等长 //: MultiDimArray.java// Creating multidimensional ...
- 2.4G无线射频通信模块nRF24L01+开发笔记(基于MSP430RF6989与STM32f0308)(1.(2)有错误,详见更正)
根据网上的nRF24L01+例程和TI提供的MSP430RF6989的硬件SPI总线例程编写程序,对硬件MSP-EXP430RF6989 Launch Pad+nRF24L01P射频模块(淘宝购买)进 ...
- HTML meta 标签用法(转)
meta主要为分HTTP标头信息(HTTP-EQUIV)和页面描述信息(NAME).标头信息包括文档类型.字符集.语言等浏览器正确显示网页的信息及处理动作:网页描述如内容的关键字.摘要.作者和定义ro ...
- IO流一行一行读取TXT文件
我们在开发或者测试的时候,往往会用到读取本地txt文件内容来处理数据的情况.下面是读取本地txt文件内容,是一行一行读取.如下列txt例子 小明 20 小红 20 小亮 20 下面是代码: publi ...
- 数论 UVALive 2911
这道题是一道数论题. 题目的意思是告诉m.p.a.b,并且告诉你xi满足的两个条件.让你求出 xp1 + xp2 +...+ xpm 的最大值(其中p<=12,切p是偶数). 这里需要对于xi所 ...