xref: /aosp_15_r20/external/pytorch/.ci/docker/centos-rocm/Dockerfile (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
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