aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar A. Unique TensorFlower <gardener@tensorflow.org>2018-03-08 06:37:55 -0800
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2018-03-08 06:42:33 -0800
commit6d44c84bb26cdc3a477688a631ef6613d70a32cf (patch)
tree6d7a98e14d75302d5623ceebbc997541922dc938
parent51fd9d70b8ef3c11b89e5009357cfbe3abb72473 (diff)
update docker containers used for remote CPU/GPU builds and the corresponding script.
PiperOrigin-RevId: 188324090
-rw-r--r--tensorflow/tools/ci_build/Dockerfile.rbe.cpu14
-rwxr-xr-xtensorflow/tools/ci_build/ci_rbe_docker_build.sh (renamed from tensorflow/tools/ci_build/remote/remote_docker_build.sh)60
-rwxr-xr-xtensorflow/tools/ci_build/install/install_pip_packages_remote.sh29
-rw-r--r--tensorflow/tools/ci_build/remote/Dockerfile.cpu27
-rw-r--r--tensorflow/tools/ci_build/remote/Dockerfile.gpu27
-rw-r--r--third_party/toolchains/gpus/cuda/BUILD2
6 files changed, 53 insertions, 106 deletions
diff --git a/tensorflow/tools/ci_build/Dockerfile.rbe.cpu b/tensorflow/tools/ci_build/Dockerfile.rbe.cpu
new file mode 100644
index 0000000000..6f0798b1af
--- /dev/null
+++ b/tensorflow/tools/ci_build/Dockerfile.rbe.cpu
@@ -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
diff --git a/tensorflow/tools/ci_build/remote/remote_docker_build.sh b/tensorflow/tools/ci_build/ci_rbe_docker_build.sh
index e00a66aaba..cd811de6bd 100755
--- a/tensorflow/tools/ci_build/remote/remote_docker_build.sh
+++ b/tensorflow/tools/ci_build/ci_rbe_docker_build.sh
@@ -16,25 +16,19 @@
# 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
index 0000000000..39a6d557d1
--- /dev/null
+++ b/tensorflow/tools/ci_build/install/install_pip_packages_remote.sh
@@ -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
index 7b01d8320d..0000000000
--- a/tensorflow/tools/ci_build/remote/Dockerfile.cpu
+++ /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
index 47ffd44163..0000000000
--- a/tensorflow/tools/ci_build/remote/Dockerfile.gpu
+++ /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
diff --git a/third_party/toolchains/gpus/cuda/BUILD b/third_party/toolchains/gpus/cuda/BUILD
index cfc6930851..4cb8380938 100644
--- a/third_party/toolchains/gpus/cuda/BUILD
+++ b/third_party/toolchains/gpus/cuda/BUILD
@@ -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"
""",
)