update docker containers used for remote CPU/GPU builds and the corresponding script.
authorA. Unique TensorFlower <gardener@tensorflow.org>
Thu, 8 Mar 2018 14:37:55 +0000 (06:37 -0800)
committerTensorFlower Gardener <gardener@tensorflow.org>
Thu, 8 Mar 2018 14:42:33 +0000 (06:42 -0800)
PiperOrigin-RevId: 188324090

tensorflow/tools/ci_build/Dockerfile.rbe.cpu [new file with mode: 0644]
tensorflow/tools/ci_build/ci_rbe_docker_build.sh [moved from tensorflow/tools/ci_build/remote/remote_docker_build.sh with 58% similarity]
tensorflow/tools/ci_build/install/install_pip_packages_remote.sh [new file with mode: 0755]
tensorflow/tools/ci_build/remote/Dockerfile.cpu [deleted file]
tensorflow/tools/ci_build/remote/Dockerfile.gpu [deleted file]
third_party/toolchains/gpus/cuda/BUILD

diff --git a/tensorflow/tools/ci_build/Dockerfile.rbe.cpu b/tensorflow/tools/ci_build/Dockerfile.rbe.cpu
new file mode 100644 (file)
index 0000000..6f0798b
--- /dev/null
@@ -0,0 +1,14 @@
+FROM launcher.gcr.io/google/rbe-debian8:r322167
+LABEL maintainer="Yu Yi <yiyu@google.com>"
+
+# Copy install scripts
+COPY install/*.sh /install/
+
+# Setup envvars
+ENV CC /usr/local/bin/clang
+ENV CXX /usr/local/bin/clang++
+ENV AR /usr/bin/ar
+
+# Run pip install script for RBE Debian8 container.
+RUN /install/install_pip_packages_remote.sh
+RUN /install/install_pip_packages.sh
 # Build TensorFlow Docker images for remote build
 #
 # Usage:
-#   remote_docker_build.sh -c # docker image for cpu build
-#   remote_docker_build.sh -g # docker image for gpu build
-
+#   ci_rbe_docker_build.sh -c # docker image for cpu build
+#   ci_rbe_docker_build.sh -g # docker image for gpu build
 
 function main {
-  publish=true
   cpu_build=false
   gpu_build=false
-  publish=true
+  publish=false
 
   script_dir=$(dirname "$(readlink -f "$0")")
   cd $script_dir
 
-  trap cleanup_on_finish EXIT
-
   set_script_flags $@
 
-  build_base_image
-
   build_tf_image
 
   if [ "$publish" = true ] ; then
@@ -50,17 +44,14 @@ function set_script_flags {
       c)
         cpu_build=true
         ;;
-      f)
-        base_image_build_script=$OPTARG
-        ;;
       g)
         gpu_build=true
         ;;
       h)
         print_usage
         ;;
-      n)
-        publish=false
+      p)
+        publish=true
         ;;
       *)
         print_usage "ERROR: unknown option"
@@ -76,7 +67,6 @@ function print_usage {
   echo "Usage: $(basename $0) -c | -g [options]"
   echo "  -c build image for CPU build (base image debian8-clang)"
   echo "  -g build image for GPU build (base image nvidia-clang)"
-  echo "  -f the script which build the {debian8,nvidia}-clang base image"
   echo "[option] is one of"
   echo "  -n not publish the locally-built image to GCR;"
   echo "     the build process will publish image to GCR by default"
@@ -87,54 +77,22 @@ function print_usage {
   exit 1
 }
 
-
-# Build nvidia-cuba-clang base image for GPU image.
-# For CPU the `clang-debian8` from Cloud Launcher will be used directly:
-# https://console.cloud.google.com/launcher/details/google/clang-debian8?filter=category:developer-tools&q=clang
-function build_base_image {
-  if [ "$gpu_build" = true ] ; then
-    base_image="nvidia-cuda"
-    # Run a 2-stage build for clang base image, see
-    # https://github.com/llvm-mirror/llvm/blob/master/docs/Docker.rst
-    $base_image_build_script \
-      --source $base_image \
-      --branch branches/google/stable \
-      --docker-repository ${base_image}-clang --docker-tag "latest" \
-      -p clang -i stage2-install-clang -i stage2-install-clang-headers \
-      -- \
-      -DLLVM_TARGETS_TO_BUILD=Native -DCMAKE_BUILD_TYPE=Release \
-      -DBOOTSTRAP_CMAKE_BUILD_TYPE=Release \
-      -DCLANG_ENABLE_BOOTSTRAP=ON \
-      -DCLANG_BOOTSTRAP_TARGETS="install-clang;install-clang-headers"
-  fi
-}
-
-
 function build_tf_image {
   if [ "$cpu_build" = true ] ; then
-    dockerfile="Dockerfile.cpu"
-    tf_image="tensorflow-remote"
+    dockerfile="Dockerfile.rbe.cpu"
+    tf_image="tensorflow-rbe-cpu"
   else
-    dockerfile="Dockerfile.gpu"
-    tf_image="tensorflow-remote-gpu"
+    dockerfile="Dockerfile.rbe.gpu"
+    tf_image="tensorflow-rbe-gpu"
   fi
 
   docker build -f $dockerfile -t $tf_image .
 }
 
-
 function publish_tf_image {
   gcr_tf_image="gcr.io/tensorflow/${tf_image}"
   docker tag $tf_image $gcr_tf_image
   gcloud docker -- push $gcr_tf_image
 }
 
-
-function cleanup_on_finish {
-  cd $script_dir
-  rm -rf $llvm_docker_src
-  docker rmi -f ${base_image}-clang ${base_image}-clang-build
-}
-
-
 main $@
diff --git a/tensorflow/tools/ci_build/install/install_pip_packages_remote.sh b/tensorflow/tools/ci_build/install/install_pip_packages_remote.sh
new file mode 100755 (executable)
index 0000000..39a6d55
--- /dev/null
@@ -0,0 +1,29 @@
+#!/usr/bin/env bash
+# Copyright 2015 The TensorFlow Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ==============================================================================
+
+set -e
+
+if [ ! -f /usr/bin/x86_64-linux-gnu-gcc ]; then
+  ln -s /usr/local/bin/clang /usr/bin/x86_64-linux-gnu-gcc
+fi
+
+pip2 install -U pip
+pip3 install -U pip
+pip2  install -U setuptools
+pip3 install -U setuptools
+
+# The rest of the pip packages will be installed in
+# `install_pip_packages.sh`
diff --git a/tensorflow/tools/ci_build/remote/Dockerfile.cpu b/tensorflow/tools/ci_build/remote/Dockerfile.cpu
deleted file mode 100644 (file)
index 7b01d83..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-FROM launcher.gcr.io/google/clang-debian8:latest
-
-RUN apt-get update && apt-get --no-install-recommends install -y \
-    binutils \
-    binutils-gold \
-    curl \
-    libstdc++-4.9-dev \
-    python \
-    python-dev \
-    python-numpy \
-    python-pip \
-    unzip \
-    zip && \
-    rm -rf /var/lib/apt/lists/*
-
-RUN curl -fSsL -O https://bootstrap.pypa.io/get-pip.py && \
-    python get-pip.py && \
-    rm get-pip.py
-
-# Set up grpc
-RUN pip install  --upgrade enum34 futures mock numpy six backports.weakref portpicker && \
-    pip install --pre 'protobuf>=3.0.0a3' && \
-    pip install 'grpcio>=1.1.3'
-
-# TODO: Set up golang which is compatible with clang
-
-WORKDIR /botexec
diff --git a/tensorflow/tools/ci_build/remote/Dockerfile.gpu b/tensorflow/tools/ci_build/remote/Dockerfile.gpu
deleted file mode 100644 (file)
index 47ffd44..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-FROM nvidia-cuda-clang:latest
-
-RUN apt-get update && apt-get --no-install-recommends install -y \
-    binutils \
-    binutils-gold \
-    curl \
-    libstdc++-4.9-dev \
-    python \
-    python-dev \
-    python-numpy \
-    python-pip \
-    unzip \
-    zip && \
-    rm -rf /var/lib/apt/lists/*
-
-RUN curl -fSsL -O https://bootstrap.pypa.io/get-pip.py && \
-    python get-pip.py && \
-    rm get-pip.py
-
-# Set up grpc
-RUN pip install --upgrade \
-        enum34 futures astor gast mock numpy six \
-        backports.weakref termcolor && \
-    pip install --pre 'protobuf>=3.0.0a3' && \
-    pip install 'grpcio>=1.1.3'
-
-WORKDIR /botexec
index cfc6930..4cb8380 100644 (file)
@@ -1272,7 +1272,7 @@ genrule(
         "cuda/lib/libcupti.so.9.0",
     ],
     cmd = """
-if [ -d "$(@D)/extras" ]; then rm $(@D)/extras -drf; fi && if [ -d "$(@D)/include" ]; then rm $(@D)/include -drf; fi && if [ -d "$(@D)/lib" ]; then rm $(@D)/lib -drf; fi && if [ -d "$(@D)/nvvm" ]; then rm $(@D)/nvvm -drf; fi && cp "/usr/local/cuda-9.0/targets/x86_64-linux/lib/stubs/libcuda.so" "$(@D)/cuda/lib/libcuda.so" && cp "/usr/local/cuda-9.0/targets/x86_64-linux/lib/libcudart.so.9.0.176" "$(@D)/cuda/lib/libcudart.so.9.0" && cp "/usr/local/cuda-9.0/targets/x86_64-linux/lib/libcudart_static.a" "$(@D)/cuda/lib/libcudart_static.a" && cp "/usr/local/cuda-9.0/targets/x86_64-linux/lib/libcublas.so.9.0.282" "$(@D)/cuda/lib/libcublas.so.9.0" && cp "/usr/local/cuda-9.0/targets/x86_64-linux/lib/libcusolver.so.9.0.176" "$(@D)/cuda/lib/libcusolver.so.9.0" && cp "/usr/local/cuda-9.0/targets/x86_64-linux/lib/libcurand.so.9.0.176" "$(@D)/cuda/lib/libcurand.so.9.0" && cp "/usr/local/cuda-9.0/targets/x86_64-linux/lib/libcufft.so.9.0.176" "$(@D)/cuda/lib/libcufft.so.9.0" && cp "/usr/lib/x86_64-linux-gnu/libcudnn.so.7.0.5" "$(@D)/cuda/lib/libcudnn.so.7" && cp "/usr/local/cuda-9.0/extras/CUPTI/lib64/libcupti.so.9.0.176" "$(@D)/cuda/lib/libcupti.so.9.0"
+if [ -d "$(@D)/extras" ]; then rm $(@D)/extras -drf; fi && if [ -d "$(@D)/include" ]; then rm $(@D)/include -drf; fi && if [ -d "$(@D)/lib" ]; then rm $(@D)/lib -drf; fi && if [ -d "$(@D)/nvvm" ]; then rm $(@D)/nvvm -drf; fi && cp "/usr/local/cuda-9.0/targets/x86_64-linux/lib/stubs/libcuda.so" "$(@D)/cuda/lib/libcuda.so" && cp "/usr/local/cuda-9.0/targets/x86_64-linux/lib/libcudart.so.9.0" "$(@D)/cuda/lib/libcudart.so.9.0" && cp "/usr/local/cuda-9.0/targets/x86_64-linux/lib/libcudart_static.a" "$(@D)/cuda/lib/libcudart_static.a" && cp "/usr/local/cuda-9.0/targets/x86_64-linux/lib/libcublas.so.9.0" "$(@D)/cuda/lib/libcublas.so.9.0" && cp "/usr/local/cuda-9.0/targets/x86_64-linux/lib/libcusolver.so.9.0" "$(@D)/cuda/lib/libcusolver.so.9.0" && cp "/usr/local/cuda-9.0/targets/x86_64-linux/lib/libcurand.so.9.0" "$(@D)/cuda/lib/libcurand.so.9.0" && cp "/usr/local/cuda-9.0/targets/x86_64-linux/lib/libcufft.so.9.0" "$(@D)/cuda/lib/libcufft.so.9.0" && cp "/usr/lib/x86_64-linux-gnu/libcudnn.so.7" "$(@D)/cuda/lib/libcudnn.so.7" && cp "/usr/local/cuda-9.0/extras/CUPTI/lib64/libcupti.so.9.0" "$(@D)/cuda/lib/libcupti.so.9.0"
    """,
 )