ARG CUDA_VERSION=10.2 ARG BASE_TARGET=cuda${CUDA_VERSION} FROM centos:7 as base ENV LC_ALL en_US.UTF-8 ENV LANG en_US.UTF-8 ENV LANGUAGE en_US.UTF-8 ARG DEVTOOLSET_VERSION=9 RUN sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo RUN sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/*.repo RUN sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/*.repo RUN yum update -y RUN yum install -y wget curl perl util-linux xz bzip2 git patch which unzip # Just add everything as a safe.directory for git since these will be used in multiple places with git RUN git config --global --add safe.directory '*' RUN yum install -y yum-utils centos-release-scl RUN yum-config-manager --enable rhel-server-rhscl-7-rpms RUN sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo RUN sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/*.repo RUN sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/*.repo RUN yum install -y devtoolset-${DEVTOOLSET_VERSION}-gcc devtoolset-${DEVTOOLSET_VERSION}-gcc-c++ devtoolset-${DEVTOOLSET_VERSION}-gcc-gfortran devtoolset-${DEVTOOLSET_VERSION}-binutils # EPEL for cmake RUN yum --enablerepo=extras install -y epel-release # cmake RUN yum install -y cmake3 && \ ln -s /usr/bin/cmake3 /usr/bin/cmake ENV PATH=/opt/rh/devtoolset-${DEVTOOLSET_VERSION}/root/usr/bin:$PATH ENV LD_LIBRARY_PATH=/opt/rh/devtoolset-${DEVTOOLSET_VERSION}/root/usr/lib64:/opt/rh/devtoolset-${DEVTOOLSET_VERSION}/root/usr/lib:$LD_LIBRARY_PATH RUN yum install -y autoconf aclocal automake make sudo RUN rm -rf /usr/local/cuda-* FROM base as patchelf # Install patchelf ADD ./common/install_patchelf.sh install_patchelf.sh RUN bash ./install_patchelf.sh && rm install_patchelf.sh && cp $(which patchelf) /patchelf FROM base as openssl # Install openssl ADD ./common/install_openssl.sh install_openssl.sh RUN bash ./install_openssl.sh && rm install_openssl.sh FROM base as conda # Install Anaconda ADD ./common/install_conda_docker.sh install_conda.sh RUN bash ./install_conda.sh && rm install_conda.sh # Install CUDA FROM base as cuda ARG CUDA_VERSION=10.2 RUN rm -rf /usr/local/cuda-* ADD ./common/install_cuda.sh install_cuda.sh ENV CUDA_HOME=/usr/local/cuda-${CUDA_VERSION} # Preserve CUDA_VERSION for the builds ENV CUDA_VERSION=${CUDA_VERSION} # Make things in our path by default ENV PATH=/usr/local/cuda-${CUDA_VERSION}/bin:$PATH FROM cuda as cuda11.8 RUN bash ./install_cuda.sh 11.8 ENV DESIRED_CUDA=11.8 FROM cuda as cuda12.1 RUN bash ./install_cuda.sh 12.1 ENV DESIRED_CUDA=12.1 FROM cuda as cuda12.4 RUN bash ./install_cuda.sh 12.4 ENV DESIRED_CUDA=12.4 # Install MNIST test data FROM base as mnist ADD ./common/install_mnist.sh install_mnist.sh RUN bash ./install_mnist.sh FROM base as all_cuda COPY --from=cuda11.8 /usr/local/cuda-11.8 /usr/local/cuda-11.8 COPY --from=cuda12.1 /usr/local/cuda-12.1 /usr/local/cuda-12.1 COPY --from=cuda12.4 /usr/local/cuda-12.4 /usr/local/cuda-12.4 # Final step FROM ${BASE_TARGET} as final COPY --from=openssl /opt/openssl /opt/openssl COPY --from=patchelf /patchelf /usr/local/bin/patchelf COPY --from=conda /opt/conda /opt/conda # Add jni.h for java host build. COPY ./common/install_jni.sh install_jni.sh COPY ./java/jni.h jni.h RUN bash ./install_jni.sh && rm install_jni.sh ENV PATH /opt/conda/bin:$PATH COPY --from=mnist /usr/local/mnist /usr/local/mnist RUN rm -rf /usr/local/cuda RUN chmod o+rw /usr/local RUN touch /.condarc && \ chmod o+rw /.condarc && \ chmod -R o+rw /opt/conda