这几天终于把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>的更多相关文章

  1. Google Tensorflow 源码编译(三):tensorflow<v0.5.0>

    这几天终于把tensorflow安装上了,中间遇到过不少的问题,这里记录下来.供大家想源码安装的参考. 安装环境:POWER8处理器,Docker容器Ubuntu14.04镜像. Build Tens ...

  2. Google Tensorflow 源码编译(一):Protobuf<v3.0.0-alpha-3>

    这几天终于把tensorflow安装上了,中间遇到过不少的问题,这里记录下来.供大家想源码安装的参考. 安装环境:POWER8处理器,Docker容器Ubuntu14.04镜像. Build Prot ...

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

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

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

  5. Tensorflow源码编译常见问题点总结

    Tensorflow源码编译分两种:一种是本地源码编译,另一种是针对ARM平台的源码编译. 接下来分别介绍: 一.本地编译 本地编译时,使用的编译工具是本地GCC. 一般会碰到以下问题: 第1个:ex ...

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

  7. TensorFlow 源码编译安装

    ## Install prerequisites (rhel) yum install numpy python-devel python-wheel python-mock ## Install B ...

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

  9. Centos7下源码编译安装与配置redis5.0

    1.下载redis5.0源码包 wget http://download.redis.io/releases/redis-5.0.5.tar.gz 2.检查是否安装过之前的历史版本 rpm -qa|g ...

随机推荐

  1. nginx做nodejs(express等通用)反向代理

    首先配置环境nginx+nodejs...(没有请看我的其他文章,此处不重复) cd 到nginx的site-available目录 ubuntu的在 cd /etc/nginx/site-avail ...

  2. 关于 jsp 解析特殊字符的问题

    在项目中了 使用了一个UI封装好 的插件 经测试了可以返回一些特殊字符,但是因为是特殊字符,导致了jsp解析出错,使用了Jquery来添加了dom结构,添加完之后,Ui控件进行初始化的时候报错了,原因 ...

  3. JavaScript数据属性与访问器属性

    ES5中对象的属性可以分为‘数据属性’和‘访问器属性’两种. 数据属性一般用于存储数据数值,访问器属性对应的是set/get操作,不能直接存储数据值. 数据属性特性:value.writable.en ...

  4. codeforces 341d (树状数组)

    problem Iahub and Xors 题目大意 一个n*n的矩阵,要求支持两种操作. 操作1:将一个子矩阵的所有值异或某个数. 操作2:询问某个子矩阵的所以值的异或和. 解题分析 由于异或的特 ...

  5. Swift---- 可选值类型(Optionals) 、 断言(Assertion) 、 集合 、 函数

    1 使用数组实现九宫格 1.1 问题 Swift提供经典的数组和字典两种集合类型来存储集合数据.本案例使用数组实现一个九宫格程序,如图-1所示: 图-1 1.2 方案 九宫格就是有一个n行n列的方格, ...

  6. ICA和PCA

    http://wenku.baidu.com/link?url=BsmIM7T4CU1D_MgiBzu4Ul1oLnM2Qpmc0sCfXIcD9S20qq3BEkSnuY4RUc7gDZoeFR1N ...

  7. 《剑指offer》面试题12:打印1到最大的n位数

    面试题12:打印1到最大的n位数 剑指offer题目12,题目如下 输入数字n,按顺序打印出1到最大的n位十进制数,比如输入3,则打印出1,2,3一直到最大的三位数999 方法一 和面试题11< ...

  8. Pixel VS Point, FrameBuffer VS RenderBuffer

    // How iOS app MVC works View, Window, AppDelegate ViewController, RootViewController // On Pixel VS ...

  9. js 字符串转换成数字的三种方法

    在js读取文本框或者其它表单数据的时候获得的值是字符串类型的,例如两个文本框a和b,如果获得a的value值为11,b的value值为9 ,那么a.value要小于b.value,因为他们都是字符串形 ...

  10. 初识Linux-3

    1,find 目录 条件 [处理命令]-默认是print操作 2,find d6 -name "*cpp" -exec rm{} ";"(或者‘;’或者/;都是 ...