zoukankan      html  css  js  c++  java
  • 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.

      

  • 相关阅读:
    Java实现监控目录下文件变化
    Postgresql 修改用户密码
    Swing清空jtable中的数据
    delphi登录用友的信息
    用友U8的SQL SERVER 数据库结构说明表
    候老师的讲堂:视频录制、笔记软件、思维导图、画图等工具
    DELPHI 关于内存数据与 JSON
    Delphi国内优秀网站及开源项目
    SQL Server 阻止了对组件Ad Hoc Distributed Queries访问的方法
    SQL Server跨服务器查询
  • 原文地址:https://www.cnblogs.com/rodenpark/p/5007846.html
Copyright © 2011-2022 走看看