diff --git a/.github/workflows/rocprofiler-systems-containers.yml b/.github/workflows/rocprofiler-systems-containers.yml index 850a1d71fe..04b6abdf50 100644 --- a/.github/workflows/rocprofiler-systems-containers.yml +++ b/.github/workflows/rocprofiler-systems-containers.yml @@ -69,7 +69,7 @@ jobs: with: username: ${{ secrets.ROCPROF_SYS_DOCKER_LOGIN }} password: ${{ secrets.ROCPROF_SYS_DOCKER_TOKEN }} - + - name: Build CI Container (PR - No Push) if: github.event_name == 'pull_request' timeout-minutes: 45 @@ -79,7 +79,7 @@ jobs: timeout_minutes: 45 max_attempts: 3 command: | - pushd projects/rocprofiler-systems/docker + cd projects/rocprofiler-systems/docker ./build-docker-ci.sh \ --distro ${{ matrix.distro }} \ --versions ${{ matrix.version }} \ @@ -87,7 +87,6 @@ jobs: --jobs 2 \ --elfutils-version 0.188 \ --boost-version 1.79.0 - popd - name: Build Base Container (Push) if: github.event_name != 'pull_request' @@ -98,7 +97,7 @@ jobs: timeout_minutes: 45 max_attempts: 3 command: | - pushd projects/rocprofiler-systems/docker + cd projects/rocprofiler-systems/docker ./build-docker-ci.sh \ --distro ${{ matrix.distro }} \ --versions ${{ matrix.version }} \ @@ -107,7 +106,6 @@ jobs: --elfutils-version 0.188 \ --boost-version 1.79.0 \ --push - popd prepare_matrix_release: if: github.repository == 'ROCm/rocm-systems' @@ -126,7 +124,7 @@ jobs: run: | MATRIX_CONTENT=$(cat containers.yml | yq '.matrix' -I=0 -o=json) echo "matrix_data=$MATRIX_CONTENT" >> $GITHUB_OUTPUT - + rocprofiler-systems-release: needs: prepare_matrix_release runs-on: ubuntu-latest @@ -135,7 +133,7 @@ jobs: fail-fast: false matrix: include: ${{ fromJSON(needs.prepare_matrix_release.outputs.matrix_data) }} - + steps: - uses: actions/checkout@v4 with: @@ -162,14 +160,13 @@ jobs: timeout_minutes: 45 max_attempts: 3 command: | - pushd projects/rocprofiler-systems/docker + cd projects/rocprofiler-systems/docker ./build-docker.sh \ --distro ${{ matrix.os-distro }} \ --versions ${{ matrix.os-version }} \ --rocm-versions ${{ matrix.rocm-version }} \ --user ${{ secrets.ROCPROF_SYS_DOCKER_LOGIN }} - popd - + - name: Build Base Container (Push) if: github.event_name != 'pull_request' timeout-minutes: 45 @@ -179,11 +176,10 @@ jobs: timeout_minutes: 45 max_attempts: 3 command: | - pushd projects/rocprofiler-systems/docker + cd projects/rocprofiler-systems/docker ./build-docker.sh \ --distro ${{ matrix.os-distro }} \ --versions ${{ matrix.os-version }} \ --rocm-versions ${{ matrix.rocm-version }} \ --user ${{ secrets.ROCPROF_SYS_DOCKER_LOGIN }} \ --push - popd diff --git a/projects/rocprofiler-systems/docker/Dockerfile.opensuse b/projects/rocprofiler-systems/docker/Dockerfile.opensuse index 8b5485d41d..f25e02c4e9 100644 --- a/projects/rocprofiler-systems/docker/Dockerfile.opensuse +++ b/projects/rocprofiler-systems/docker/Dockerfile.opensuse @@ -2,16 +2,16 @@ ARG DISTRO=opensuse/leap ARG VERSION=15.5 FROM ${DISTRO}:${VERSION} -ENV HOME /root -ENV SHELL /bin/bash -ENV BASH_ENV /etc/bash.bashrc -ENV DEBIAN_FRONTEND noninteractive +ENV HOME=/root +ENV SHELL=/bin/bash +ENV BASH_ENV=/etc/bash.bashrc +ENV DEBIAN_FRONTEND=noninteractive WORKDIR /tmp SHELL [ "/bin/bash", "-c" ] -ENV PATH /usr/local/bin:${PATH} -ENV LIBRARY_PATH ${LIBRARY_PATH}:/opt/amdgpu/lib64 +ENV PATH=/usr/local/bin:${PATH} +ENV LIBRARY_PATH=${LIBRARY_PATH}:/opt/amdgpu/lib64 RUN set +e; \ zypper --non-interactive -i --gpg-auto-import-keys refresh; \ @@ -23,28 +23,25 @@ RUN set +e; \ RUN zypper --non-interactive update -y && \ zypper --non-interactive dist-upgrade -y && \ zypper --non-interactive install -y -t pattern devel_basis && \ - zypper --non-interactive install -y binutils-gold chrpath cmake curl dpkg-devel \ - gcc-c++ gcc-fortran git gmock gtest iproute2 libdrm-devel libnuma-devel ninja \ - nlohmann_json-devel openmpi3-devel python3-pip rpm-build \ + zypper --non-interactive install -y chrpath cmake curl dpkg-devel \ + gcc-c++ gcc-fortran git gmock gtest iproute2 libdrm-devel libnuma-devel \ + ninja nlohmann_json-devel openmpi3-devel python3-pip rpm-build \ sqlite3-devel wget && \ python3 -m pip install 'cmake==3.21' ARG ROCM_VERSION=0.0 +ARG ROCM_MAJOR=0 +ARG ROCM_MINOR=0 +ARG ROCM_PATCH=0 +ARG ROCM_VERSION_URL=0.0 +ARG ROCM_VERSN=0 -RUN ROCM_MAJOR=$(echo "${ROCM_VERSION}" | sed 's/\./ /g' | awk '{print $1}') && \ - ROCM_MINOR=$(echo "${ROCM_VERSION}" | sed 's/\./ /g' | awk '{print $2}') && \ - if [ "${ROCM_MAJOR}" != "0" ] || [ "${ROCM_MINOR}" != "0" ]; then \ +RUN if [ "${ROCM_MAJOR}" != "0" ] || [ "${ROCM_MINOR}" != "0" ]; then \ OS_VERSION=$(grep '^VERSION_ID=' /etc/os-release | cut -d'=' -f2 | tr -d '"') && \ OS_VERSION_MAJOR=$(echo "$OS_VERSION" | cut -d'.' -f1) && \ OS_VERSION_MINOR=$(echo "$OS_VERSION" | cut -d'.' -f2) && \ - ROCM_PATCH=$(echo "${ROCM_VERSION}" | sed 's/\./ /g' | awk '{print $3}') && \ - if [ -z "${ROCM_PATCH}" ] || [ "${ROCM_PATCH}" = "0" ]; then \ - ROCM_PATCH=0 && \ - ROCM_VERSION=$(echo "${ROCM_VERSION}" | sed 's/\.0$//') \ - ; fi && \ - ROCM_VERSN=$(( ("${ROCM_MAJOR}"*10000)+("${ROCM_MINOR}"*100) + ("${ROCM_PATCH}"))) && \ zypper --non-interactive addrepo https://download.opensuse.org/repositories/devel:languages:perl/15.6/devel:languages:perl.repo && \ - zypper --non-interactive --no-gpg-checks install -y https://repo.radeon.com/amdgpu-install/${ROCM_VERSION}/sle/${OS_VERSION}/amdgpu-install-${ROCM_MAJOR}.${ROCM_MINOR}.${ROCM_VERSN}-1.noarch.rpm && \ + zypper --non-interactive --no-gpg-checks install -y https://repo.radeon.com/amdgpu-install/${ROCM_VERSION_URL}/sle/${OS_VERSION}/amdgpu-install-${ROCM_MAJOR}.${ROCM_MINOR}.${ROCM_VERSN}-1.noarch.rpm && \ zypper --non-interactive --gpg-auto-import-keys refresh && \ zypper --non-interactive install -y rocm-dev rccl-devel libpciaccess0 && \ zypper --non-interactive clean --all; \ diff --git a/projects/rocprofiler-systems/docker/Dockerfile.opensuse.ci b/projects/rocprofiler-systems/docker/Dockerfile.opensuse.ci index 8eb49b15c1..f02d5a0742 100644 --- a/projects/rocprofiler-systems/docker/Dockerfile.opensuse.ci +++ b/projects/rocprofiler-systems/docker/Dockerfile.opensuse.ci @@ -27,10 +27,10 @@ RUN set +e; \ RUN zypper --non-interactive update -y && \ zypper --non-interactive dist-upgrade -y && \ zypper --non-interactive install -y -t pattern devel_basis && \ - zypper --non-interactive install -y binutils-gold chrpath cmake curl dpkg-devel \ - gcc-c++ gcc-fortran git gmock gtest iproute2 libnuma-devel ninja nlohmann_json-devel \ - openmpi3-devel papi-devel python3-devel python3-pip \ - rpm-build sqlite3-devel vim wget && \ + zypper --non-interactive install -y chrpath cmake curl dpkg-devel \ + gcc-c++ gcc-fortran git gmock gtest iproute2 ninja nlohmann_json-devel \ + openmpi3-devel papi-devel python3-devel python3-pip rpm-build \ + sqlite3-devel vim wget && \ zypper --non-interactive clean --all && \ python3 -m pip install 'cmake==3.21' perfetto diff --git a/projects/rocprofiler-systems/docker/Dockerfile.rhel b/projects/rocprofiler-systems/docker/Dockerfile.rhel index 9254ff2a46..95fcbdad8d 100644 --- a/projects/rocprofiler-systems/docker/Dockerfile.rhel +++ b/projects/rocprofiler-systems/docker/Dockerfile.rhel @@ -23,22 +23,19 @@ RUN yum groupinstall -y "Development Tools" && \ python3 -m pip install 'perfetto' ARG ROCM_VERSION=0.0 +ARG ROCM_MAJOR=0 +ARG ROCM_MINOR=0 +ARG ROCM_PATCH=0 +ARG ROCM_VERSION_URL=0.0 +ARG ROCM_VERSN=0 -RUN ROCM_MAJOR=$(echo "${ROCM_VERSION}" | sed 's/\./ /g' | awk '{print $1}') && \ - ROCM_MINOR=$(echo "${ROCM_VERSION}" | sed 's/\./ /g' | awk '{print $2}') && \ - if [ "${ROCM_MAJOR}" != "0" ] || [ "${ROCM_MINOR}" != "0" ]; then \ +RUN if [ "${ROCM_MAJOR}" != "0" ] || [ "${ROCM_MINOR}" != "0" ]; then \ OS_VERSION=$(grep '^VERSION_ID=' /etc/os-release | cut -d'=' -f2 | tr -d '"') && \ OS_VERSION_MAJOR=$(echo "$OS_VERSION" | cut -d'.' -f1) && \ RPM_TAG=".el${OS_VERSION_MAJOR}" && \ - ROCM_PATCH=$(echo "${ROCM_VERSION}" | sed 's/\./ /g' | awk '{print $3}') && \ - if [ -z "${ROCM_PATCH}" ] || [ "${ROCM_PATCH}" = "0" ]; then \ - ROCM_PATCH=0 && \ - ROCM_VERSION=$(echo "${ROCM_VERSION}" | sed 's/\.0$//') \ - ; fi && \ - ROCM_VERSN=$(( ("${ROCM_MAJOR}"*10000)+("${ROCM_MINOR}"*100) + ("${ROCM_PATCH}"))) && \ if [ "${OS_VERSION_MAJOR}" -eq 8 ]; then PERL_REPO=powertools; else PERL_REPO=crb; fi && \ dnf -y --enablerepo=${PERL_REPO} install perl-File-BaseDir && \ - yum install -y https://repo.radeon.com/amdgpu-install/${ROCM_VERSION}/rhel/${OS_VERSION}/amdgpu-install-${ROCM_MAJOR}.${ROCM_MINOR}.${ROCM_VERSN}-1${RPM_TAG}.noarch.rpm && \ + yum install -y https://repo.radeon.com/amdgpu-install/${ROCM_VERSION_URL}/rhel/${OS_VERSION}/amdgpu-install-${ROCM_MAJOR}.${ROCM_MINOR}.${ROCM_VERSN}-1${RPM_TAG}.noarch.rpm && \ yum install -y rocm-dev && \ yum clean all; \ fi diff --git a/projects/rocprofiler-systems/docker/Dockerfile.ubuntu b/projects/rocprofiler-systems/docker/Dockerfile.ubuntu index 4cb53324db..4243a33b3d 100644 --- a/projects/rocprofiler-systems/docker/Dockerfile.ubuntu +++ b/projects/rocprofiler-systems/docker/Dockerfile.ubuntu @@ -16,6 +16,11 @@ SHELL [ "/bin/bash", "-c" ] ARG EXTRA_PACKAGES="" ARG ROCM_VERSION="0.0" +ARG ROCM_MAJOR=0 +ARG ROCM_MINOR=0 +ARG ROCM_PATCH=0 +ARG ROCM_VERSION_URL=0.0 +ARG ROCM_VERSN=0 ENV PATH=${HOME}/.local/bin:${PATH} RUN apt-get update && \ @@ -33,19 +38,11 @@ RUN apt-get update && \ python3 -m pip install --break-system-packages 'cmake==3.21' perfetto; \ fi -RUN ROCM_MAJOR=$(echo "${ROCM_VERSION}" | sed 's/\./ /g' | awk '{print $1}') && \ - ROCM_MINOR=$(echo "${ROCM_VERSION}" | sed 's/\./ /g' | awk '{print $2}') && \ - if [ "${ROCM_MAJOR}" != "0" ] || [ "${ROCM_MINOR}" != "0" ]; then \ +RUN if [ "${ROCM_MAJOR}" != "0" ] || [ "${ROCM_MINOR}" != "0" ]; then \ OS_VERSION=$(grep '^VERSION_ID=' /etc/os-release | cut -d'=' -f2 | tr -d '"') && \ OS_CODENAME=$(grep '^VERSION_CODENAME=' /etc/os-release | cut -d'=' -f2) && \ - ROCM_PATCH=$(echo "${ROCM_VERSION}" | sed 's/\./ /g' | awk '{print $3}') && \ - if [ -z "${ROCM_PATCH}" ] || [ "${ROCM_PATCH}" = "0" ]; then \ - ROCM_PATCH=0 && \ - ROCM_VERSION=$(echo "${ROCM_VERSION}" | sed 's/\.0$//') \ - ; fi && \ - ROCM_VERSN=$(( ("${ROCM_MAJOR}"*10000)+("${ROCM_MINOR}"*100) + ("${ROCM_PATCH}"))) && \ AMDGPU_DEB="amdgpu-install_${ROCM_MAJOR}.${ROCM_MINOR}.${ROCM_VERSN}-1_all.deb" && \ - wget https://repo.radeon.com/amdgpu-install/${ROCM_VERSION}/ubuntu/${OS_CODENAME}/${AMDGPU_DEB} && \ + wget https://repo.radeon.com/amdgpu-install/${ROCM_VERSION_URL}/ubuntu/${OS_CODENAME}/${AMDGPU_DEB} && \ apt-get install -y ./${AMDGPU_DEB} && \ apt-get update && \ apt-get install -y rocm-dev rccl-dev libpciaccess0 ${EXTRA_PACKAGES} && \ diff --git a/projects/rocprofiler-systems/docker/build-docker.sh b/projects/rocprofiler-systems/docker/build-docker.sh index 0950f641b4..505d2fd4f4 100755 --- a/projects/rocprofiler-systems/docker/build-docker.sh +++ b/projects/rocprofiler-systems/docker/build-docker.sh @@ -320,10 +320,24 @@ do VERSION_PATCH=$(echo ${VERSION} | sed 's/\./ /g' | awk '{print $3}') for ROCM_VERSION in ${ROCM_VERSIONS} do + # Parse ROCm version components ROCM_MAJOR=$(echo ${ROCM_VERSION} | sed 's/\./ /g' | awk '{print $1}') ROCM_MINOR=$(echo ${ROCM_VERSION} | sed 's/\./ /g' | awk '{print $2}') ROCM_PATCH=$(echo ${ROCM_VERSION} | sed 's/\./ /g' | awk '{print $3}') - if [ "${ROCM_PATCH}" = "0" ] || [ -z "${ROCM_PATCH}" ]; then + + # Compute ROCM_VERSION_URL (for repo URLs) and normalize ROCM_PATCH + ROCM_VERSION_URL="${ROCM_VERSION}" + if [ -z "${ROCM_PATCH}" ]; then + ROCM_PATCH=0 + elif [ "${ROCM_PATCH}" = "0" ]; then + ROCM_VERSION_URL="${ROCM_MAJOR}.${ROCM_MINOR}" + fi + + # Compute ROCM_VERSN (numeric version for package names) + ROCM_VERSN=$(( ("${ROCM_MAJOR}"*10000)+("${ROCM_MINOR}"*100) + ("${ROCM_PATCH}"))) + + # Determine container tag + if [ "${ROCM_PATCH}" = "0" ]; then CONTAINER=${USER}/rocprofiler-systems:release-base-${DISTRO}-${VERSION}-rocm-${ROCM_MAJOR}.${ROCM_MINOR} else CONTAINER=${USER}/rocprofiler-systems:release-base-${DISTRO}-${VERSION}-rocm-${ROCM_VERSION} @@ -339,11 +353,11 @@ do *) ;; esac - verbose-build docker build . ${PULL} --progress plain -f ${DOCKER_FILE} --tag ${CONTAINER} --build-arg DISTRO=${DISTRO} --build-arg VERSION=${VERSION} --build-arg ROCM_VERSION=${ROCM_VERSION} --build-arg PYTHON_VERSIONS=\"${PYTHON_VERSIONS}\" + verbose-build docker build . ${PULL} --progress plain -f ${DOCKER_FILE} --tag ${CONTAINER} --build-arg DISTRO=${DISTRO} --build-arg VERSION=${VERSION} --build-arg ROCM_VERSION=${ROCM_VERSION} --build-arg ROCM_MAJOR=${ROCM_MAJOR} --build-arg ROCM_MINOR=${ROCM_MINOR} --build-arg ROCM_PATCH=${ROCM_PATCH} --build-arg ROCM_VERSION_URL=${ROCM_VERSION_URL} --build-arg ROCM_VERSN=${ROCM_VERSN} --build-arg PYTHON_VERSIONS=\"${PYTHON_VERSIONS}\" elif [ "${DISTRO}" = "rhel" ]; then # use Rocky Linux as a base image for RHEL builds DISTRO_BASE_IMAGE=rockylinux/rockylinux - verbose-build docker build . ${PULL} --progress plain -f ${DOCKER_FILE} --tag ${CONTAINER} --build-arg DISTRO=${DISTRO_BASE_IMAGE} --build-arg VERSION=${VERSION} --build-arg ROCM_VERSION=${ROCM_VERSION} --build-arg PYTHON_VERSIONS=\"${PYTHON_VERSIONS}\" + verbose-build docker build . ${PULL} --progress plain -f ${DOCKER_FILE} --tag ${CONTAINER} --build-arg DISTRO=${DISTRO_BASE_IMAGE} --build-arg VERSION=${VERSION} --build-arg ROCM_VERSION=${ROCM_VERSION} --build-arg ROCM_MAJOR=${ROCM_MAJOR} --build-arg ROCM_MINOR=${ROCM_MINOR} --build-arg ROCM_PATCH=${ROCM_PATCH} --build-arg ROCM_VERSION_URL=${ROCM_VERSION_URL} --build-arg ROCM_VERSN=${ROCM_VERSN} --build-arg PYTHON_VERSIONS=\"${PYTHON_VERSIONS}\" elif [ "${DISTRO}" = "opensuse" ]; then DISTRO_IMAGE="opensuse/leap" if [[ "${VERSION_MAJOR}" -le 15 && "${VERSION_MINOR}" -le 5 ]]; then @@ -351,7 +365,7 @@ do else PERL_REPO="${VERSION_MAJOR}.${VERSION_MINOR}" fi - verbose-build docker build . ${PULL} --progress plain -f ${DOCKER_FILE} --tag ${CONTAINER} --build-arg DISTRO=${DISTRO_IMAGE} --build-arg VERSION=${VERSION} --build-arg ROCM_VERSION=${ROCM_VERSION} --build-arg PERL_REPO=${PERL_REPO} --build-arg PYTHON_VERSIONS=\"${PYTHON_VERSIONS}\" + verbose-build docker build . ${PULL} --progress plain -f ${DOCKER_FILE} --tag ${CONTAINER} --build-arg DISTRO=${DISTRO_IMAGE} --build-arg VERSION=${VERSION} --build-arg ROCM_VERSION=${ROCM_VERSION} --build-arg ROCM_MAJOR=${ROCM_MAJOR} --build-arg ROCM_MINOR=${ROCM_MINOR} --build-arg ROCM_PATCH=${ROCM_PATCH} --build-arg ROCM_VERSION_URL=${ROCM_VERSION_URL} --build-arg ROCM_VERSN=${ROCM_VERSN} --build-arg PERL_REPO=${PERL_REPO} --build-arg PYTHON_VERSIONS=\"${PYTHON_VERSIONS}\" fi if [ "${PUSH}" -ne 0 ]; then docker push ${CONTAINER} diff --git a/projects/rocprofiler-systems/docker/containers.yml b/projects/rocprofiler-systems/docker/containers.yml index 289a391e66..83be596157 100644 --- a/projects/rocprofiler-systems/docker/containers.yml +++ b/projects/rocprofiler-systems/docker/containers.yml @@ -44,9 +44,6 @@ matrix: - os-distro: "opensuse" os-version: "15.6" rocm-version: "6.4" - - os-distro: "opensuse" - os-version: "15.6" - rocm-version: "7.0" # RHEL 8.10 - os-distro: "rhel" os-version: "8.10" @@ -83,6 +80,7 @@ matrix: - os-distro: "rhel" os-version: "9.5" rocm-version: "6.4" + # RHEL 9.6 - os-distro: "rhel" - os-version: "9.5" + os-version: "9.6" rocm-version: "7.0" diff --git a/projects/rocprofiler-systems/scripts/build-release.sh b/projects/rocprofiler-systems/scripts/build-release.sh index e4b766f0a3..3fedd0434f 100755 --- a/projects/rocprofiler-systems/scripts/build-release.sh +++ b/projects/rocprofiler-systems/scripts/build-release.sh @@ -35,7 +35,7 @@ : ${LIBGCC:="ON"} : ${LIBSTDCXX:="ON"} : ${MAX_THREADS:=2048} -: ${PERFETTO_TOOLS:="ON"} +: ${PERFETTO_TOOLS:="OFF"} : ${HIDDEN_VIZ:="ON"} : ${PYTHON_VERSIONS:="6 7 8 9 10 11 12 13"} : ${GENERATORS:="STGZ DEB RPM"}