# > base stage # Uses official ROCm packages FROM ubuntu:22.04 AS base ARG ROCM_VERSION="5.7.3" ARG ROCM_APT_CODE_NAME="jammy" ARG ROCBLAS_BRANCH="release/rocm-rel-5.7" ARG TENSILE_BRANCH=${ROCBLAS_BRANCH} ARG TENSILE_PATCH="" # "gfx803" or "gfx803;gfx900" ARG ROCBLAS_ARCH="gfx803" ARG DEBIAN_FRONTEND="noninteractive" # Install essentials RUN apt-get update && \ apt-get install -y --no-install-recommends \ wget \ git \ ca-certificates \ curl \ gnupg \ sudo \ libelf1 \ libnuma-dev \ build-essential \ vim-nox \ cmake-curses-gui \ kmod \ file \ make \ python3 \ python3-yaml \ python3-venv \ python3-joblib \ python3-pip \ libmsgpack-dev \ && apt-get clean && rm -rf /var/lib/apt/lists/* # Add ROCm apt repo RUN < /dev/null bash -c 'echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/rocm/apt/${ROCM_VERSION} ${ROCM_APT_CODE_NAME} main" > "/etc/apt/sources.list.d/rocm.list"' bash -c 'echo -e "Package: *\nPin: release o=repo.radeon.com\nPin-Priority: 600" | tee /etc/apt/preferences.d/rocm-pin-600' EOF # Install ROCm RUN < /etc/sudoers.d/sudo-nopasswd useradd --create-home -G sudo,video --shell /bin/bash rocm EOF USER rocm WORKDIR /home/rocm ENV PATH="${PATH}:/opt/rocm/bin:/home/rocm/.local/bin" # Default to login shell CMD [ "bash", "-l" ] # > patched stage # Uses patched rocblas and rocblas-dev # (Others are official ROCm packages) FROM base AS patched # Compile and install patched rocBLAS USER root WORKDIR /root RUN < https://github.com/ROCm/Tensile/commit/cef9de1070c8a8cfb0c9bdc81564495f9153de05 RUN bash -c "if [[ -n \"${TENSILE_PATCH}\" ]]; then git apply /root/patches/${TENSILE_PATCH}; fi" WORKDIR /root/rocBLAS # > https://github.com/xuhuisheng/rocm-build/tree/master/gfx803 RUN rm -rf library/src/blas3/Tensile/Logic/asm_full/r9nano/ # > https://github.com/ROCm/Tensile/pull/1897 RUN ./install.sh -a "${ROCBLAS_ARCH}" -d --cmake_install --merge-architectures --no-lazy-library-loading -t /root/Tensile WORKDIR /root/rocBLAS/build/release COPY fix-rocblas.sh . RUN <