1ARG CENTOS_VERSION 2 3FROM centos:${CENTOS_VERSION} 4 5ARG CENTOS_VERSION 6 7# Set AMD gpu targets to build for 8ARG PYTORCH_ROCM_ARCH 9ENV PYTORCH_ROCM_ARCH ${PYTORCH_ROCM_ARCH} 10 11# Install required packages to build Caffe2 12 13# Install common dependencies (so that this step can be cached separately) 14COPY ./common/install_base.sh install_base.sh 15RUN bash ./install_base.sh && rm install_base.sh 16 17# Update CentOS git version 18RUN yum -y remove git 19RUN yum -y remove git-* 20RUN yum -y install https://packages.endpoint.com/rhel/7/os/x86_64/endpoint-repo-1.9-1.x86_64.rpm || \ 21 (yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo-1.9-1.x86_64.rpm && \ 22 sed -i "s/packages.endpoint/packages.endpointdev/" /etc/yum.repos.d/endpoint.repo) 23RUN yum install -y git 24 25# Install devtoolset 26ARG DEVTOOLSET_VERSION 27COPY ./common/install_devtoolset.sh install_devtoolset.sh 28RUN bash ./install_devtoolset.sh && rm install_devtoolset.sh 29ENV BASH_ENV "/etc/profile" 30 31# (optional) Install non-default glibc version 32ARG GLIBC_VERSION 33COPY ./common/install_glibc.sh install_glibc.sh 34RUN if [ -n "${GLIBC_VERSION}" ]; then bash ./install_glibc.sh; fi 35RUN rm install_glibc.sh 36 37# Install user 38COPY ./common/install_user.sh install_user.sh 39RUN bash ./install_user.sh && rm install_user.sh 40 41# Install conda and other packages (e.g., numpy, pytest) 42ARG ANACONDA_PYTHON_VERSION 43ARG CONDA_CMAKE 44ENV ANACONDA_PYTHON_VERSION=$ANACONDA_PYTHON_VERSION 45ENV PATH /opt/conda/envs/py_$ANACONDA_PYTHON_VERSION/bin:/opt/conda/bin:$PATH 46COPY requirements-ci.txt /opt/conda/requirements-ci.txt 47COPY ./common/install_conda.sh install_conda.sh 48COPY ./common/common_utils.sh common_utils.sh 49RUN bash ./install_conda.sh && rm install_conda.sh common_utils.sh /opt/conda/requirements-ci.txt 50 51# (optional) Install protobuf for ONNX 52ARG PROTOBUF 53COPY ./common/install_protobuf.sh install_protobuf.sh 54RUN if [ -n "${PROTOBUF}" ]; then bash ./install_protobuf.sh; fi 55RUN rm install_protobuf.sh 56ENV INSTALLED_PROTOBUF ${PROTOBUF} 57 58# (optional) Install database packages like LMDB and LevelDB 59ARG DB 60COPY ./common/install_db.sh install_db.sh 61RUN if [ -n "${DB}" ]; then bash ./install_db.sh; fi 62RUN rm install_db.sh 63ENV INSTALLED_DB ${DB} 64 65# (optional) Install vision packages like OpenCV 66ARG VISION 67COPY ./common/install_vision.sh ./common/cache_vision_models.sh ./common/common_utils.sh ./ 68RUN if [ -n "${VISION}" ]; then bash ./install_vision.sh; fi 69RUN rm install_vision.sh cache_vision_models.sh common_utils.sh 70ENV INSTALLED_VISION ${VISION} 71 72# Install rocm 73ARG ROCM_VERSION 74COPY ./common/install_rocm.sh install_rocm.sh 75RUN bash ./install_rocm.sh 76RUN rm install_rocm.sh 77COPY ./common/install_rocm_magma.sh install_rocm_magma.sh 78RUN bash ./install_rocm_magma.sh 79RUN rm install_rocm_magma.sh 80COPY ./common/install_amdsmi.sh install_amdsmi.sh 81RUN bash ./install_amdsmi.sh 82RUN rm install_amdsmi.sh 83ENV PATH /opt/rocm/bin:$PATH 84ENV PATH /opt/rocm/hcc/bin:$PATH 85ENV PATH /opt/rocm/hip/bin:$PATH 86ENV PATH /opt/rocm/opencl/bin:$PATH 87ENV PATH /opt/rocm/llvm/bin:$PATH 88ENV MAGMA_HOME /opt/rocm/magma 89ENV LANG en_US.utf8 90ENV LC_ALL en_US.utf8 91 92# (optional) Install non-default CMake version 93ARG CMAKE_VERSION 94COPY ./common/install_cmake.sh install_cmake.sh 95RUN if [ -n "${CMAKE_VERSION}" ]; then bash ./install_cmake.sh; fi 96RUN rm install_cmake.sh 97 98# (optional) Install non-default Ninja version 99ARG NINJA_VERSION 100COPY ./common/install_ninja.sh install_ninja.sh 101RUN if [ -n "${NINJA_VERSION}" ]; then bash ./install_ninja.sh; fi 102RUN rm install_ninja.sh 103 104ARG TRITON 105# Install triton, this needs to be done before sccache because the latter will 106# try to reach out to S3, which docker build runners don't have access 107ENV CMAKE_C_COMPILER cc 108ENV CMAKE_CXX_COMPILER c++ 109COPY ./common/install_triton.sh install_triton.sh 110COPY ./common/common_utils.sh common_utils.sh 111COPY ci_commit_pins/triton.txt triton.txt 112COPY triton_version.txt triton_version.txt 113RUN if [ -n "${TRITON}" ]; then bash ./install_triton.sh; fi 114RUN rm install_triton.sh common_utils.sh triton.txt triton_version.txt 115 116# Install AOTriton (Early fail) 117COPY ./aotriton_version.txt aotriton_version.txt 118COPY ./common/common_utils.sh common_utils.sh 119COPY ./common/install_aotriton.sh install_aotriton.sh 120RUN ["/bin/bash", "-c", "./install_aotriton.sh /opt/rocm && rm -rf install_aotriton.sh aotriton_version.txt common_utils.sh"] 121ENV AOTRITON_INSTALLED_PREFIX /opt/rocm/aotriton 122 123# Install ccache/sccache (do this last, so we get priority in PATH) 124COPY ./common/install_cache.sh install_cache.sh 125ENV PATH /opt/cache/bin:$PATH 126RUN bash ./install_cache.sh && rm install_cache.sh 127 128# Include BUILD_ENVIRONMENT environment variable in image 129ARG BUILD_ENVIRONMENT 130ENV BUILD_ENVIRONMENT ${BUILD_ENVIRONMENT} 131 132USER jenkins 133CMD ["bash"] 134