diff --git a/tensorflow/tools/dockerfiles/assembler.py b/tensorflow/tools/dockerfiles/assembler.py index 09537b73144..83b72cb5bb8 100644 --- a/tensorflow/tools/dockerfiles/assembler.py +++ b/tensorflow/tools/dockerfiles/assembler.py @@ -34,6 +34,7 @@ import errno import itertools import multiprocessing import os +import platform import re import shutil import sys @@ -552,6 +553,13 @@ def main(argv): if not FLAGS.build_images: continue + # Only build images for host architecture + proc_arch = platform.processor() + is_x86 = proc_arch.startswith('x86') + if (is_x86 and any([arch in tag for arch in ['ppc64le']]) or + not is_x86 and proc_arch not in tag): + continue + # Generate a temporary Dockerfile to use to build, since docker-py # needs a filepath relative to the build context (i.e. the current # directory) diff --git a/tensorflow/tools/dockerfiles/dockerfiles/devel-cpu-jupyter.Dockerfile b/tensorflow/tools/dockerfiles/dockerfiles/devel-cpu-jupyter.Dockerfile index c1f6dafbe0b..4657f8b4c74 100644 --- a/tensorflow/tools/dockerfiles/dockerfiles/devel-cpu-jupyter.Dockerfile +++ b/tensorflow/tools/dockerfiles/dockerfiles/devel-cpu-jupyter.Dockerfile @@ -30,7 +30,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ libcurl3-dev \ libfreetype6-dev \ libhdf5-serial-dev \ - libpng12-dev \ libzmq3-dev \ pkg-config \ rsync \ @@ -43,12 +42,14 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* - + ENV CI_BUILD_PYTHON python -# Check out TensorFlow source code if --build_arg CHECKOUT_TENSORFLOW=1 +# CACHE_STOP is used to rerun future commands, otherwise cloning tensorflow will be cached and will not pull the most recent version +ARG CACHE_STOP=1 +# Check out TensorFlow source code if --build_arg CHECKOUT_TF_SRC=1 ARG CHECKOUT_TF_SRC=0 -RUN test "${CHECKOUT_TF_SRC}" -eq 1 && git clone https://github.com/tensorflow/tensorflow.git /tensorflow_src +RUN test "${CHECKOUT_TF_SRC}" -eq 1 && git clone https://github.com/tensorflow/tensorflow.git /tensorflow_src || true ARG USE_PYTHON_3_NOT_2 ARG _PY_SUFFIX=${USE_PYTHON_3_NOT_2:+3} diff --git a/tensorflow/tools/dockerfiles/dockerfiles/devel-cpu.Dockerfile b/tensorflow/tools/dockerfiles/dockerfiles/devel-cpu.Dockerfile index b4dfc8b0997..ce69ee0650c 100644 --- a/tensorflow/tools/dockerfiles/dockerfiles/devel-cpu.Dockerfile +++ b/tensorflow/tools/dockerfiles/dockerfiles/devel-cpu.Dockerfile @@ -30,7 +30,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ libcurl3-dev \ libfreetype6-dev \ libhdf5-serial-dev \ - libpng12-dev \ libzmq3-dev \ pkg-config \ rsync \ @@ -43,12 +42,14 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* - + ENV CI_BUILD_PYTHON python -# Check out TensorFlow source code if --build_arg CHECKOUT_TENSORFLOW=1 +# CACHE_STOP is used to rerun future commands, otherwise cloning tensorflow will be cached and will not pull the most recent version +ARG CACHE_STOP=1 +# Check out TensorFlow source code if --build_arg CHECKOUT_TF_SRC=1 ARG CHECKOUT_TF_SRC=0 -RUN test "${CHECKOUT_TF_SRC}" -eq 1 && git clone https://github.com/tensorflow/tensorflow.git /tensorflow_src +RUN test "${CHECKOUT_TF_SRC}" -eq 1 && git clone https://github.com/tensorflow/tensorflow.git /tensorflow_src || true ARG USE_PYTHON_3_NOT_2 ARG _PY_SUFFIX=${USE_PYTHON_3_NOT_2:+3} diff --git a/tensorflow/tools/dockerfiles/dockerfiles/devel-gpu-jupyter.Dockerfile b/tensorflow/tools/dockerfiles/dockerfiles/devel-gpu-jupyter.Dockerfile index 6d76c06332b..e41fc18e42b 100644 --- a/tensorflow/tools/dockerfiles/dockerfiles/devel-gpu-jupyter.Dockerfile +++ b/tensorflow/tools/dockerfiles/dockerfiles/devel-gpu-jupyter.Dockerfile @@ -21,23 +21,28 @@ ARG UBUNTU_VERSION=16.04 -FROM nvidia/cuda:10.0-base-ubuntu${UBUNTU_VERSION} as base +ARG ARCH= +ARG CUDA=10.0 +FROM nvidia/cuda${ARCH:+-$ARCH}:${CUDA}-base-ubuntu${UBUNTU_VERSION} as base +ARG CUDNN=7.4.1.5-1 +ARG LIB_DIR_PREFIX=x84_64 +# Needed for string substitution +SHELL ["/bin/bash", "-c"] RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ - cuda-command-line-tools-10-0 \ - cuda-cublas-dev-10-0 \ - cuda-cudart-dev-10-0 \ - cuda-cufft-dev-10-0 \ - cuda-curand-dev-10-0 \ - cuda-cusolver-dev-10-0 \ - cuda-cusparse-dev-10-0 \ - libcudnn7=7.4.1.5-1+cuda10.0 \ - libcudnn7-dev=7.4.1.5-1+cuda10.0 \ + cuda-command-line-tools-${CUDA/./-} \ + cuda-cublas-dev-${CUDA/./-} \ + cuda-cudart-dev-${CUDA/./-} \ + cuda-cufft-dev-${CUDA/./-} \ + cuda-curand-dev-${CUDA/./-} \ + cuda-cusolver-dev-${CUDA/./-} \ + cuda-cusparse-dev-${CUDA/./-} \ + libcudnn7=${CUDNN}+cuda${CUDA} \ + libcudnn7-dev=${CUDNN}+cuda${CUDA} \ libcurl3-dev \ libfreetype6-dev \ libhdf5-serial-dev \ - libpng12-dev \ libzmq3-dev \ pkg-config \ rsync \ @@ -48,14 +53,15 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ wget \ git \ && \ - find /usr/local/cuda-10.0/lib64/ -type f -name 'lib*_static.a' -not -name 'libcudart_static.a' -delete && \ - rm /usr/lib/x86_64-linux-gnu/libcudnn_static_v7.a + find /usr/local/cuda-${CUDA}/lib64/ -type f -name 'lib*_static.a' -not -name 'libcudart_static.a' -delete && \ + rm /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libcudnn_static_v7.a -RUN apt-get update && \ - apt-get install nvinfer-runtime-trt-repo-ubuntu1604-5.0.2-ga-cuda10.0 \ +RUN [ ${ARCH} = ppc64le ] || (apt-get update && \ + apt-get install nvinfer-runtime-trt-repo-ubuntu1604-5.0.2-ga-cuda${CUDA} \ && apt-get update \ - && apt-get install -y --no-install-recommends libnvinfer-dev=5.0.2-1+cuda10.0 \ - && rm -rf /var/lib/apt/lists/* + && apt-get install -y --no-install-recommends libnvinfer5=5.0.2-1+cuda${CUDA} \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*) # Configure the build for our CUDA configuration. ENV CI_BUILD_PYTHON python @@ -63,12 +69,13 @@ ENV LD_LIBRARY_PATH /usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH ENV TF_NEED_CUDA 1 ENV TF_NEED_TENSORRT 1 ENV TF_CUDA_COMPUTE_CAPABILITIES=3.5,5.2,6.0,6.1,7.0 -ENV TF_CUDA_VERSION=10.0 -ENV TF_CUDNN_VERSION=7 - -# Check out TensorFlow source code if --build_arg CHECKOUT_TENSORFLOW=1 +ENV TF_CUDA_VERSION=${CUDA} +ENV TF_CUDNN_VERSION=${CUDNN%%.*} +# CACHE_STOP is used to rerun future commands, otherwise cloning tensorflow will be cached and will not pull the most recent version +ARG CACHE_STOP=1 +# Check out TensorFlow source code if --build_arg CHECKOUT_TF_SRC=1 ARG CHECKOUT_TF_SRC=0 -RUN test "${CHECKOUT_TF_SRC}" -eq 1 && git clone https://github.com/tensorflow/tensorflow.git /tensorflow_src +RUN test "${CHECKOUT_TF_SRC}" -eq 1 && git clone https://github.com/tensorflow/tensorflow.git /tensorflow_src || true ARG USE_PYTHON_3_NOT_2 ARG _PY_SUFFIX=${USE_PYTHON_3_NOT_2:+3} diff --git a/tensorflow/tools/dockerfiles/dockerfiles/devel-gpu.Dockerfile b/tensorflow/tools/dockerfiles/dockerfiles/devel-gpu.Dockerfile index 160abc87639..7ae50100791 100644 --- a/tensorflow/tools/dockerfiles/dockerfiles/devel-gpu.Dockerfile +++ b/tensorflow/tools/dockerfiles/dockerfiles/devel-gpu.Dockerfile @@ -21,23 +21,28 @@ ARG UBUNTU_VERSION=16.04 -FROM nvidia/cuda:10.0-base-ubuntu${UBUNTU_VERSION} as base +ARG ARCH= +ARG CUDA=10.0 +FROM nvidia/cuda${ARCH:+-$ARCH}:${CUDA}-base-ubuntu${UBUNTU_VERSION} as base +ARG CUDNN=7.4.1.5-1 +ARG LIB_DIR_PREFIX=x84_64 +# Needed for string substitution +SHELL ["/bin/bash", "-c"] RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ - cuda-command-line-tools-10-0 \ - cuda-cublas-dev-10-0 \ - cuda-cudart-dev-10-0 \ - cuda-cufft-dev-10-0 \ - cuda-curand-dev-10-0 \ - cuda-cusolver-dev-10-0 \ - cuda-cusparse-dev-10-0 \ - libcudnn7=7.4.1.5-1+cuda10.0 \ - libcudnn7-dev=7.4.1.5-1+cuda10.0 \ + cuda-command-line-tools-${CUDA/./-} \ + cuda-cublas-dev-${CUDA/./-} \ + cuda-cudart-dev-${CUDA/./-} \ + cuda-cufft-dev-${CUDA/./-} \ + cuda-curand-dev-${CUDA/./-} \ + cuda-cusolver-dev-${CUDA/./-} \ + cuda-cusparse-dev-${CUDA/./-} \ + libcudnn7=${CUDNN}+cuda${CUDA} \ + libcudnn7-dev=${CUDNN}+cuda${CUDA} \ libcurl3-dev \ libfreetype6-dev \ libhdf5-serial-dev \ - libpng12-dev \ libzmq3-dev \ pkg-config \ rsync \ @@ -48,14 +53,15 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ wget \ git \ && \ - find /usr/local/cuda-10.0/lib64/ -type f -name 'lib*_static.a' -not -name 'libcudart_static.a' -delete && \ - rm /usr/lib/x86_64-linux-gnu/libcudnn_static_v7.a + find /usr/local/cuda-${CUDA}/lib64/ -type f -name 'lib*_static.a' -not -name 'libcudart_static.a' -delete && \ + rm /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libcudnn_static_v7.a -RUN apt-get update && \ - apt-get install nvinfer-runtime-trt-repo-ubuntu1604-5.0.2-ga-cuda10.0 \ +RUN [ ${ARCH} = ppc64le ] || (apt-get update && \ + apt-get install nvinfer-runtime-trt-repo-ubuntu1604-5.0.2-ga-cuda${CUDA} \ && apt-get update \ - && apt-get install -y --no-install-recommends libnvinfer-dev=5.0.2-1+cuda10.0 \ - && rm -rf /var/lib/apt/lists/* + && apt-get install -y --no-install-recommends libnvinfer5=5.0.2-1+cuda${CUDA} \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*) # Configure the build for our CUDA configuration. ENV CI_BUILD_PYTHON python @@ -63,12 +69,13 @@ ENV LD_LIBRARY_PATH /usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH ENV TF_NEED_CUDA 1 ENV TF_NEED_TENSORRT 1 ENV TF_CUDA_COMPUTE_CAPABILITIES=3.5,5.2,6.0,6.1,7.0 -ENV TF_CUDA_VERSION=10.0 -ENV TF_CUDNN_VERSION=7 - -# Check out TensorFlow source code if --build_arg CHECKOUT_TENSORFLOW=1 +ENV TF_CUDA_VERSION=${CUDA} +ENV TF_CUDNN_VERSION=${CUDNN%%.*} +# CACHE_STOP is used to rerun future commands, otherwise cloning tensorflow will be cached and will not pull the most recent version +ARG CACHE_STOP=1 +# Check out TensorFlow source code if --build_arg CHECKOUT_TF_SRC=1 ARG CHECKOUT_TF_SRC=0 -RUN test "${CHECKOUT_TF_SRC}" -eq 1 && git clone https://github.com/tensorflow/tensorflow.git /tensorflow_src +RUN test "${CHECKOUT_TF_SRC}" -eq 1 && git clone https://github.com/tensorflow/tensorflow.git /tensorflow_src || true ARG USE_PYTHON_3_NOT_2 ARG _PY_SUFFIX=${USE_PYTHON_3_NOT_2:+3} diff --git a/tensorflow/tools/dockerfiles/dockerfiles/gpu-jupyter.Dockerfile b/tensorflow/tools/dockerfiles/dockerfiles/gpu-jupyter.Dockerfile index 46252c54138..12eb5afa8af 100644 --- a/tensorflow/tools/dockerfiles/dockerfiles/gpu-jupyter.Dockerfile +++ b/tensorflow/tools/dockerfiles/dockerfiles/gpu-jupyter.Dockerfile @@ -21,32 +21,37 @@ ARG UBUNTU_VERSION=16.04 -FROM nvidia/cuda:10.0-base-ubuntu${UBUNTU_VERSION} as base +ARG ARCH= +ARG CUDA=10.0 +FROM nvidia/cuda${ARCH:+-$ARCH}:${CUDA}-base-ubuntu${UBUNTU_VERSION} as base +ARG CUDNN=7.4.1.5-1 +# Needed for string substitution +SHELL ["/bin/bash", "-c"] # Pick up some TF dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ - cuda-command-line-tools-10-0 \ - cuda-cublas-10-0 \ - cuda-cufft-10-0 \ - cuda-curand-10-0 \ - cuda-cusolver-10-0 \ - cuda-cusparse-10-0 \ - libcudnn7=7.4.1.5-1+cuda10.0 \ + cuda-command-line-tools-${CUDA/./-} \ + cuda-cublas-${CUDA/./-} \ + cuda-cufft-${CUDA/./-} \ + cuda-curand-${CUDA/./-} \ + cuda-cusolver-${CUDA/./-} \ + cuda-cusparse-${CUDA/./-} \ + curl \ + libcudnn7=${CUDNN}+cuda${CUDA} \ libfreetype6-dev \ libhdf5-serial-dev \ - libpng12-dev \ libzmq3-dev \ pkg-config \ software-properties-common \ unzip -RUN apt-get update && \ - apt-get install nvinfer-runtime-trt-repo-ubuntu1604-5.0.2-ga-cuda10.0 \ +RUN [ ${ARCH} = ppc64le ] || (apt-get update && \ + apt-get install nvinfer-runtime-trt-repo-ubuntu1604-5.0.2-ga-cuda${CUDA} \ && apt-get update \ - && apt-get install -y --no-install-recommends libnvinfer5=5.0.2-1+cuda10.0 \ + && apt-get install -y --no-install-recommends libnvinfer5=5.0.2-1+cuda${CUDA} \ && apt-get clean \ - && rm -rf /var/lib/apt/lists/* + && rm -rf /var/lib/apt/lists/*) # For CUDA profiling, TensorFlow requires CUPTI. ENV LD_LIBRARY_PATH /usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH diff --git a/tensorflow/tools/dockerfiles/dockerfiles/gpu.Dockerfile b/tensorflow/tools/dockerfiles/dockerfiles/gpu.Dockerfile index 80e427f824a..00664b6b73f 100644 --- a/tensorflow/tools/dockerfiles/dockerfiles/gpu.Dockerfile +++ b/tensorflow/tools/dockerfiles/dockerfiles/gpu.Dockerfile @@ -21,32 +21,37 @@ ARG UBUNTU_VERSION=16.04 -FROM nvidia/cuda:10.0-base-ubuntu${UBUNTU_VERSION} as base +ARG ARCH= +ARG CUDA=10.0 +FROM nvidia/cuda${ARCH:+-$ARCH}:${CUDA}-base-ubuntu${UBUNTU_VERSION} as base +ARG CUDNN=7.4.1.5-1 +# Needed for string substitution +SHELL ["/bin/bash", "-c"] # Pick up some TF dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ - cuda-command-line-tools-10-0 \ - cuda-cublas-10-0 \ - cuda-cufft-10-0 \ - cuda-curand-10-0 \ - cuda-cusolver-10-0 \ - cuda-cusparse-10-0 \ - libcudnn7=7.4.1.5-1+cuda10.0 \ + cuda-command-line-tools-${CUDA/./-} \ + cuda-cublas-${CUDA/./-} \ + cuda-cufft-${CUDA/./-} \ + cuda-curand-${CUDA/./-} \ + cuda-cusolver-${CUDA/./-} \ + cuda-cusparse-${CUDA/./-} \ + curl \ + libcudnn7=${CUDNN}+cuda${CUDA} \ libfreetype6-dev \ libhdf5-serial-dev \ - libpng12-dev \ libzmq3-dev \ pkg-config \ software-properties-common \ unzip -RUN apt-get update && \ - apt-get install nvinfer-runtime-trt-repo-ubuntu1604-5.0.2-ga-cuda10.0 \ +RUN [ ${ARCH} = ppc64le ] || (apt-get update && \ + apt-get install nvinfer-runtime-trt-repo-ubuntu1604-5.0.2-ga-cuda${CUDA} \ && apt-get update \ - && apt-get install -y --no-install-recommends libnvinfer5=5.0.2-1+cuda10.0 \ + && apt-get install -y --no-install-recommends libnvinfer5=5.0.2-1+cuda${CUDA} \ && apt-get clean \ - && rm -rf /var/lib/apt/lists/* + && rm -rf /var/lib/apt/lists/*) # For CUDA profiling, TensorFlow requires CUPTI. ENV LD_LIBRARY_PATH /usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH diff --git a/tensorflow/tools/dockerfiles/dockerfiles/ppc64le/cpu-ppc64le-jupyter.Dockerfile b/tensorflow/tools/dockerfiles/dockerfiles/ppc64le/cpu-ppc64le-jupyter.Dockerfile new file mode 100644 index 00000000000..beb3292a9db --- /dev/null +++ b/tensorflow/tools/dockerfiles/dockerfiles/ppc64le/cpu-ppc64le-jupyter.Dockerfile @@ -0,0 +1,92 @@ +# Copyright 2018 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. +# ============================================================================ +# +# THIS IS A GENERATED DOCKERFILE. +# +# This file was assembled from multiple pieces, whose use is documented +# throughout. Please refer to the TensorFlow dockerfiles documentation +# for more information. + +ARG UBUNTU_VERSION=16.04 + +FROM ubuntu:${UBUNTU_VERSION} as base + +ARG USE_PYTHON_3_NOT_2 +ARG _PY_SUFFIX=${USE_PYTHON_3_NOT_2:+3} +ARG PYTHON=python${_PY_SUFFIX} +ARG PIP=pip${_PY_SUFFIX} + +# See http://bugs.python.org/issue19846 +ENV LANG C.UTF-8 + +RUN apt-get update && apt-get install -y \ + ${PYTHON} \ + ${PYTHON}-pip + +RUN ${PIP} --no-cache-dir install --upgrade \ + pip \ + setuptools + +# Some TF tools expect a "python" binary +RUN ln -s $(which ${PYTHON}) /usr/local/bin/python + +# Options: +# tensorflow +# tensorflow-gpu +# tf-nightly +# tf-nightly-gpu +ARG TF_PACKAGE=tensorflow +RUN apt-get update && apt-get install -y wget libhdf5-dev +RUN ${PIP} install --global-option=build_ext \ + --global-option=-I/usr/include/hdf5/serial/ \ + --global-option=-L/usr/lib/powerpc64le-linux-gnu/hdf5/serial \ + h5py + +# CACHE_STOP is used to rerun future commands, otherwise downloading the .whl will be cached and will not pull the most recent version +ARG CACHE_STOP=1 +RUN if [ ${TF_PACKAGE} = tensorflow-gpu ]; then \ + BASE=https://powerci.osuosl.org/job/TensorFlow_PPC64LE_GPU_Release_Build/lastSuccessfulBuild/; \ + elif [ ${TF_PACKAGE} = tf-nightly-gpu ]; then \ + BASE=https://powerci.osuosl.org/job/TensorFlow_PPC64LE_GPU_Nightly_Artifact/lastSuccessfulBuild/; \ + elif [ ${TF_PACKAGE} = tensorflow ]; then \ + BASE=https://powerci.osuosl.org/job/TensorFlow_PPC64LE_CPU_Release_Build/lastSuccessfulBuild/; \ + elif [ ${TF_PACKAGE} = tf-nightly ]; then \ + BASE=https://powerci.osuosl.org/job/TensorFlow_PPC64LE_CPU_Nightly_Artifact/lastSuccessfulBuild/; \ + fi; \ + MAJOR=`${PYTHON} -c 'import sys; print(sys.version_info[0])'`; \ + MINOR=`${PYTHON} -c 'import sys; print(sys.version_info[1])'`; \ + PACKAGE=$(wget -qO- ${BASE}"api/xml?xpath=//fileName&wrapper=artifacts" | grep -o "[^<>]*cp${MAJOR}${MINOR}[^<>]*.whl"); \ + wget ${BASE}"artifact/tensorflow_pkg/"${PACKAGE}; \ + ${PIP} install ${PACKAGE} + +COPY bashrc /etc/bash.bashrc +RUN chmod a+rwx /etc/bash.bashrc + +RUN ${PIP} install jupyter matplotlib + +RUN mkdir -p /tf/tensorflow-tutorials && chmod -R a+rwx /tf/ +RUN mkdir /.local && chmod a+rwx /.local +RUN apt-get install -y --no-install-recommends wget +WORKDIR /tf/tensorflow-tutorials +RUN wget https://raw.githubusercontent.com/tensorflow/docs/master/site/en/tutorials/keras/basic_classification.ipynb +RUN wget https://raw.githubusercontent.com/tensorflow/docs/master/site/en/tutorials/keras/basic_text_classification.ipynb +COPY readme-for-jupyter.md README.md +RUN apt-get autoremove -y && apt-get remove -y wget +WORKDIR /tf +EXPOSE 8888 + +RUN ${PYTHON} -m ipykernel.kernelspec + +CMD ["bash", "-c", "source /etc/bash.bashrc && jupyter notebook --notebook-dir=/tf --ip 0.0.0.0 --no-browser --allow-root"] diff --git a/tensorflow/tools/dockerfiles/dockerfiles/ppc64le/cpu-ppc64le.Dockerfile b/tensorflow/tools/dockerfiles/dockerfiles/ppc64le/cpu-ppc64le.Dockerfile new file mode 100644 index 00000000000..083d61bf9a2 --- /dev/null +++ b/tensorflow/tools/dockerfiles/dockerfiles/ppc64le/cpu-ppc64le.Dockerfile @@ -0,0 +1,75 @@ +# Copyright 2018 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. +# ============================================================================ +# +# THIS IS A GENERATED DOCKERFILE. +# +# This file was assembled from multiple pieces, whose use is documented +# throughout. Please refer to the TensorFlow dockerfiles documentation +# for more information. + +ARG UBUNTU_VERSION=16.04 + +FROM ubuntu:${UBUNTU_VERSION} as base + +ARG USE_PYTHON_3_NOT_2 +ARG _PY_SUFFIX=${USE_PYTHON_3_NOT_2:+3} +ARG PYTHON=python${_PY_SUFFIX} +ARG PIP=pip${_PY_SUFFIX} + +# See http://bugs.python.org/issue19846 +ENV LANG C.UTF-8 + +RUN apt-get update && apt-get install -y \ + ${PYTHON} \ + ${PYTHON}-pip + +RUN ${PIP} --no-cache-dir install --upgrade \ + pip \ + setuptools + +# Some TF tools expect a "python" binary +RUN ln -s $(which ${PYTHON}) /usr/local/bin/python + +# Options: +# tensorflow +# tensorflow-gpu +# tf-nightly +# tf-nightly-gpu +ARG TF_PACKAGE=tensorflow +RUN apt-get update && apt-get install -y wget libhdf5-dev +RUN ${PIP} install --global-option=build_ext \ + --global-option=-I/usr/include/hdf5/serial/ \ + --global-option=-L/usr/lib/powerpc64le-linux-gnu/hdf5/serial \ + h5py + +# CACHE_STOP is used to rerun future commands, otherwise downloading the .whl will be cached and will not pull the most recent version +ARG CACHE_STOP=1 +RUN if [ ${TF_PACKAGE} = tensorflow-gpu ]; then \ + BASE=https://powerci.osuosl.org/job/TensorFlow_PPC64LE_GPU_Release_Build/lastSuccessfulBuild/; \ + elif [ ${TF_PACKAGE} = tf-nightly-gpu ]; then \ + BASE=https://powerci.osuosl.org/job/TensorFlow_PPC64LE_GPU_Nightly_Artifact/lastSuccessfulBuild/; \ + elif [ ${TF_PACKAGE} = tensorflow ]; then \ + BASE=https://powerci.osuosl.org/job/TensorFlow_PPC64LE_CPU_Release_Build/lastSuccessfulBuild/; \ + elif [ ${TF_PACKAGE} = tf-nightly ]; then \ + BASE=https://powerci.osuosl.org/job/TensorFlow_PPC64LE_CPU_Nightly_Artifact/lastSuccessfulBuild/; \ + fi; \ + MAJOR=`${PYTHON} -c 'import sys; print(sys.version_info[0])'`; \ + MINOR=`${PYTHON} -c 'import sys; print(sys.version_info[1])'`; \ + PACKAGE=$(wget -qO- ${BASE}"api/xml?xpath=//fileName&wrapper=artifacts" | grep -o "[^<>]*cp${MAJOR}${MINOR}[^<>]*.whl"); \ + wget ${BASE}"artifact/tensorflow_pkg/"${PACKAGE}; \ + ${PIP} install ${PACKAGE} + +COPY bashrc /etc/bash.bashrc +RUN chmod a+rwx /etc/bash.bashrc diff --git a/tensorflow/tools/dockerfiles/dockerfiles/ppc64le/devel-cpu-ppc64le-jupyter.Dockerfile b/tensorflow/tools/dockerfiles/dockerfiles/ppc64le/devel-cpu-ppc64le-jupyter.Dockerfile new file mode 100644 index 00000000000..1f32849735c --- /dev/null +++ b/tensorflow/tools/dockerfiles/dockerfiles/ppc64le/devel-cpu-ppc64le-jupyter.Dockerfile @@ -0,0 +1,125 @@ +# Copyright 2018 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. +# ============================================================================ +# +# THIS IS A GENERATED DOCKERFILE. +# +# This file was assembled from multiple pieces, whose use is documented +# throughout. Please refer to the TensorFlow dockerfiles documentation +# for more information. + +ARG UBUNTU_VERSION=16.04 + +FROM ubuntu:${UBUNTU_VERSION} AS base + +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential \ + curl \ + git \ + libcurl3-dev \ + libfreetype6-dev \ + libhdf5-serial-dev \ + libzmq3-dev \ + pkg-config \ + rsync \ + software-properties-common \ + unzip \ + zip \ + zlib1g-dev \ + openjdk-8-jdk \ + openjdk-8-jre-headless \ + && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +ENV CI_BUILD_PYTHON python + +# CACHE_STOP is used to rerun future commands, otherwise cloning tensorflow will be cached and will not pull the most recent version +ARG CACHE_STOP=1 +# Check out TensorFlow source code if --build_arg CHECKOUT_TF_SRC=1 +ARG CHECKOUT_TF_SRC=0 +RUN test "${CHECKOUT_TF_SRC}" -eq 1 && git clone https://github.com/tensorflow/tensorflow.git /tensorflow_src || true + +ARG USE_PYTHON_3_NOT_2 +ARG _PY_SUFFIX=${USE_PYTHON_3_NOT_2:+3} +ARG PYTHON=python${_PY_SUFFIX} +ARG PIP=pip${_PY_SUFFIX} + +# See http://bugs.python.org/issue19846 +ENV LANG C.UTF-8 + +RUN apt-get update && apt-get install -y \ + ${PYTHON} \ + ${PYTHON}-pip + +RUN ${PIP} --no-cache-dir install --upgrade \ + pip \ + setuptools + +# Some TF tools expect a "python" binary +RUN ln -s $(which ${PYTHON}) /usr/local/bin/python + +RUN apt-get update && apt-get install -y \ + build-essential \ + curl \ + git \ + openjdk-8-jdk \ + ${PYTHON}-dev \ + swig + +RUN ${PIP} --no-cache-dir install \ + Pillow \ + h5py \ + keras_applications \ + keras_preprocessing \ + matplotlib \ + mock \ + numpy \ + scipy \ + sklearn \ + pandas \ + && test "${USE_PYTHON_3_NOT_2}" -eq 1 && true || ${PIP} --no-cache-dir install \ + enum34 + + # Build and install bazel +ENV BAZEL_VERSION 0.15.0 +WORKDIR / +RUN mkdir /bazel && \ + cd /bazel && \ + curl -fSsL -O https://github.com/bazelbuild/bazel/releases/download/$BAZEL_VERSION/bazel-$BAZEL_VERSION-dist.zip && \ + unzip bazel-$BAZEL_VERSION-dist.zip && \ + bash ./compile.sh && \ + cp output/bazel /usr/local/bin/ && \ + rm -rf /bazel && \ + cd - + +COPY bashrc /etc/bash.bashrc +RUN chmod a+rwx /etc/bash.bashrc + +RUN ${PIP} install jupyter matplotlib + +RUN mkdir -p /tf/tensorflow-tutorials && chmod -R a+rwx /tf/ +RUN mkdir /.local && chmod a+rwx /.local +RUN apt-get install -y --no-install-recommends wget +WORKDIR /tf/tensorflow-tutorials +RUN wget https://raw.githubusercontent.com/tensorflow/docs/master/site/en/tutorials/keras/basic_classification.ipynb +RUN wget https://raw.githubusercontent.com/tensorflow/docs/master/site/en/tutorials/keras/basic_text_classification.ipynb +COPY readme-for-jupyter.md README.md +RUN apt-get autoremove -y && apt-get remove -y wget +WORKDIR /tf +EXPOSE 8888 + +RUN ${PYTHON} -m ipykernel.kernelspec + +CMD ["bash", "-c", "source /etc/bash.bashrc && jupyter notebook --notebook-dir=/tf --ip 0.0.0.0 --no-browser --allow-root"] diff --git a/tensorflow/tools/dockerfiles/dockerfiles/ppc64le/devel-cpu-ppc64le.Dockerfile b/tensorflow/tools/dockerfiles/dockerfiles/ppc64le/devel-cpu-ppc64le.Dockerfile new file mode 100644 index 00000000000..cda51c371d0 --- /dev/null +++ b/tensorflow/tools/dockerfiles/dockerfiles/ppc64le/devel-cpu-ppc64le.Dockerfile @@ -0,0 +1,108 @@ +# Copyright 2018 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. +# ============================================================================ +# +# THIS IS A GENERATED DOCKERFILE. +# +# This file was assembled from multiple pieces, whose use is documented +# throughout. Please refer to the TensorFlow dockerfiles documentation +# for more information. + +ARG UBUNTU_VERSION=16.04 + +FROM ubuntu:${UBUNTU_VERSION} AS base + +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential \ + curl \ + git \ + libcurl3-dev \ + libfreetype6-dev \ + libhdf5-serial-dev \ + libzmq3-dev \ + pkg-config \ + rsync \ + software-properties-common \ + unzip \ + zip \ + zlib1g-dev \ + openjdk-8-jdk \ + openjdk-8-jre-headless \ + && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +ENV CI_BUILD_PYTHON python + +# CACHE_STOP is used to rerun future commands, otherwise cloning tensorflow will be cached and will not pull the most recent version +ARG CACHE_STOP=1 +# Check out TensorFlow source code if --build_arg CHECKOUT_TF_SRC=1 +ARG CHECKOUT_TF_SRC=0 +RUN test "${CHECKOUT_TF_SRC}" -eq 1 && git clone https://github.com/tensorflow/tensorflow.git /tensorflow_src || true + +ARG USE_PYTHON_3_NOT_2 +ARG _PY_SUFFIX=${USE_PYTHON_3_NOT_2:+3} +ARG PYTHON=python${_PY_SUFFIX} +ARG PIP=pip${_PY_SUFFIX} + +# See http://bugs.python.org/issue19846 +ENV LANG C.UTF-8 + +RUN apt-get update && apt-get install -y \ + ${PYTHON} \ + ${PYTHON}-pip + +RUN ${PIP} --no-cache-dir install --upgrade \ + pip \ + setuptools + +# Some TF tools expect a "python" binary +RUN ln -s $(which ${PYTHON}) /usr/local/bin/python + +RUN apt-get update && apt-get install -y \ + build-essential \ + curl \ + git \ + openjdk-8-jdk \ + ${PYTHON}-dev \ + swig + +RUN ${PIP} --no-cache-dir install \ + Pillow \ + h5py \ + keras_applications \ + keras_preprocessing \ + matplotlib \ + mock \ + numpy \ + scipy \ + sklearn \ + pandas \ + && test "${USE_PYTHON_3_NOT_2}" -eq 1 && true || ${PIP} --no-cache-dir install \ + enum34 + + # Build and install bazel +ENV BAZEL_VERSION 0.15.0 +WORKDIR / +RUN mkdir /bazel && \ + cd /bazel && \ + curl -fSsL -O https://github.com/bazelbuild/bazel/releases/download/$BAZEL_VERSION/bazel-$BAZEL_VERSION-dist.zip && \ + unzip bazel-$BAZEL_VERSION-dist.zip && \ + bash ./compile.sh && \ + cp output/bazel /usr/local/bin/ && \ + rm -rf /bazel && \ + cd - + +COPY bashrc /etc/bash.bashrc +RUN chmod a+rwx /etc/bash.bashrc diff --git a/tensorflow/tools/dockerfiles/dockerfiles/ppc64le/devel-gpu-ppc64le-jupyter.Dockerfile b/tensorflow/tools/dockerfiles/dockerfiles/ppc64le/devel-gpu-ppc64le-jupyter.Dockerfile new file mode 100644 index 00000000000..d8ee19f66ef --- /dev/null +++ b/tensorflow/tools/dockerfiles/dockerfiles/ppc64le/devel-gpu-ppc64le-jupyter.Dockerfile @@ -0,0 +1,151 @@ +# Copyright 2018 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. +# ============================================================================ +# +# THIS IS A GENERATED DOCKERFILE. +# +# This file was assembled from multiple pieces, whose use is documented +# throughout. Please refer to the TensorFlow dockerfiles documentation +# for more information. + +ARG UBUNTU_VERSION=16.04 + +ARG ARCH= +ARG CUDA=10.0 +FROM nvidia/cuda${ARCH:+-$ARCH}:${CUDA}-base-ubuntu${UBUNTU_VERSION} as base +ARG CUDNN=7.4.1.5-1 +ARG LIB_DIR_PREFIX=x84_64 + +# Needed for string substitution +SHELL ["/bin/bash", "-c"] +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential \ + cuda-command-line-tools-${CUDA/./-} \ + cuda-cublas-dev-${CUDA/./-} \ + cuda-cudart-dev-${CUDA/./-} \ + cuda-cufft-dev-${CUDA/./-} \ + cuda-curand-dev-${CUDA/./-} \ + cuda-cusolver-dev-${CUDA/./-} \ + cuda-cusparse-dev-${CUDA/./-} \ + libcudnn7=${CUDNN}+cuda${CUDA} \ + libcudnn7-dev=${CUDNN}+cuda${CUDA} \ + libcurl3-dev \ + libfreetype6-dev \ + libhdf5-serial-dev \ + libzmq3-dev \ + pkg-config \ + rsync \ + software-properties-common \ + unzip \ + zip \ + zlib1g-dev \ + wget \ + git \ + && \ + find /usr/local/cuda-${CUDA}/lib64/ -type f -name 'lib*_static.a' -not -name 'libcudart_static.a' -delete && \ + rm /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libcudnn_static_v7.a + +RUN [ ${ARCH} = ppc64le ] || (apt-get update && \ + apt-get install nvinfer-runtime-trt-repo-ubuntu1604-5.0.2-ga-cuda${CUDA} \ + && apt-get update \ + && apt-get install -y --no-install-recommends libnvinfer5=5.0.2-1+cuda${CUDA} \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*) + +# Configure the build for our CUDA configuration. +ENV CI_BUILD_PYTHON python +ENV LD_LIBRARY_PATH /usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH +ENV TF_NEED_CUDA 1 +ENV TF_NEED_TENSORRT 1 +ENV TF_CUDA_COMPUTE_CAPABILITIES=3.5,5.2,6.0,6.1,7.0 +ENV TF_CUDA_VERSION=${CUDA} +ENV TF_CUDNN_VERSION=${CUDNN%%.*} +# CACHE_STOP is used to rerun future commands, otherwise cloning tensorflow will be cached and will not pull the most recent version +ARG CACHE_STOP=1 +# Check out TensorFlow source code if --build_arg CHECKOUT_TF_SRC=1 +ARG CHECKOUT_TF_SRC=0 +RUN test "${CHECKOUT_TF_SRC}" -eq 1 && git clone https://github.com/tensorflow/tensorflow.git /tensorflow_src || true + +ARG USE_PYTHON_3_NOT_2 +ARG _PY_SUFFIX=${USE_PYTHON_3_NOT_2:+3} +ARG PYTHON=python${_PY_SUFFIX} +ARG PIP=pip${_PY_SUFFIX} + +# See http://bugs.python.org/issue19846 +ENV LANG C.UTF-8 + +RUN apt-get update && apt-get install -y \ + ${PYTHON} \ + ${PYTHON}-pip + +RUN ${PIP} --no-cache-dir install --upgrade \ + pip \ + setuptools + +# Some TF tools expect a "python" binary +RUN ln -s $(which ${PYTHON}) /usr/local/bin/python + +RUN apt-get update && apt-get install -y \ + build-essential \ + curl \ + git \ + openjdk-8-jdk \ + ${PYTHON}-dev \ + swig + +RUN ${PIP} --no-cache-dir install \ + Pillow \ + h5py \ + keras_applications \ + keras_preprocessing \ + matplotlib \ + mock \ + numpy \ + scipy \ + sklearn \ + pandas \ + && test "${USE_PYTHON_3_NOT_2}" -eq 1 && true || ${PIP} --no-cache-dir install \ + enum34 + + # Build and install bazel +ENV BAZEL_VERSION 0.15.0 +WORKDIR / +RUN mkdir /bazel && \ + cd /bazel && \ + curl -fSsL -O https://github.com/bazelbuild/bazel/releases/download/$BAZEL_VERSION/bazel-$BAZEL_VERSION-dist.zip && \ + unzip bazel-$BAZEL_VERSION-dist.zip && \ + bash ./compile.sh && \ + cp output/bazel /usr/local/bin/ && \ + rm -rf /bazel && \ + cd - + +COPY bashrc /etc/bash.bashrc +RUN chmod a+rwx /etc/bash.bashrc + +RUN ${PIP} install jupyter matplotlib + +RUN mkdir -p /tf/tensorflow-tutorials && chmod -R a+rwx /tf/ +RUN mkdir /.local && chmod a+rwx /.local +RUN apt-get install -y --no-install-recommends wget +WORKDIR /tf/tensorflow-tutorials +RUN wget https://raw.githubusercontent.com/tensorflow/docs/master/site/en/tutorials/keras/basic_classification.ipynb +RUN wget https://raw.githubusercontent.com/tensorflow/docs/master/site/en/tutorials/keras/basic_text_classification.ipynb +COPY readme-for-jupyter.md README.md +RUN apt-get autoremove -y && apt-get remove -y wget +WORKDIR /tf +EXPOSE 8888 + +RUN ${PYTHON} -m ipykernel.kernelspec + +CMD ["bash", "-c", "source /etc/bash.bashrc && jupyter notebook --notebook-dir=/tf --ip 0.0.0.0 --no-browser --allow-root"] diff --git a/tensorflow/tools/dockerfiles/dockerfiles/ppc64le/devel-gpu-ppc64le.Dockerfile b/tensorflow/tools/dockerfiles/dockerfiles/ppc64le/devel-gpu-ppc64le.Dockerfile new file mode 100644 index 00000000000..966070634b8 --- /dev/null +++ b/tensorflow/tools/dockerfiles/dockerfiles/ppc64le/devel-gpu-ppc64le.Dockerfile @@ -0,0 +1,134 @@ +# Copyright 2018 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. +# ============================================================================ +# +# THIS IS A GENERATED DOCKERFILE. +# +# This file was assembled from multiple pieces, whose use is documented +# throughout. Please refer to the TensorFlow dockerfiles documentation +# for more information. + +ARG UBUNTU_VERSION=16.04 + +ARG ARCH= +ARG CUDA=10.0 +FROM nvidia/cuda${ARCH:+-$ARCH}:${CUDA}-base-ubuntu${UBUNTU_VERSION} as base +ARG CUDNN=7.4.1.5-1 +ARG LIB_DIR_PREFIX=x84_64 + +# Needed for string substitution +SHELL ["/bin/bash", "-c"] +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential \ + cuda-command-line-tools-${CUDA/./-} \ + cuda-cublas-dev-${CUDA/./-} \ + cuda-cudart-dev-${CUDA/./-} \ + cuda-cufft-dev-${CUDA/./-} \ + cuda-curand-dev-${CUDA/./-} \ + cuda-cusolver-dev-${CUDA/./-} \ + cuda-cusparse-dev-${CUDA/./-} \ + libcudnn7=${CUDNN}+cuda${CUDA} \ + libcudnn7-dev=${CUDNN}+cuda${CUDA} \ + libcurl3-dev \ + libfreetype6-dev \ + libhdf5-serial-dev \ + libzmq3-dev \ + pkg-config \ + rsync \ + software-properties-common \ + unzip \ + zip \ + zlib1g-dev \ + wget \ + git \ + && \ + find /usr/local/cuda-${CUDA}/lib64/ -type f -name 'lib*_static.a' -not -name 'libcudart_static.a' -delete && \ + rm /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libcudnn_static_v7.a + +RUN [ ${ARCH} = ppc64le ] || (apt-get update && \ + apt-get install nvinfer-runtime-trt-repo-ubuntu1604-5.0.2-ga-cuda${CUDA} \ + && apt-get update \ + && apt-get install -y --no-install-recommends libnvinfer5=5.0.2-1+cuda${CUDA} \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*) + +# Configure the build for our CUDA configuration. +ENV CI_BUILD_PYTHON python +ENV LD_LIBRARY_PATH /usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH +ENV TF_NEED_CUDA 1 +ENV TF_NEED_TENSORRT 1 +ENV TF_CUDA_COMPUTE_CAPABILITIES=3.5,5.2,6.0,6.1,7.0 +ENV TF_CUDA_VERSION=${CUDA} +ENV TF_CUDNN_VERSION=${CUDNN%%.*} +# CACHE_STOP is used to rerun future commands, otherwise cloning tensorflow will be cached and will not pull the most recent version +ARG CACHE_STOP=1 +# Check out TensorFlow source code if --build_arg CHECKOUT_TF_SRC=1 +ARG CHECKOUT_TF_SRC=0 +RUN test "${CHECKOUT_TF_SRC}" -eq 1 && git clone https://github.com/tensorflow/tensorflow.git /tensorflow_src || true + +ARG USE_PYTHON_3_NOT_2 +ARG _PY_SUFFIX=${USE_PYTHON_3_NOT_2:+3} +ARG PYTHON=python${_PY_SUFFIX} +ARG PIP=pip${_PY_SUFFIX} + +# See http://bugs.python.org/issue19846 +ENV LANG C.UTF-8 + +RUN apt-get update && apt-get install -y \ + ${PYTHON} \ + ${PYTHON}-pip + +RUN ${PIP} --no-cache-dir install --upgrade \ + pip \ + setuptools + +# Some TF tools expect a "python" binary +RUN ln -s $(which ${PYTHON}) /usr/local/bin/python + +RUN apt-get update && apt-get install -y \ + build-essential \ + curl \ + git \ + openjdk-8-jdk \ + ${PYTHON}-dev \ + swig + +RUN ${PIP} --no-cache-dir install \ + Pillow \ + h5py \ + keras_applications \ + keras_preprocessing \ + matplotlib \ + mock \ + numpy \ + scipy \ + sklearn \ + pandas \ + && test "${USE_PYTHON_3_NOT_2}" -eq 1 && true || ${PIP} --no-cache-dir install \ + enum34 + + # Build and install bazel +ENV BAZEL_VERSION 0.15.0 +WORKDIR / +RUN mkdir /bazel && \ + cd /bazel && \ + curl -fSsL -O https://github.com/bazelbuild/bazel/releases/download/$BAZEL_VERSION/bazel-$BAZEL_VERSION-dist.zip && \ + unzip bazel-$BAZEL_VERSION-dist.zip && \ + bash ./compile.sh && \ + cp output/bazel /usr/local/bin/ && \ + rm -rf /bazel && \ + cd - + +COPY bashrc /etc/bash.bashrc +RUN chmod a+rwx /etc/bash.bashrc diff --git a/tensorflow/tools/dockerfiles/dockerfiles/ppc64le/gpu-ppc64le-jupyter.Dockerfile b/tensorflow/tools/dockerfiles/dockerfiles/ppc64le/gpu-ppc64le-jupyter.Dockerfile new file mode 100644 index 00000000000..449a8d8aa89 --- /dev/null +++ b/tensorflow/tools/dockerfiles/dockerfiles/ppc64le/gpu-ppc64le-jupyter.Dockerfile @@ -0,0 +1,125 @@ +# Copyright 2018 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. +# ============================================================================ +# +# THIS IS A GENERATED DOCKERFILE. +# +# This file was assembled from multiple pieces, whose use is documented +# throughout. Please refer to the TensorFlow dockerfiles documentation +# for more information. + +ARG UBUNTU_VERSION=16.04 + +ARG ARCH= +ARG CUDA=10.0 +FROM nvidia/cuda${ARCH:+-$ARCH}:${CUDA}-base-ubuntu${UBUNTU_VERSION} as base +ARG CUDNN=7.4.1.5-1 + +# Needed for string substitution +SHELL ["/bin/bash", "-c"] +# Pick up some TF dependencies +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential \ + cuda-command-line-tools-${CUDA/./-} \ + cuda-cublas-${CUDA/./-} \ + cuda-cufft-${CUDA/./-} \ + cuda-curand-${CUDA/./-} \ + cuda-cusolver-${CUDA/./-} \ + cuda-cusparse-${CUDA/./-} \ + curl \ + libcudnn7=${CUDNN}+cuda${CUDA} \ + libfreetype6-dev \ + libhdf5-serial-dev \ + libzmq3-dev \ + pkg-config \ + software-properties-common \ + unzip + +RUN [ ${ARCH} = ppc64le ] || (apt-get update && \ + apt-get install nvinfer-runtime-trt-repo-ubuntu1604-5.0.2-ga-cuda${CUDA} \ + && apt-get update \ + && apt-get install -y --no-install-recommends libnvinfer5=5.0.2-1+cuda${CUDA} \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*) + +# For CUDA profiling, TensorFlow requires CUPTI. +ENV LD_LIBRARY_PATH /usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH + +ARG USE_PYTHON_3_NOT_2 +ARG _PY_SUFFIX=${USE_PYTHON_3_NOT_2:+3} +ARG PYTHON=python${_PY_SUFFIX} +ARG PIP=pip${_PY_SUFFIX} + +# See http://bugs.python.org/issue19846 +ENV LANG C.UTF-8 + +RUN apt-get update && apt-get install -y \ + ${PYTHON} \ + ${PYTHON}-pip + +RUN ${PIP} --no-cache-dir install --upgrade \ + pip \ + setuptools + +# Some TF tools expect a "python" binary +RUN ln -s $(which ${PYTHON}) /usr/local/bin/python + +# Options: +# tensorflow +# tensorflow-gpu +# tf-nightly +# tf-nightly-gpu +ARG TF_PACKAGE=tensorflow +RUN apt-get update && apt-get install -y wget libhdf5-dev +RUN ${PIP} install --global-option=build_ext \ + --global-option=-I/usr/include/hdf5/serial/ \ + --global-option=-L/usr/lib/powerpc64le-linux-gnu/hdf5/serial \ + h5py + +# CACHE_STOP is used to rerun future commands, otherwise downloading the .whl will be cached and will not pull the most recent version +ARG CACHE_STOP=1 +RUN if [ ${TF_PACKAGE} = tensorflow-gpu ]; then \ + BASE=https://powerci.osuosl.org/job/TensorFlow_PPC64LE_GPU_Release_Build/lastSuccessfulBuild/; \ + elif [ ${TF_PACKAGE} = tf-nightly-gpu ]; then \ + BASE=https://powerci.osuosl.org/job/TensorFlow_PPC64LE_GPU_Nightly_Artifact/lastSuccessfulBuild/; \ + elif [ ${TF_PACKAGE} = tensorflow ]; then \ + BASE=https://powerci.osuosl.org/job/TensorFlow_PPC64LE_CPU_Release_Build/lastSuccessfulBuild/; \ + elif [ ${TF_PACKAGE} = tf-nightly ]; then \ + BASE=https://powerci.osuosl.org/job/TensorFlow_PPC64LE_CPU_Nightly_Artifact/lastSuccessfulBuild/; \ + fi; \ + MAJOR=`${PYTHON} -c 'import sys; print(sys.version_info[0])'`; \ + MINOR=`${PYTHON} -c 'import sys; print(sys.version_info[1])'`; \ + PACKAGE=$(wget -qO- ${BASE}"api/xml?xpath=//fileName&wrapper=artifacts" | grep -o "[^<>]*cp${MAJOR}${MINOR}[^<>]*.whl"); \ + wget ${BASE}"artifact/tensorflow_pkg/"${PACKAGE}; \ + ${PIP} install ${PACKAGE} + +COPY bashrc /etc/bash.bashrc +RUN chmod a+rwx /etc/bash.bashrc + +RUN ${PIP} install jupyter matplotlib + +RUN mkdir -p /tf/tensorflow-tutorials && chmod -R a+rwx /tf/ +RUN mkdir /.local && chmod a+rwx /.local +RUN apt-get install -y --no-install-recommends wget +WORKDIR /tf/tensorflow-tutorials +RUN wget https://raw.githubusercontent.com/tensorflow/docs/master/site/en/tutorials/keras/basic_classification.ipynb +RUN wget https://raw.githubusercontent.com/tensorflow/docs/master/site/en/tutorials/keras/basic_text_classification.ipynb +COPY readme-for-jupyter.md README.md +RUN apt-get autoremove -y && apt-get remove -y wget +WORKDIR /tf +EXPOSE 8888 + +RUN ${PYTHON} -m ipykernel.kernelspec + +CMD ["bash", "-c", "source /etc/bash.bashrc && jupyter notebook --notebook-dir=/tf --ip 0.0.0.0 --no-browser --allow-root"] diff --git a/tensorflow/tools/dockerfiles/dockerfiles/ppc64le/gpu-ppc64le.Dockerfile b/tensorflow/tools/dockerfiles/dockerfiles/ppc64le/gpu-ppc64le.Dockerfile new file mode 100644 index 00000000000..f01a47f1c02 --- /dev/null +++ b/tensorflow/tools/dockerfiles/dockerfiles/ppc64le/gpu-ppc64le.Dockerfile @@ -0,0 +1,108 @@ +# Copyright 2018 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. +# ============================================================================ +# +# THIS IS A GENERATED DOCKERFILE. +# +# This file was assembled from multiple pieces, whose use is documented +# throughout. Please refer to the TensorFlow dockerfiles documentation +# for more information. + +ARG UBUNTU_VERSION=16.04 + +ARG ARCH= +ARG CUDA=10.0 +FROM nvidia/cuda${ARCH:+-$ARCH}:${CUDA}-base-ubuntu${UBUNTU_VERSION} as base +ARG CUDNN=7.4.1.5-1 + +# Needed for string substitution +SHELL ["/bin/bash", "-c"] +# Pick up some TF dependencies +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential \ + cuda-command-line-tools-${CUDA/./-} \ + cuda-cublas-${CUDA/./-} \ + cuda-cufft-${CUDA/./-} \ + cuda-curand-${CUDA/./-} \ + cuda-cusolver-${CUDA/./-} \ + cuda-cusparse-${CUDA/./-} \ + curl \ + libcudnn7=${CUDNN}+cuda${CUDA} \ + libfreetype6-dev \ + libhdf5-serial-dev \ + libzmq3-dev \ + pkg-config \ + software-properties-common \ + unzip + +RUN [ ${ARCH} = ppc64le ] || (apt-get update && \ + apt-get install nvinfer-runtime-trt-repo-ubuntu1604-5.0.2-ga-cuda${CUDA} \ + && apt-get update \ + && apt-get install -y --no-install-recommends libnvinfer5=5.0.2-1+cuda${CUDA} \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*) + +# For CUDA profiling, TensorFlow requires CUPTI. +ENV LD_LIBRARY_PATH /usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH + +ARG USE_PYTHON_3_NOT_2 +ARG _PY_SUFFIX=${USE_PYTHON_3_NOT_2:+3} +ARG PYTHON=python${_PY_SUFFIX} +ARG PIP=pip${_PY_SUFFIX} + +# See http://bugs.python.org/issue19846 +ENV LANG C.UTF-8 + +RUN apt-get update && apt-get install -y \ + ${PYTHON} \ + ${PYTHON}-pip + +RUN ${PIP} --no-cache-dir install --upgrade \ + pip \ + setuptools + +# Some TF tools expect a "python" binary +RUN ln -s $(which ${PYTHON}) /usr/local/bin/python + +# Options: +# tensorflow +# tensorflow-gpu +# tf-nightly +# tf-nightly-gpu +ARG TF_PACKAGE=tensorflow +RUN apt-get update && apt-get install -y wget libhdf5-dev +RUN ${PIP} install --global-option=build_ext \ + --global-option=-I/usr/include/hdf5/serial/ \ + --global-option=-L/usr/lib/powerpc64le-linux-gnu/hdf5/serial \ + h5py + +# CACHE_STOP is used to rerun future commands, otherwise downloading the .whl will be cached and will not pull the most recent version +ARG CACHE_STOP=1 +RUN if [ ${TF_PACKAGE} = tensorflow-gpu ]; then \ + BASE=https://powerci.osuosl.org/job/TensorFlow_PPC64LE_GPU_Release_Build/lastSuccessfulBuild/; \ + elif [ ${TF_PACKAGE} = tf-nightly-gpu ]; then \ + BASE=https://powerci.osuosl.org/job/TensorFlow_PPC64LE_GPU_Nightly_Artifact/lastSuccessfulBuild/; \ + elif [ ${TF_PACKAGE} = tensorflow ]; then \ + BASE=https://powerci.osuosl.org/job/TensorFlow_PPC64LE_CPU_Release_Build/lastSuccessfulBuild/; \ + elif [ ${TF_PACKAGE} = tf-nightly ]; then \ + BASE=https://powerci.osuosl.org/job/TensorFlow_PPC64LE_CPU_Nightly_Artifact/lastSuccessfulBuild/; \ + fi; \ + MAJOR=`${PYTHON} -c 'import sys; print(sys.version_info[0])'`; \ + MINOR=`${PYTHON} -c 'import sys; print(sys.version_info[1])'`; \ + PACKAGE=$(wget -qO- ${BASE}"api/xml?xpath=//fileName&wrapper=artifacts" | grep -o "[^<>]*cp${MAJOR}${MINOR}[^<>]*.whl"); \ + wget ${BASE}"artifact/tensorflow_pkg/"${PACKAGE}; \ + ${PIP} install ${PACKAGE} + +COPY bashrc /etc/bash.bashrc +RUN chmod a+rwx /etc/bash.bashrc diff --git a/tensorflow/tools/dockerfiles/partials/tensorflow-ppc64le.partial.Dockerfile b/tensorflow/tools/dockerfiles/partials/tensorflow-ppc64le.partial.Dockerfile new file mode 100644 index 00000000000..1e79574a34d --- /dev/null +++ b/tensorflow/tools/dockerfiles/partials/tensorflow-ppc64le.partial.Dockerfile @@ -0,0 +1,28 @@ +# Options: +# tensorflow +# tensorflow-gpu +# tf-nightly +# tf-nightly-gpu +ARG TF_PACKAGE=tensorflow +RUN apt-get update && apt-get install -y wget libhdf5-dev +RUN ${PIP} install --global-option=build_ext \ + --global-option=-I/usr/include/hdf5/serial/ \ + --global-option=-L/usr/lib/powerpc64le-linux-gnu/hdf5/serial \ + h5py + +# CACHE_STOP is used to rerun future commands, otherwise downloading the .whl will be cached and will not pull the most recent version +ARG CACHE_STOP=1 +RUN if [ ${TF_PACKAGE} = tensorflow-gpu ]; then \ + BASE=https://powerci.osuosl.org/job/TensorFlow_PPC64LE_GPU_Release_Build/lastSuccessfulBuild/; \ + elif [ ${TF_PACKAGE} = tf-nightly-gpu ]; then \ + BASE=https://powerci.osuosl.org/job/TensorFlow_PPC64LE_GPU_Nightly_Artifact/lastSuccessfulBuild/; \ + elif [ ${TF_PACKAGE} = tensorflow ]; then \ + BASE=https://powerci.osuosl.org/job/TensorFlow_PPC64LE_CPU_Release_Build/lastSuccessfulBuild/; \ + elif [ ${TF_PACKAGE} = tf-nightly ]; then \ + BASE=https://powerci.osuosl.org/job/TensorFlow_PPC64LE_CPU_Nightly_Artifact/lastSuccessfulBuild/; \ + fi; \ + MAJOR=`${PYTHON} -c 'import sys; print(sys.version_info[0])'`; \ + MINOR=`${PYTHON} -c 'import sys; print(sys.version_info[1])'`; \ + PACKAGE=$(wget -qO- ${BASE}"api/xml?xpath=//fileName&wrapper=artifacts" | grep -o "[^<>]*cp${MAJOR}${MINOR}[^<>]*.whl"); \ + wget ${BASE}"artifact/tensorflow_pkg/"${PACKAGE}; \ + ${PIP} install ${PACKAGE} diff --git a/tensorflow/tools/dockerfiles/partials/ubuntu/bazelbuild.partial.Dockerfile b/tensorflow/tools/dockerfiles/partials/ubuntu/bazelbuild.partial.Dockerfile new file mode 100644 index 00000000000..0397ab5fa85 --- /dev/null +++ b/tensorflow/tools/dockerfiles/partials/ubuntu/bazelbuild.partial.Dockerfile @@ -0,0 +1,33 @@ +RUN apt-get update && apt-get install -y \ + build-essential \ + curl \ + git \ + openjdk-8-jdk \ + ${PYTHON}-dev \ + swig + +RUN ${PIP} --no-cache-dir install \ + Pillow \ + h5py \ + keras_applications \ + keras_preprocessing \ + matplotlib \ + mock \ + numpy \ + scipy \ + sklearn \ + pandas \ + && test "${USE_PYTHON_3_NOT_2}" -eq 1 && true || ${PIP} --no-cache-dir install \ + enum34 + + # Build and install bazel +ENV BAZEL_VERSION 0.15.0 +WORKDIR / +RUN mkdir /bazel && \ + cd /bazel && \ + curl -fSsL -O https://github.com/bazelbuild/bazel/releases/download/$BAZEL_VERSION/bazel-$BAZEL_VERSION-dist.zip && \ + unzip bazel-$BAZEL_VERSION-dist.zip && \ + bash ./compile.sh && \ + cp output/bazel /usr/local/bin/ && \ + rm -rf /bazel && \ + cd - diff --git a/tensorflow/tools/dockerfiles/partials/ubuntu/devel-cpu.partial.Dockerfile b/tensorflow/tools/dockerfiles/partials/ubuntu/devel-cpu.partial.Dockerfile index 0652ac4151d..aaeda0b2077 100644 --- a/tensorflow/tools/dockerfiles/partials/ubuntu/devel-cpu.partial.Dockerfile +++ b/tensorflow/tools/dockerfiles/partials/ubuntu/devel-cpu.partial.Dockerfile @@ -7,7 +7,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ libcurl3-dev \ libfreetype6-dev \ libhdf5-serial-dev \ - libpng12-dev \ libzmq3-dev \ pkg-config \ rsync \ @@ -20,9 +19,11 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* - + ENV CI_BUILD_PYTHON python -# Check out TensorFlow source code if --build-arg CHECKOUT_TF_SRC=1 +# CACHE_STOP is used to rerun future commands, otherwise cloning tensorflow will be cached and will not pull the most recent version +ARG CACHE_STOP=1 +# Check out TensorFlow source code if --build_arg CHECKOUT_TF_SRC=1 ARG CHECKOUT_TF_SRC=0 -RUN test "${CHECKOUT_TF_SRC}" -eq 1 && git clone https://github.com/tensorflow/tensorflow.git /tensorflow_src +RUN test "${CHECKOUT_TF_SRC}" -eq 1 && git clone https://github.com/tensorflow/tensorflow.git /tensorflow_src || true diff --git a/tensorflow/tools/dockerfiles/partials/ubuntu/devel-nvidia.partial.Dockerfile b/tensorflow/tools/dockerfiles/partials/ubuntu/devel-nvidia.partial.Dockerfile index 2b4494ac595..8ce4a1879d1 100644 --- a/tensorflow/tools/dockerfiles/partials/ubuntu/devel-nvidia.partial.Dockerfile +++ b/tensorflow/tools/dockerfiles/partials/ubuntu/devel-nvidia.partial.Dockerfile @@ -1,20 +1,25 @@ -FROM nvidia/cuda:10.0-base-ubuntu${UBUNTU_VERSION} as base +ARG ARCH= +ARG CUDA=10.0 +FROM nvidia/cuda${ARCH:+-$ARCH}:${CUDA}-base-ubuntu${UBUNTU_VERSION} as base +ARG CUDNN=7.4.1.5-1 +ARG LIB_DIR_PREFIX=x84_64 +# Needed for string substitution +SHELL ["/bin/bash", "-c"] RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ - cuda-command-line-tools-10-0 \ - cuda-cublas-dev-10-0 \ - cuda-cudart-dev-10-0 \ - cuda-cufft-dev-10-0 \ - cuda-curand-dev-10-0 \ - cuda-cusolver-dev-10-0 \ - cuda-cusparse-dev-10-0 \ - libcudnn7=7.4.1.5-1+cuda10.0 \ - libcudnn7-dev=7.4.1.5-1+cuda10.0 \ + cuda-command-line-tools-${CUDA/./-} \ + cuda-cublas-dev-${CUDA/./-} \ + cuda-cudart-dev-${CUDA/./-} \ + cuda-cufft-dev-${CUDA/./-} \ + cuda-curand-dev-${CUDA/./-} \ + cuda-cusolver-dev-${CUDA/./-} \ + cuda-cusparse-dev-${CUDA/./-} \ + libcudnn7=${CUDNN}+cuda${CUDA} \ + libcudnn7-dev=${CUDNN}+cuda${CUDA} \ libcurl3-dev \ libfreetype6-dev \ libhdf5-serial-dev \ - libpng12-dev \ libzmq3-dev \ pkg-config \ rsync \ @@ -25,14 +30,15 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ wget \ git \ && \ - find /usr/local/cuda-10.0/lib64/ -type f -name 'lib*_static.a' -not -name 'libcudart_static.a' -delete && \ - rm /usr/lib/x86_64-linux-gnu/libcudnn_static_v7.a + find /usr/local/cuda-${CUDA}/lib64/ -type f -name 'lib*_static.a' -not -name 'libcudart_static.a' -delete && \ + rm /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libcudnn_static_v7.a -RUN apt-get update && \ - apt-get install nvinfer-runtime-trt-repo-ubuntu1604-5.0.2-ga-cuda10.0 \ +RUN [ ${ARCH} = ppc64le ] || (apt-get update && \ + apt-get install nvinfer-runtime-trt-repo-ubuntu1604-5.0.2-ga-cuda${CUDA} \ && apt-get update \ - && apt-get install -y --no-install-recommends libnvinfer-dev=5.0.2-1+cuda10.0 \ - && rm -rf /var/lib/apt/lists/* + && apt-get install -y --no-install-recommends libnvinfer5=5.0.2-1+cuda${CUDA} \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*) # Configure the build for our CUDA configuration. ENV CI_BUILD_PYTHON python @@ -40,9 +46,10 @@ ENV LD_LIBRARY_PATH /usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH ENV TF_NEED_CUDA 1 ENV TF_NEED_TENSORRT 1 ENV TF_CUDA_COMPUTE_CAPABILITIES=3.5,5.2,6.0,6.1,7.0 -ENV TF_CUDA_VERSION=10.0 -ENV TF_CUDNN_VERSION=7 - -# Check out TensorFlow source code if --build_arg CHECKOUT_TENSORFLOW=1 +ENV TF_CUDA_VERSION=${CUDA} +ENV TF_CUDNN_VERSION=${CUDNN%%.*} +# CACHE_STOP is used to rerun future commands, otherwise cloning tensorflow will be cached and will not pull the most recent version +ARG CACHE_STOP=1 +# Check out TensorFlow source code if --build_arg CHECKOUT_TF_SRC=1 ARG CHECKOUT_TF_SRC=0 -RUN test "${CHECKOUT_TF_SRC}" -eq 1 && git clone https://github.com/tensorflow/tensorflow.git /tensorflow_src +RUN test "${CHECKOUT_TF_SRC}" -eq 1 && git clone https://github.com/tensorflow/tensorflow.git /tensorflow_src || true diff --git a/tensorflow/tools/dockerfiles/partials/ubuntu/nvidia.partial.Dockerfile b/tensorflow/tools/dockerfiles/partials/ubuntu/nvidia.partial.Dockerfile index a6393a3280c..1d40ed5f981 100644 --- a/tensorflow/tools/dockerfiles/partials/ubuntu/nvidia.partial.Dockerfile +++ b/tensorflow/tools/dockerfiles/partials/ubuntu/nvidia.partial.Dockerfile @@ -1,29 +1,34 @@ -FROM nvidia/cuda:10.0-base-ubuntu${UBUNTU_VERSION} as base +ARG ARCH= +ARG CUDA=10.0 +FROM nvidia/cuda${ARCH:+-$ARCH}:${CUDA}-base-ubuntu${UBUNTU_VERSION} as base +ARG CUDNN=7.4.1.5-1 +# Needed for string substitution +SHELL ["/bin/bash", "-c"] # Pick up some TF dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ - cuda-command-line-tools-10-0 \ - cuda-cublas-10-0 \ - cuda-cufft-10-0 \ - cuda-curand-10-0 \ - cuda-cusolver-10-0 \ - cuda-cusparse-10-0 \ - libcudnn7=7.4.1.5-1+cuda10.0 \ + cuda-command-line-tools-${CUDA/./-} \ + cuda-cublas-${CUDA/./-} \ + cuda-cufft-${CUDA/./-} \ + cuda-curand-${CUDA/./-} \ + cuda-cusolver-${CUDA/./-} \ + cuda-cusparse-${CUDA/./-} \ + curl \ + libcudnn7=${CUDNN}+cuda${CUDA} \ libfreetype6-dev \ libhdf5-serial-dev \ - libpng12-dev \ libzmq3-dev \ pkg-config \ software-properties-common \ unzip -RUN apt-get update && \ - apt-get install nvinfer-runtime-trt-repo-ubuntu1604-5.0.2-ga-cuda10.0 \ +RUN [ ${ARCH} = ppc64le ] || (apt-get update && \ + apt-get install nvinfer-runtime-trt-repo-ubuntu1604-5.0.2-ga-cuda${CUDA} \ && apt-get update \ - && apt-get install -y --no-install-recommends libnvinfer5=5.0.2-1+cuda10.0 \ + && apt-get install -y --no-install-recommends libnvinfer5=5.0.2-1+cuda${CUDA} \ && apt-get clean \ - && rm -rf /var/lib/apt/lists/* + && rm -rf /var/lib/apt/lists/*) # For CUDA profiling, TensorFlow requires CUPTI. ENV LD_LIBRARY_PATH /usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH diff --git a/tensorflow/tools/dockerfiles/spec.yml b/tensorflow/tools/dockerfiles/spec.yml index 19d96e7a3df..d19b1d15fc8 100644 --- a/tensorflow/tools/dockerfiles/spec.yml +++ b/tensorflow/tools/dockerfiles/spec.yml @@ -56,6 +56,13 @@ releases: - "{ubuntu}{jupyter}" - "{ubuntu-devel}{jupyter}" + ppc64le-dockerfiles: + is_dockerfiles: true + upload_images: false + tag_specs: + - "{ubuntu-ppc64le}{jupyter}" + - "{ubuntu-devel-ppc64le}{jupyter}" + slice_sets: py: @@ -122,6 +129,70 @@ slice_sets: args: - CHECKOUT_TF_SRC=1 + ubuntu-ppc64le: + - add_to_name: "-ppc64le" + dockerfile_exclusive_name: "cpu-ppc64le" + dockerfile_subdirectory: "ppc64le" + args: + - UBUNTU_VERSION=18.04 + partials: + - ubuntu/version + - ubuntu/cpu + - ubuntu/python + - tensorflow-ppc64le + - shell + - add_to_name: "-gpu-ppc64le" + dockerfile_exclusive_name: "gpu-ppc64le" + dockerfile_subdirectory: "ppc64le" + args: + - UBUNTU_VERSION=18.04 + - ARCH=ppc64le + - CUDA=10.0 + - TF_PACKAGE=tensorflow-gpu + partials: + - ubuntu/version + - ubuntu/nvidia + - ubuntu/python + - tensorflow-ppc64le + - shell + tests: + - import-gpu.sh + test_runtime: nvidia + + ubuntu-devel-ppc64le: + - add_to_name: "devel-ppc64le" + dockerfile_exclusive_name: "devel-cpu-ppc64le" + dockerfile_subdirectory: "ppc64le" + partials: + - ubuntu/version + - ubuntu/devel-cpu + - ubuntu/python + - ubuntu/bazelbuild + - shell + tests: + - build-cpu.sh + args: + - UBUNTU_VERSION=18.04 + - CHECKOUT_TF_SRC=1 + - add_to_name: "devel-gpu-ppc64le" + dockerfile_exclusive_name: "devel-gpu-ppc64le" + dockerfile_subdirectory: "ppc64le" + args: + - UBUNTU_VERSION=18.04 + - ARCH=ppc64le + - CUDA=10.0 + - LIB_DIR_PREFIX=powerpc64le + - CHECKOUT_TF_SRC=1 + partials: + - ubuntu/version + - ubuntu/devel-nvidia + - ubuntu/python + - ubuntu/bazelbuild + - shell + tests: + - build-gpu.sh + test_runtime: nvidia + nightly: - add_to_name: "nightly" partials: diff --git a/tensorflow/tools/dockerfiles/tools.Dockerfile b/tensorflow/tools/dockerfiles/tools.Dockerfile index e8929295a5e..a96b2578cba 100644 --- a/tensorflow/tools/dockerfiles/tools.Dockerfile +++ b/tensorflow/tools/dockerfiles/tools.Dockerfile @@ -17,7 +17,7 @@ # # You can use this image to quickly develop changes to the Dockerfile assembler # or set of TF Docker partials. See README.md for usage instructions. -FROM debian:stretch +FROM ubuntu:16.04 LABEL maintainer="Austin Anderson " RUN apt-get update && apt-get install -y python3 python3-pip bash curl