From deb7413d05bed245fa0b2c12f62e4a539702c8ee Mon Sep 17 00:00:00 2001 From: idubinov Date: Wed, 24 Jun 2026 06:56:37 -0500 Subject: [PATCH 01/19] Add ROCm Examples --- .../workflows/spirv-ci-linux-amd-staging.yml | 304 +++++++++++++++++- 1 file changed, 298 insertions(+), 6 deletions(-) diff --git a/.github/workflows/spirv-ci-linux-amd-staging.yml b/.github/workflows/spirv-ci-linux-amd-staging.yml index eb4d305c28742..1170c711ef983 100644 --- a/.github/workflows/spirv-ci-linux-amd-staging.yml +++ b/.github/workflows/spirv-ci-linux-amd-staging.yml @@ -54,16 +54,19 @@ jobs: cmake -G Ninja -S llvm-project/llvm -B build \ -DCMAKE_BUILD_TYPE=Release \ -DLLVM_ENABLE_ASSERTIONS=ON \ + -DCMAKE_INSTALL_LIBDIR=lib \ -DLLVM_ENABLE_PROJECTS="clang;lld" \ -DLLVM_TARGETS_TO_BUILD="AMDGPU;X86;SPIRV" \ -DLLVM_INCLUDE_TESTS=ON \ -DLLVM_INSTALL_GTEST=ON \ + -DLLVM_ENABLE_RUNTIMES="compiler-rt" \ + -DCOMPILER_RT_BUILD_BUILTINS=ON \ -DLLVM_LIT_ARGS="-sv --no-progress-bar" - name: Build LLVM + Clang + amd-llvm-spirv + test deps # *-test-depends pull in all tools needed for lit (FileCheck, not, # llc, llvm-*, clang, opt, etc.) and stay current with upstream. - run: ninja -C build llvm-test-depends clang-test-depends amd-llvm-spirv + run: ninja -C build llvm-test-depends clang-test-depends amd-llvm-spirv builtins # ---- Build device-libs (standalone, against built LLVM) -------------- - name: Configure device-libs @@ -71,6 +74,7 @@ jobs: cmake -G Ninja -S llvm-project/amd/device-libs -B build-device-libs \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_PREFIX_PATH=$PWD/build \ + -DCMAKE_INSTALL_LIBDIR=lib \ -DLLVM_DIR=$PWD/build/lib/cmake/llvm - name: Build device-libs @@ -84,6 +88,7 @@ jobs: run: | cmake -G Ninja -S llvm-project/amd/comgr -B build-comgr \ -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_LIBDIR=lib \ -DCMAKE_PREFIX_PATH="$PWD/build;$PWD/build-device-libs" \ -DLLVM_DIR=$PWD/build/lib/cmake/llvm \ -DLLVM_EXTERNAL_SPIRV_LLVM_TRANSLATOR_SOURCE_DIR=$PWD/llvm-project/llvm/projects/SPIRV-LLVM-Translator \ @@ -92,23 +97,205 @@ jobs: - name: Build Comgr run: ninja -C build-comgr amd_comgr + # Builds ROCR-Runtime (libhsa-runtime64.so) and CLR (libamdhip64.so) + - name: Install build deps for runtime build + run: | + dnf install -y --setopt=install_weak_deps=False \ + numactl-devel elfutils-libelf-devel libdrm-devel || true + + - name: Install comgr + device-libs into staging + run: | + cmake --install build-comgr --prefix $PWD/staging + cmake --install build-device-libs --prefix $PWD/staging + echo "=== staging/lib after install (comgr files) ===" + ls -la staging/lib/libamd_comgr* 2>&1 || true + + - name: Checkout rocm-systems (pinned) + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + repository: ROCm/rocm-systems + ref: develop + path: rocm-systems + persist-credentials: false + + - name: Checkout rocm-cmake (pinned) + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + repository: ROCm/rocm-cmake + ref: develop + path: rocm-cmake + persist-credentials: false + + - name: Configure ROCR-Runtime + run: | + cmake -G Ninja -S rocm-systems/projects/rocr-runtime -B build-rocr \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_C_COMPILER=$PWD/build/bin/clang \ + -DCMAKE_CXX_COMPILER=$PWD/build/bin/clang++ \ + -DBUILD_SHARED_LIBS=ON \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DCMAKE_INSTALL_PREFIX=$PWD/staging \ + -DLLVM_DIR=$PWD/build/lib/cmake/llvm \ + -DClang_DIR=$PWD/build/lib/cmake/clang + + - name: Build ROCR-Runtime + env: + ROCM_PATH: ${{ github.workspace }}/staging + run: ninja -C build-rocr install + + - name: Configure CLR (HIP runtime) + run: | + cmake -G Ninja -S rocm-systems/projects/clr -B build-clr \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_C_COMPILER=$PWD/build/bin/clang \ + -DCMAKE_CXX_COMPILER=$PWD/build/bin/clang++ \ + -DBUILD_SHARED_LIBS=ON \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DCMAKE_INSTALL_PREFIX=$PWD/staging \ + -DCMAKE_PREFIX_PATH="$PWD/staging;$PWD/build;$PWD/rocm-cmake/share/rocm" \ + -DHIP_PLATFORM=amd \ + -DHIP_COMMON_DIR=$PWD/rocm-systems/projects/hip \ + -DCLR_BUILD_HIP=ON \ + -DROCM_KPACK_ENABLED=OFF \ + -DHIP_ENABLE_ROCPROFILER_REGISTER=OFF \ + -DHIPCC_BIN_DIR= + + - name: Build CLR + run: ninja -C build-clr install + + - name: Stage translator binary for runtime SPIRV JIT + run: | + mkdir -p staging/bin + cp -a build/bin/amd-llvm-spirv staging/bin/ + + # Create hipconfig script for rocPRIM/hipCUB detection + - name: Create hipconfig script + run: | + mkdir -p staging/bin + cat > staging/bin/hipconfig << 'EOF' + #!/bin/bash + case "$1" in + --platform) echo "amd" ;; + --compiler) echo "clang" ;; + --runtime) echo "rocclr" ;; + --hipclangpath) echo "$PWD/build/bin" ;; + *) echo "amd" ;; + esac + EOF + chmod +x staging/bin/hipconfig + + # Build rocPRIM + - name: Checkout rocPRIM + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + repository: ROCm/rocPRIM + ref: develop + path: rocPRIM + persist-credentials: false + + - name: Configure and install rocPRIM + run: | + export PATH=$PWD/staging/bin:$PATH + cmake -G Ninja -S rocPRIM -B build-rocprim \ + -DCMAKE_CXX_COMPILER=$PWD/build/bin/clang++ \ + -DCMAKE_HIP_COMPILER=$PWD/build/bin/clang++ \ + -DCMAKE_PREFIX_PATH="$PWD/staging;$PWD/build" \ + -DCMAKE_INSTALL_PREFIX=$PWD/staging \ + -DBUILD_TEST=OFF \ + -DBUILD_BENCHMARK=OFF + ninja -C build-rocprim + cmake --install build-rocprim --prefix $PWD/staging + + # Build hipCUB + - name: Checkout hipCUB + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + repository: ROCm/hipCUB + ref: develop + path: hipCUB + persist-credentials: false + + - name: Configure and install hipCUB + run: | + cmake -G Ninja -S hipCUB -B build-hipcub \ + -DCMAKE_CXX_COMPILER=$PWD/build/bin/clang++ \ + -DCMAKE_HIP_COMPILER=$PWD/build/bin/clang++ \ + -DCMAKE_PREFIX_PATH="$PWD/staging;$PWD/build" \ + -DCMAKE_INSTALL_PREFIX=$PWD/staging \ + -DBUILD_TEST=OFF \ + -DBUILD_BENCHMARK=OFF + ninja -C build-hipcub + cmake --install build-hipcub --prefix $PWD/staging + + # Build rocRAND + - name: Checkout rocRAND + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + repository: ROCm/rocRAND + ref: develop + path: rocRAND + persist-credentials: false + + - name: Configure and build rocRAND + env: + ROCM_PATH: ${{ github.workspace }}/staging + run: | + cmake -G Ninja -S rocRAND -B build-rocrand \ + -DCMAKE_CXX_COMPILER=$PWD/build/bin/clang++ \ + -DCMAKE_HIP_COMPILER=$PWD/build/bin/clang++ \ + -DCMAKE_PREFIX_PATH="$PWD/staging;$PWD/build" \ + -DCMAKE_INSTALL_PREFIX=$PWD/staging \ + -DAMDGPU_TARGETS="gfx942" \ + -DBUILD_TEST=OFF \ + -DBUILD_BENCHMARK=OFF \ + -DCMAKE_HIP_FLAGS="--rocm-path=$PWD/staging" + ninja -C build-rocrand + cmake --install build-rocrand --prefix $PWD/staging + + # Build hipRAND + - name: Checkout hipRAND + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + repository: ROCm/hipRAND + ref: develop + path: hipRAND + persist-credentials: false + + - name: Configure and build hipRAND + env: + ROCM_PATH: ${{ github.workspace }}/staging + run: | + cmake -G Ninja -S hipRAND -B build-hiprand \ + -DCMAKE_CXX_COMPILER=$PWD/build/bin/clang++ \ + -DCMAKE_PREFIX_PATH="$PWD/staging;$PWD/build" \ + -DCMAKE_INSTALL_PREFIX=$PWD/staging \ + -DBUILD_TEST=OFF \ + -DBUILD_BENCHMARK=OFF \ + -DROCRAND_PATH=$PWD/staging + ninja -C build-hiprand + cmake --install build-hiprand --prefix $PWD/staging + # ---- Strip + upload artifact ----------------------------------------- # Strip binaries to keep the artifact under GHA's 10GB cap and shorten # upload/download time. Tests don't need debug symbols. `--strip-unneeded` # preserves dynamic symbols needed at link/load time. - name: Strip binaries run: | - find build build-comgr build-device-libs \ + find build build-comgr build-device-libs build-rocr build-clr \ + build-rocprim build-hipcub build-rocrand build-hiprand staging \ -type f \( -executable -o -name '*.so*' -o -name '*.a' \) \ -exec strip --strip-unneeded {} + 2>/dev/null || true # Tar before upload: actions/upload-artifact@v4 strips +x bits and # excludes hidden files (loses FetchContent .git dirs). - name: Tar build trees - run: tar -cf linux-build-tree.tar build build-comgr build-device-libs + run: | + tar -cf linux-build-tree.tar \ + build build-comgr build-device-libs build-rocr build-clr \ + build-rocprim build-hipcub build-rocrand build-hiprand staging - name: Upload build tree artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: linux-build-tree path: linux-build-tree.tar @@ -161,7 +348,7 @@ jobs: persist-credentials: false - name: Download build tree artifact - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v7 with: name: linux-build-tree @@ -274,7 +461,7 @@ jobs: persist-credentials: false - name: Download build tree artifact - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v7 with: name: linux-build-tree @@ -353,3 +540,108 @@ jobs: env: AMD_COMGR_REDIRECT_LOGS: stderr run: ctest --test-dir build-comgr --output-on-failure --rerun-failed + + # ===================================================================== + # Test - rocm-examples (compile + run hello-world via amdgcnspirv) + # ===================================================================== + + test_rocm_examples: + name: Test rocm-examples + needs: build + runs-on: linux-gfx942-1gpu-ossci-rocm + timeout-minutes: 45 + container: + image: ghcr.io/rocm/therock_build_manylinux_x86_64@sha256:702a5133851e6d1daf1207d2c9fbb01c2667914a5b6dc5a01faeb3ce66ea6421 + + + steps: + - name: Checkout rocm-examples (pinned) + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + repository: ROCm/rocm-examples + ref: amd-staging + + - name: Download build tree artifact + uses: actions/download-artifact@v7 + with: + name: linux-build-tree + + - name: Untar build trees + run: tar -xmf linux-build-tree.tar + + - name: Install libnuma + run: dnf install -y numactl-libs + + # HIP-Basic + - name: ROCm Examples build HIP-Basic + run: | + STAGING=$PWD/staging + LLVM_PATH=$PWD/build + cmake -S rocm-examples/HIP-Basic -B examples-build-hip-basic \ + -DCMAKE_CXX_COMPILER=$LLVM_PATH/bin/clang++ \ + -DCMAKE_HIP_COMPILER=$LLVM_PATH/bin/clang++ \ + -DCMAKE_HIP_ARCHITECTURES=amdgcnspirv \ + -DCMAKE_HIP_COMPILER_ROCM_ROOT=$STAGING \ + -DCMAKE_PREFIX_PATH=$STAGING \ + -DCMAKE_DISABLE_FIND_PACKAGE_Perl=TRUE \ + -DCMAKE_HIP_FLAGS="--rocm-path=$STAGING" \ + -DCMAKE_HIP_LINK_FLAGS="-L$STAGING/lib -Wl,-rpath,$STAGING/lib" \ + -DCMAKE_EXE_LINKER_FLAGS="-L$STAGING/lib -Wl,-rpath,$STAGING/lib" + cmake --build examples-build-hip-basic -j + + - name: ROCm Examples run HIP-Basic + env: + LD_LIBRARY_PATH: ${{ github.workspace }}/staging/lib + run: | + ctest --test-dir examples-build-hip-basic --output-on-failure -E '^hip_cooperative_groups$' + + # Applications + - name: ROCm Examples build Applications + run: | + STAGING=$PWD/staging + LLVM_PATH=$PWD/build + cmake -S rocm-examples/Applications -B examples-build-Applications \ + -DCMAKE_CXX_COMPILER=$LLVM_PATH/bin/clang++ \ + -DCMAKE_HIP_COMPILER=$LLVM_PATH/bin/clang++ \ + -DCMAKE_HIP_ARCHITECTURES=amdgcnspirv \ + -DCMAKE_HIP_COMPILER_ROCM_ROOT=$STAGING \ + -DCMAKE_PREFIX_PATH=$STAGING \ + -DCMAKE_HIP_FLAGS="--rocm-path=$STAGING" \ + -DCMAKE_HIP_LINK_FLAGS="-L$STAGING/lib -Wl,-rpath,$STAGING/lib" \ + -DCMAKE_EXE_LINKER_FLAGS="-L$STAGING/lib -Wl,-rpath,$STAGING/lib" + cmake --build examples-build-Applications -j + + - name: ROCm Examples run Applications + env: + LD_LIBRARY_PATH: ${{ github.workspace }}/staging/lib + run: | + ctest --test-dir examples-build-Applications --output-on-failure -E '^applications_monte_carlo_pi$' + + # Libraries + - name: ROCm Examples build Libraries + run: | + STAGING=$PWD/staging + LLVM_PATH=$PWD/build + cmake -S rocm-examples/Libraries -B examples-build-Libraries \ + -DCMAKE_CXX_COMPILER=$LLVM_PATH/bin/clang++ \ + -DCMAKE_HIP_COMPILER=$LLVM_PATH/bin/clang++ \ + -DCMAKE_HIP_COMPILER_ROCM_ROOT=$STAGING \ + -DCMAKE_PREFIX_PATH=$STAGING \ + -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \ + -DHIP_PLATFORM=amd \ + -DROCM_PATH=$STAGING \ + -DCMAKE_HIP_ARCHITECTURES=amdgcnspirv \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_DISABLE_FIND_PACKAGE_Perl=TRUE \ + -DCMAKE_HIP_FLAGS="-DROCPRIM_DISABLE_DPP=1 --offload-new-driver --rocm-path=$STAGING -use-spirv-backend --rtlib=libgcc -unwindlib=libgcc" \ + -DCMAKE_HIP_LINK_FLAGS="--rtlib=libgcc -unwindlib=libgcc -L$STAGING/lib -Wl,-rpath,$STAGING/lib -Wl,--unresolved-symbols=ignore-in-shared-libs" \ + -DCMAKE_CXX_FLAGS="--rtlib=libgcc -unwindlib=libgcc" \ + -DCMAKE_EXE_LINKER_FLAGS="--rtlib=libgcc -unwindlib=libgcc -L$STAGING/lib -Wl,-rpath,$STAGING/lib -Wl,--unresolved-symbols=ignore-in-shared-libs" \ + -DCMAKE_SHARED_LINKER_FLAGS="--rtlib=libgcc -unwindlib=libgcc" + cmake --build examples-build-Libraries -j + + - name: ROCm Examples run Libraries + env: + LD_LIBRARY_PATH: ${{ github.workspace }}/staging/lib + run: | + ctest --test-dir examples-build-Libraries --output-on-failure -E '^(hiprand_simple_distributions_cpp|rocrand_simple_distributions_cpp)$' From 6d933c517b8e050320eff6d53869b0957ffb4217 Mon Sep 17 00:00:00 2001 From: idubinov Date: Wed, 24 Jun 2026 07:14:53 -0500 Subject: [PATCH 02/19] Set runner --- .github/workflows/spirv-ci-linux-amd-staging.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/spirv-ci-linux-amd-staging.yml b/.github/workflows/spirv-ci-linux-amd-staging.yml index 1170c711ef983..cb4b6a66fe83c 100644 --- a/.github/workflows/spirv-ci-linux-amd-staging.yml +++ b/.github/workflows/spirv-ci-linux-amd-staging.yml @@ -548,7 +548,7 @@ jobs: test_rocm_examples: name: Test rocm-examples needs: build - runs-on: linux-gfx942-1gpu-ossci-rocm + runs-on: linux-gfx942-1gpu-core42-ossci-rocm timeout-minutes: 45 container: image: ghcr.io/rocm/therock_build_manylinux_x86_64@sha256:702a5133851e6d1daf1207d2c9fbb01c2667914a5b6dc5a01faeb3ce66ea6421 From 2462d87c03eb08f4c18432d6378140b06d85c4c3 Mon Sep 17 00:00:00 2001 From: idubinov Date: Wed, 24 Jun 2026 08:05:37 -0500 Subject: [PATCH 03/19] Examples checkout path --- .github/workflows/spirv-ci-linux-amd-staging.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/spirv-ci-linux-amd-staging.yml b/.github/workflows/spirv-ci-linux-amd-staging.yml index cb4b6a66fe83c..09e108b1d6354 100644 --- a/.github/workflows/spirv-ci-linux-amd-staging.yml +++ b/.github/workflows/spirv-ci-linux-amd-staging.yml @@ -560,6 +560,7 @@ jobs: with: repository: ROCm/rocm-examples ref: amd-staging + path: rocm-examples - name: Download build tree artifact uses: actions/download-artifact@v7 From fce1306f05f6cef3b5e4ce513f2b145a9ec408e5 Mon Sep 17 00:00:00 2001 From: idubinov Date: Wed, 24 Jun 2026 09:13:12 -0500 Subject: [PATCH 04/19] GPU in container --- .github/workflows/spirv-ci-linux-amd-staging.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/spirv-ci-linux-amd-staging.yml b/.github/workflows/spirv-ci-linux-amd-staging.yml index 09e108b1d6354..16f15e71e322a 100644 --- a/.github/workflows/spirv-ci-linux-amd-staging.yml +++ b/.github/workflows/spirv-ci-linux-amd-staging.yml @@ -552,6 +552,8 @@ jobs: timeout-minutes: 45 container: image: ghcr.io/rocm/therock_build_manylinux_x86_64@sha256:702a5133851e6d1daf1207d2c9fbb01c2667914a5b6dc5a01faeb3ce66ea6421 + options: | + --device=/dev/kfd --device=/dev/dri --group-add video steps: From fd7b8a2edb192e6daee4bb81f230e545793362af Mon Sep 17 00:00:00 2001 From: idubinov Date: Wed, 24 Jun 2026 10:13:53 -0500 Subject: [PATCH 05/19] Check success --- .github/workflows/spirv-ci-linux-amd-staging.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/spirv-ci-linux-amd-staging.yml b/.github/workflows/spirv-ci-linux-amd-staging.yml index 16f15e71e322a..74117f3bd742b 100644 --- a/.github/workflows/spirv-ci-linux-amd-staging.yml +++ b/.github/workflows/spirv-ci-linux-amd-staging.yml @@ -577,6 +577,7 @@ jobs: # HIP-Basic - name: ROCm Examples build HIP-Basic + continue-on-error: true run: | STAGING=$PWD/staging LLVM_PATH=$PWD/build @@ -593,13 +594,15 @@ jobs: cmake --build examples-build-hip-basic -j - name: ROCm Examples run HIP-Basic + continue-on-error: true env: LD_LIBRARY_PATH: ${{ github.workspace }}/staging/lib run: | - ctest --test-dir examples-build-hip-basic --output-on-failure -E '^hip_cooperative_groups$' + ctest --test-dir examples-build-hip-basic --output-on-failure # Applications - name: ROCm Examples build Applications + continue-on-error: true run: | STAGING=$PWD/staging LLVM_PATH=$PWD/build @@ -615,13 +618,15 @@ jobs: cmake --build examples-build-Applications -j - name: ROCm Examples run Applications + continue-on-error: true env: LD_LIBRARY_PATH: ${{ github.workspace }}/staging/lib run: | - ctest --test-dir examples-build-Applications --output-on-failure -E '^applications_monte_carlo_pi$' + ctest --test-dir examples-build-Applications --output-on-failure # Libraries - name: ROCm Examples build Libraries + continue-on-error: true run: | STAGING=$PWD/staging LLVM_PATH=$PWD/build @@ -644,7 +649,8 @@ jobs: cmake --build examples-build-Libraries -j - name: ROCm Examples run Libraries + continue-on-error: true env: LD_LIBRARY_PATH: ${{ github.workspace }}/staging/lib run: | - ctest --test-dir examples-build-Libraries --output-on-failure -E '^(hiprand_simple_distributions_cpp|rocrand_simple_distributions_cpp)$' + ctest --test-dir examples-build-Libraries --output-on-failure From a037892fa4c6bb414673ff5a165dbb1b0d91d046 Mon Sep 17 00:00:00 2001 From: idubinov Date: Wed, 24 Jun 2026 10:49:48 -0500 Subject: [PATCH 06/19] Disable failed examples --- .github/workflows/spirv-ci-linux-amd-staging.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/spirv-ci-linux-amd-staging.yml b/.github/workflows/spirv-ci-linux-amd-staging.yml index 74117f3bd742b..ea55839f4f97f 100644 --- a/.github/workflows/spirv-ci-linux-amd-staging.yml +++ b/.github/workflows/spirv-ci-linux-amd-staging.yml @@ -598,7 +598,7 @@ jobs: env: LD_LIBRARY_PATH: ${{ github.workspace }}/staging/lib run: | - ctest --test-dir examples-build-hip-basic --output-on-failure + ctest --test-dir examples-build-hip-basic --output-on-failure -E '^hip_cooperative_groups$' # Applications - name: ROCm Examples build Applications @@ -622,7 +622,7 @@ jobs: env: LD_LIBRARY_PATH: ${{ github.workspace }}/staging/lib run: | - ctest --test-dir examples-build-Applications --output-on-failure + ctest --test-dir examples-build-Applications --output-on-failure -E '^applications_optical_flow$' # Libraries - name: ROCm Examples build Libraries From 8080a050956fc391fa2727b0ba9a5e037ff3326c Mon Sep 17 00:00:00 2001 From: idubinov Date: Wed, 24 Jun 2026 11:42:56 -0500 Subject: [PATCH 07/19] remove unnecessary continue-on-error --- .github/workflows/spirv-ci-linux-amd-staging.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/spirv-ci-linux-amd-staging.yml b/.github/workflows/spirv-ci-linux-amd-staging.yml index ea55839f4f97f..e48f350508e63 100644 --- a/.github/workflows/spirv-ci-linux-amd-staging.yml +++ b/.github/workflows/spirv-ci-linux-amd-staging.yml @@ -577,7 +577,6 @@ jobs: # HIP-Basic - name: ROCm Examples build HIP-Basic - continue-on-error: true run: | STAGING=$PWD/staging LLVM_PATH=$PWD/build @@ -594,7 +593,6 @@ jobs: cmake --build examples-build-hip-basic -j - name: ROCm Examples run HIP-Basic - continue-on-error: true env: LD_LIBRARY_PATH: ${{ github.workspace }}/staging/lib run: | @@ -602,7 +600,6 @@ jobs: # Applications - name: ROCm Examples build Applications - continue-on-error: true run: | STAGING=$PWD/staging LLVM_PATH=$PWD/build @@ -618,7 +615,6 @@ jobs: cmake --build examples-build-Applications -j - name: ROCm Examples run Applications - continue-on-error: true env: LD_LIBRARY_PATH: ${{ github.workspace }}/staging/lib run: | @@ -626,7 +622,6 @@ jobs: # Libraries - name: ROCm Examples build Libraries - continue-on-error: true run: | STAGING=$PWD/staging LLVM_PATH=$PWD/build @@ -649,7 +644,6 @@ jobs: cmake --build examples-build-Libraries -j - name: ROCm Examples run Libraries - continue-on-error: true env: LD_LIBRARY_PATH: ${{ github.workspace }}/staging/lib run: | From e33e02ab0c014ce9cd6fd7e0f3a00cedfa42b6a3 Mon Sep 17 00:00:00 2001 From: idubinov Date: Mon, 29 Jun 2026 02:44:20 -0500 Subject: [PATCH 08/19] remove unnecessary "||true" --- .github/workflows/spirv-ci-linux-amd-staging.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/spirv-ci-linux-amd-staging.yml b/.github/workflows/spirv-ci-linux-amd-staging.yml index e48f350508e63..085bc16d0f515 100644 --- a/.github/workflows/spirv-ci-linux-amd-staging.yml +++ b/.github/workflows/spirv-ci-linux-amd-staging.yml @@ -101,14 +101,12 @@ jobs: - name: Install build deps for runtime build run: | dnf install -y --setopt=install_weak_deps=False \ - numactl-devel elfutils-libelf-devel libdrm-devel || true + numactl-devel elfutils-libelf-devel libdrm-devel - name: Install comgr + device-libs into staging run: | cmake --install build-comgr --prefix $PWD/staging cmake --install build-device-libs --prefix $PWD/staging - echo "=== staging/lib after install (comgr files) ===" - ls -la staging/lib/libamd_comgr* 2>&1 || true - name: Checkout rocm-systems (pinned) uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -370,7 +368,7 @@ jobs: if: always() run: | grep -oE '^FAIL: LLVM_SPIRV :: \S+' build/check-amd-llvm-spirv.log \ - | sort -u > build/spirv-fails-pr.txt || true + | sort -u > build/spirv-fails-pr.txt echo "PR head failures:"; cat build/spirv-fails-pr.txt - name: Switch llvm-project to amd-staging tip for baseline @@ -403,7 +401,7 @@ jobs: if: always() run: | grep -oE '^FAIL: LLVM_SPIRV :: \S+' build/check-amd-llvm-spirv-baseline.log \ - | sort -u > build/spirv-fails-baseline.txt || true + | sort -u > build/spirv-fails-baseline.txt echo "Baseline failures:"; cat build/spirv-fails-baseline.txt # Fail the job on real regressions (PR head FAILs that aren't on From be1f9db2dd88a503e708f9c560586c0e0b46a223 Mon Sep 17 00:00:00 2001 From: idubinov Date: Mon, 29 Jun 2026 02:47:05 -0500 Subject: [PATCH 09/19] remove "pinned" comments --- .github/workflows/spirv-ci-linux-amd-staging.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/spirv-ci-linux-amd-staging.yml b/.github/workflows/spirv-ci-linux-amd-staging.yml index 085bc16d0f515..86d8034d103db 100644 --- a/.github/workflows/spirv-ci-linux-amd-staging.yml +++ b/.github/workflows/spirv-ci-linux-amd-staging.yml @@ -108,7 +108,7 @@ jobs: cmake --install build-comgr --prefix $PWD/staging cmake --install build-device-libs --prefix $PWD/staging - - name: Checkout rocm-systems (pinned) + - name: Checkout rocm-systems uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: repository: ROCm/rocm-systems @@ -116,7 +116,7 @@ jobs: path: rocm-systems persist-credentials: false - - name: Checkout rocm-cmake (pinned) + - name: Checkout rocm-cmake uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: repository: ROCm/rocm-cmake @@ -540,7 +540,7 @@ jobs: run: ctest --test-dir build-comgr --output-on-failure --rerun-failed # ===================================================================== - # Test - rocm-examples (compile + run hello-world via amdgcnspirv) + # Test - rocm-examples # ===================================================================== test_rocm_examples: @@ -555,7 +555,7 @@ jobs: steps: - - name: Checkout rocm-examples (pinned) + - name: Checkout rocm-examples uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: repository: ROCm/rocm-examples From a4fa68f24616a0ada383ec71faf13bedfdcf813d Mon Sep 17 00:00:00 2001 From: idubinov Date: Mon, 29 Jun 2026 02:51:17 -0500 Subject: [PATCH 10/19] Update actions/checkout to v7 --- .../workflows/spirv-ci-linux-amd-staging.yml | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/spirv-ci-linux-amd-staging.yml b/.github/workflows/spirv-ci-linux-amd-staging.yml index 86d8034d103db..f949bc7138593 100644 --- a/.github/workflows/spirv-ci-linux-amd-staging.yml +++ b/.github/workflows/spirv-ci-linux-amd-staging.yml @@ -27,7 +27,7 @@ jobs: - name: Checkout llvm-project (PR head) # On pull_request events: PR head from the (possibly fork) head repo. # On workflow_dispatch: the branch the dispatch was on. - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }} ref: ${{ github.event.pull_request.head.sha || github.sha }} @@ -40,7 +40,7 @@ jobs: # the translator. Without an explicit repository/ref, checkout # defaults to the workflow's own repo (llvm-project) and clobbers # the translator path with llvm-project content. - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: repository: ROCm/SPIRV-LLVM-Translator ref: amd-staging @@ -109,7 +109,7 @@ jobs: cmake --install build-device-libs --prefix $PWD/staging - name: Checkout rocm-systems - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: repository: ROCm/rocm-systems ref: develop @@ -117,7 +117,7 @@ jobs: persist-credentials: false - name: Checkout rocm-cmake - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: repository: ROCm/rocm-cmake ref: develop @@ -184,7 +184,7 @@ jobs: # Build rocPRIM - name: Checkout rocPRIM - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: repository: ROCm/rocPRIM ref: develop @@ -206,7 +206,7 @@ jobs: # Build hipCUB - name: Checkout hipCUB - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: repository: ROCm/hipCUB ref: develop @@ -227,7 +227,7 @@ jobs: # Build rocRAND - name: Checkout rocRAND - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: repository: ROCm/rocRAND ref: develop @@ -252,7 +252,7 @@ jobs: # Build hipRAND - name: Checkout hipRAND - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: repository: ROCm/hipRAND ref: develop @@ -324,7 +324,7 @@ jobs: - name: Checkout llvm-project (PR head) # On pull_request events: PR head from the (possibly fork) head repo. # On workflow_dispatch: the branch the dispatch was on. - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }} ref: ${{ github.event.pull_request.head.sha || github.sha }} @@ -337,7 +337,7 @@ jobs: # the translator. Without an explicit repository/ref, checkout # defaults to the workflow's own repo (llvm-project) and clobbers # the translator path with llvm-project content. - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: repository: ROCm/SPIRV-LLVM-Translator ref: amd-staging @@ -437,7 +437,7 @@ jobs: - name: Checkout llvm-project (PR head) # On pull_request events: PR head from the (possibly fork) head repo. # On workflow_dispatch: the branch the dispatch was on. - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }} ref: ${{ github.event.pull_request.head.sha || github.sha }} @@ -450,7 +450,7 @@ jobs: # the translator. Without an explicit repository/ref, checkout # defaults to the workflow's own repo (llvm-project) and clobbers # the translator path with llvm-project content. - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: repository: ROCm/SPIRV-LLVM-Translator ref: amd-staging @@ -488,7 +488,7 @@ jobs: - name: Checkout llvm-project (PR head) # On pull_request events: PR head from the (possibly fork) head repo. # On workflow_dispatch: the branch the dispatch was on. - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }} ref: ${{ github.event.pull_request.head.sha || github.sha }} @@ -501,7 +501,7 @@ jobs: # the translator. Without an explicit repository/ref, checkout # defaults to the workflow's own repo (llvm-project) and clobbers # the translator path with llvm-project content. - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: repository: ROCm/SPIRV-LLVM-Translator ref: amd-staging @@ -556,7 +556,7 @@ jobs: steps: - name: Checkout rocm-examples - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: repository: ROCm/rocm-examples ref: amd-staging From ae95f4d44c144e7dff5e7cb1465e80f4774100a2 Mon Sep 17 00:00:00 2001 From: idubinov Date: Mon, 29 Jun 2026 03:05:54 -0500 Subject: [PATCH 11/19] Pin actions version --- .github/workflows/spirv-ci-linux-amd-staging.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/spirv-ci-linux-amd-staging.yml b/.github/workflows/spirv-ci-linux-amd-staging.yml index f949bc7138593..c0c30f9920d3e 100644 --- a/.github/workflows/spirv-ci-linux-amd-staging.yml +++ b/.github/workflows/spirv-ci-linux-amd-staging.yml @@ -293,7 +293,7 @@ jobs: build-rocprim build-hipcub build-rocrand build-hiprand staging - name: Upload build tree artifact - uses: actions/upload-artifact@v7 + uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 with: name: linux-build-tree path: linux-build-tree.tar @@ -346,7 +346,7 @@ jobs: persist-credentials: false - name: Download build tree artifact - uses: actions/download-artifact@v7 + uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0 with: name: linux-build-tree @@ -510,7 +510,7 @@ jobs: persist-credentials: false - name: Download build tree artifact - uses: actions/download-artifact@v4 + uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0 with: name: linux-build-tree @@ -563,7 +563,7 @@ jobs: path: rocm-examples - name: Download build tree artifact - uses: actions/download-artifact@v7 + uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0 with: name: linux-build-tree From f2d27538ed1fc21a6d5beeea080c5eb4e4442013 Mon Sep 17 00:00:00 2001 From: idubinov Date: Mon, 29 Jun 2026 03:50:17 -0500 Subject: [PATCH 12/19] Exclude expected fails --- .github/workflows/spirv-ci-linux-amd-staging.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/spirv-ci-linux-amd-staging.yml b/.github/workflows/spirv-ci-linux-amd-staging.yml index c0c30f9920d3e..e4f08ec5f29a7 100644 --- a/.github/workflows/spirv-ci-linux-amd-staging.yml +++ b/.github/workflows/spirv-ci-linux-amd-staging.yml @@ -616,7 +616,7 @@ jobs: env: LD_LIBRARY_PATH: ${{ github.workspace }}/staging/lib run: | - ctest --test-dir examples-build-Applications --output-on-failure -E '^applications_optical_flow$' + ctest --test-dir examples-build-Applications --output-on-failure -E '^(applications_optical_flow|applications_monte_carlo_pi)$' # Libraries - name: ROCm Examples build Libraries @@ -645,4 +645,4 @@ jobs: env: LD_LIBRARY_PATH: ${{ github.workspace }}/staging/lib run: | - ctest --test-dir examples-build-Libraries --output-on-failure + ctest --test-dir examples-build-Libraries --output-on-failure -E '^(hiprand_simple_distributions_cpp|rocrand_simple_distributions_cpp)$' From ed3265e5b415a4a1d3a40d2bbf1cda419e7fae3a Mon Sep 17 00:00:00 2001 From: idubinov Date: Mon, 29 Jun 2026 04:37:29 -0500 Subject: [PATCH 13/19] remove unused HIPCC_BIN_DIR --- .github/workflows/spirv-ci-linux-amd-staging.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/spirv-ci-linux-amd-staging.yml b/.github/workflows/spirv-ci-linux-amd-staging.yml index e4f08ec5f29a7..150345f174335 100644 --- a/.github/workflows/spirv-ci-linux-amd-staging.yml +++ b/.github/workflows/spirv-ci-linux-amd-staging.yml @@ -155,8 +155,7 @@ jobs: -DHIP_COMMON_DIR=$PWD/rocm-systems/projects/hip \ -DCLR_BUILD_HIP=ON \ -DROCM_KPACK_ENABLED=OFF \ - -DHIP_ENABLE_ROCPROFILER_REGISTER=OFF \ - -DHIPCC_BIN_DIR= + -DHIP_ENABLE_ROCPROFILER_REGISTER=OFF - name: Build CLR run: ninja -C build-clr install From 81aed1e2ec27b202e59542ce21b97608889992c4 Mon Sep 17 00:00:00 2001 From: idubinov Date: Tue, 30 Jun 2026 11:35:22 +0200 Subject: [PATCH 14/19] Apply suggestions from code review Co-authored-by: Marcos Maronas --- .../workflows/spirv-ci-linux-amd-staging.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/spirv-ci-linux-amd-staging.yml b/.github/workflows/spirv-ci-linux-amd-staging.yml index 150345f174335..9409e47db8a69 100644 --- a/.github/workflows/spirv-ci-linux-amd-staging.yml +++ b/.github/workflows/spirv-ci-linux-amd-staging.yml @@ -97,7 +97,7 @@ jobs: - name: Build Comgr run: ninja -C build-comgr amd_comgr - # Builds ROCR-Runtime (libhsa-runtime64.so) and CLR (libamdhip64.so) + # Builds ROCR-Runtime (libhsa-runtime64.so) and CLR (libamdhip64.so). - name: Install build deps for runtime build run: | dnf install -y --setopt=install_weak_deps=False \ @@ -165,7 +165,7 @@ jobs: mkdir -p staging/bin cp -a build/bin/amd-llvm-spirv staging/bin/ - # Create hipconfig script for rocPRIM/hipCUB detection + # Create hipconfig script for rocPRIM/hipCUB detection. - name: Create hipconfig script run: | mkdir -p staging/bin @@ -181,7 +181,7 @@ jobs: EOF chmod +x staging/bin/hipconfig - # Build rocPRIM + # Build rocPRIM. - name: Checkout rocPRIM uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: @@ -203,7 +203,7 @@ jobs: ninja -C build-rocprim cmake --install build-rocprim --prefix $PWD/staging - # Build hipCUB + # Build hipCUB. - name: Checkout hipCUB uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: @@ -224,7 +224,7 @@ jobs: ninja -C build-hipcub cmake --install build-hipcub --prefix $PWD/staging - # Build rocRAND + # Build rocRAND. - name: Checkout rocRAND uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: @@ -249,7 +249,7 @@ jobs: ninja -C build-rocrand cmake --install build-rocrand --prefix $PWD/staging - # Build hipRAND + # Build hipRAND. - name: Checkout hipRAND uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: @@ -572,7 +572,7 @@ jobs: - name: Install libnuma run: dnf install -y numactl-libs - # HIP-Basic + # HIP-Basic. - name: ROCm Examples build HIP-Basic run: | STAGING=$PWD/staging @@ -595,7 +595,7 @@ jobs: run: | ctest --test-dir examples-build-hip-basic --output-on-failure -E '^hip_cooperative_groups$' - # Applications + # Applications. - name: ROCm Examples build Applications run: | STAGING=$PWD/staging @@ -617,7 +617,7 @@ jobs: run: | ctest --test-dir examples-build-Applications --output-on-failure -E '^(applications_optical_flow|applications_monte_carlo_pi)$' - # Libraries + # Libraries. - name: ROCm Examples build Libraries run: | STAGING=$PWD/staging From 08e788604e783ccc49fbf12d9b5e85d85a7e4b10 Mon Sep 17 00:00:00 2001 From: idubinov Date: Tue, 30 Jun 2026 05:27:17 -0500 Subject: [PATCH 15/19] Address review --- .../workflows/spirv-ci-linux-amd-staging.yml | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/.github/workflows/spirv-ci-linux-amd-staging.yml b/.github/workflows/spirv-ci-linux-amd-staging.yml index 9409e47db8a69..d5d7e9c97b082 100644 --- a/.github/workflows/spirv-ci-linux-amd-staging.yml +++ b/.github/workflows/spirv-ci-linux-amd-staging.yml @@ -52,7 +52,6 @@ jobs: - name: Configure LLVM run: | cmake -G Ninja -S llvm-project/llvm -B build \ - -DCMAKE_BUILD_TYPE=Release \ -DLLVM_ENABLE_ASSERTIONS=ON \ -DCMAKE_INSTALL_LIBDIR=lib \ -DLLVM_ENABLE_PROJECTS="clang;lld" \ @@ -72,7 +71,6 @@ jobs: - name: Configure device-libs run: | cmake -G Ninja -S llvm-project/amd/device-libs -B build-device-libs \ - -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_PREFIX_PATH=$PWD/build \ -DCMAKE_INSTALL_LIBDIR=lib \ -DLLVM_DIR=$PWD/build/lib/cmake/llvm @@ -87,7 +85,6 @@ jobs: # turns ON (otherwise translator-dependent lit tests are UNSUPPORTED). run: | cmake -G Ninja -S llvm-project/amd/comgr -B build-comgr \ - -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_LIBDIR=lib \ -DCMAKE_PREFIX_PATH="$PWD/build;$PWD/build-device-libs" \ -DLLVM_DIR=$PWD/build/lib/cmake/llvm \ @@ -127,7 +124,6 @@ jobs: - name: Configure ROCR-Runtime run: | cmake -G Ninja -S rocm-systems/projects/rocr-runtime -B build-rocr \ - -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_COMPILER=$PWD/build/bin/clang \ -DCMAKE_CXX_COMPILER=$PWD/build/bin/clang++ \ -DBUILD_SHARED_LIBS=ON \ @@ -144,7 +140,6 @@ jobs: - name: Configure CLR (HIP runtime) run: | cmake -G Ninja -S rocm-systems/projects/clr -B build-clr \ - -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_COMPILER=$PWD/build/bin/clang \ -DCMAKE_CXX_COMPILER=$PWD/build/bin/clang++ \ -DBUILD_SHARED_LIBS=ON \ @@ -587,13 +582,13 @@ jobs: -DCMAKE_HIP_FLAGS="--rocm-path=$STAGING" \ -DCMAKE_HIP_LINK_FLAGS="-L$STAGING/lib -Wl,-rpath,$STAGING/lib" \ -DCMAKE_EXE_LINKER_FLAGS="-L$STAGING/lib -Wl,-rpath,$STAGING/lib" - cmake --build examples-build-hip-basic -j + cmake --build examples-build-hip-basic -j $(nproc) - name: ROCm Examples run HIP-Basic env: LD_LIBRARY_PATH: ${{ github.workspace }}/staging/lib run: | - ctest --test-dir examples-build-hip-basic --output-on-failure -E '^hip_cooperative_groups$' + ctest --test-dir examples-build-hip-basic --output-on-failure -j $(nproc) -E '^hip_cooperative_groups$' # Applications. - name: ROCm Examples build Applications @@ -609,13 +604,13 @@ jobs: -DCMAKE_HIP_FLAGS="--rocm-path=$STAGING" \ -DCMAKE_HIP_LINK_FLAGS="-L$STAGING/lib -Wl,-rpath,$STAGING/lib" \ -DCMAKE_EXE_LINKER_FLAGS="-L$STAGING/lib -Wl,-rpath,$STAGING/lib" - cmake --build examples-build-Applications -j + cmake --build examples-build-Applications -j $(nproc) - name: ROCm Examples run Applications env: LD_LIBRARY_PATH: ${{ github.workspace }}/staging/lib run: | - ctest --test-dir examples-build-Applications --output-on-failure -E '^(applications_optical_flow|applications_monte_carlo_pi)$' + ctest --test-dir examples-build-Applications --output-on-failure -j $(nproc) -E '^(applications_optical_flow|applications_monte_carlo_pi)$' # Libraries. - name: ROCm Examples build Libraries @@ -631,17 +626,16 @@ jobs: -DHIP_PLATFORM=amd \ -DROCM_PATH=$STAGING \ -DCMAKE_HIP_ARCHITECTURES=amdgcnspirv \ - -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_DISABLE_FIND_PACKAGE_Perl=TRUE \ -DCMAKE_HIP_FLAGS="-DROCPRIM_DISABLE_DPP=1 --offload-new-driver --rocm-path=$STAGING -use-spirv-backend --rtlib=libgcc -unwindlib=libgcc" \ -DCMAKE_HIP_LINK_FLAGS="--rtlib=libgcc -unwindlib=libgcc -L$STAGING/lib -Wl,-rpath,$STAGING/lib -Wl,--unresolved-symbols=ignore-in-shared-libs" \ -DCMAKE_CXX_FLAGS="--rtlib=libgcc -unwindlib=libgcc" \ -DCMAKE_EXE_LINKER_FLAGS="--rtlib=libgcc -unwindlib=libgcc -L$STAGING/lib -Wl,-rpath,$STAGING/lib -Wl,--unresolved-symbols=ignore-in-shared-libs" \ -DCMAKE_SHARED_LINKER_FLAGS="--rtlib=libgcc -unwindlib=libgcc" - cmake --build examples-build-Libraries -j + cmake --build examples-build-Libraries -j $(nproc) - name: ROCm Examples run Libraries env: LD_LIBRARY_PATH: ${{ github.workspace }}/staging/lib run: | - ctest --test-dir examples-build-Libraries --output-on-failure -E '^(hiprand_simple_distributions_cpp|rocrand_simple_distributions_cpp)$' + ctest --test-dir examples-build-Libraries --output-on-failure -j $(nproc) -E '^(hiprand_simple_distributions_cpp|rocrand_simple_distributions_cpp)$' From 3a35f01bb53cd016ca0963da61c3dcfe45dc53da Mon Sep 17 00:00:00 2001 From: idubinov Date: Tue, 30 Jun 2026 08:54:22 -0500 Subject: [PATCH 16/19] organize repeated variables --- .../workflows/spirv-ci-linux-amd-staging.yml | 215 ++++++++++-------- 1 file changed, 114 insertions(+), 101 deletions(-) diff --git a/.github/workflows/spirv-ci-linux-amd-staging.yml b/.github/workflows/spirv-ci-linux-amd-staging.yml index d5d7e9c97b082..73a759ea78da5 100644 --- a/.github/workflows/spirv-ci-linux-amd-staging.yml +++ b/.github/workflows/spirv-ci-linux-amd-staging.yml @@ -7,6 +7,19 @@ name: SPIRV Compiler CI - Linux - amd-staging on: workflow_call: +env: + LLVM_BUILD: build + DEVLIBS_BUILD: build-device-libs + COMGR_BUILD: build-comgr + ROCR_BUILD: build-rocr + CLR_BUILD: build-clr + ROCPRIM_BUILD: build-rocprim + HIPCUB_BUILD: build-hipcub + ROCRAND_BUILD: build-rocrand + HIPRAND_BUILD: build-hiprand + STAGING: staging + TRANSLATOR_SRC: llvm-project/llvm/projects/SPIRV-LLVM-Translator + jobs: # ===================================================================== # Build LLVM + Clang + amd-llvm-spirv + device-libs + Comgr. @@ -44,14 +57,14 @@ jobs: with: repository: ROCm/SPIRV-LLVM-Translator ref: amd-staging - path: llvm-project/llvm/projects/SPIRV-LLVM-Translator + path: ${{ env.TRANSLATOR_SRC }} fetch-depth: 1 persist-credentials: false # ---- Build LLVM + Clang + LLD + in-tree SPIRV translator -------------- - name: Configure LLVM run: | - cmake -G Ninja -S llvm-project/llvm -B build \ + cmake -G Ninja -S llvm-project/llvm -B "$LLVM_BUILD" \ -DLLVM_ENABLE_ASSERTIONS=ON \ -DCMAKE_INSTALL_LIBDIR=lib \ -DLLVM_ENABLE_PROJECTS="clang;lld" \ @@ -65,18 +78,18 @@ jobs: - name: Build LLVM + Clang + amd-llvm-spirv + test deps # *-test-depends pull in all tools needed for lit (FileCheck, not, # llc, llvm-*, clang, opt, etc.) and stay current with upstream. - run: ninja -C build llvm-test-depends clang-test-depends amd-llvm-spirv builtins + run: ninja -C "$LLVM_BUILD" llvm-test-depends clang-test-depends amd-llvm-spirv builtins # ---- Build device-libs (standalone, against built LLVM) -------------- - name: Configure device-libs run: | - cmake -G Ninja -S llvm-project/amd/device-libs -B build-device-libs \ - -DCMAKE_PREFIX_PATH=$PWD/build \ + cmake -G Ninja -S llvm-project/amd/device-libs -B "$DEVLIBS_BUILD" \ + -DCMAKE_PREFIX_PATH=$PWD/$LLVM_BUILD \ -DCMAKE_INSTALL_LIBDIR=lib \ - -DLLVM_DIR=$PWD/build/lib/cmake/llvm + -DLLVM_DIR=$PWD/$LLVM_BUILD/lib/cmake/llvm - name: Build device-libs - run: ninja -C build-device-libs + run: ninja -C "$DEVLIBS_BUILD" # ---- Build Comgr (standalone, against built LLVM + device-libs) ------ - name: Configure Comgr @@ -84,15 +97,15 @@ jobs: # the in-tree translator headers so COMGR_SPIRV_TRANSLATOR_AVAILABLE # turns ON (otherwise translator-dependent lit tests are UNSUPPORTED). run: | - cmake -G Ninja -S llvm-project/amd/comgr -B build-comgr \ + cmake -G Ninja -S llvm-project/amd/comgr -B "$COMGR_BUILD" \ -DCMAKE_INSTALL_LIBDIR=lib \ - -DCMAKE_PREFIX_PATH="$PWD/build;$PWD/build-device-libs" \ - -DLLVM_DIR=$PWD/build/lib/cmake/llvm \ - -DLLVM_EXTERNAL_SPIRV_LLVM_TRANSLATOR_SOURCE_DIR=$PWD/llvm-project/llvm/projects/SPIRV-LLVM-Translator \ + -DCMAKE_PREFIX_PATH="$PWD/$LLVM_BUILD;$PWD/$DEVLIBS_BUILD" \ + -DLLVM_DIR=$PWD/$LLVM_BUILD/lib/cmake/llvm \ + -DLLVM_EXTERNAL_SPIRV_LLVM_TRANSLATOR_SOURCE_DIR=$PWD/$TRANSLATOR_SRC \ -DBUILD_TESTING=ON - name: Build Comgr - run: ninja -C build-comgr amd_comgr + run: ninja -C "$COMGR_BUILD" amd_comgr # Builds ROCR-Runtime (libhsa-runtime64.so) and CLR (libamdhip64.so). - name: Install build deps for runtime build @@ -102,8 +115,8 @@ jobs: - name: Install comgr + device-libs into staging run: | - cmake --install build-comgr --prefix $PWD/staging - cmake --install build-device-libs --prefix $PWD/staging + cmake --install "$COMGR_BUILD" --prefix $PWD/$STAGING + cmake --install "$DEVLIBS_BUILD" --prefix $PWD/$STAGING - name: Checkout rocm-systems uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -123,29 +136,29 @@ jobs: - name: Configure ROCR-Runtime run: | - cmake -G Ninja -S rocm-systems/projects/rocr-runtime -B build-rocr \ - -DCMAKE_C_COMPILER=$PWD/build/bin/clang \ - -DCMAKE_CXX_COMPILER=$PWD/build/bin/clang++ \ + cmake -G Ninja -S rocm-systems/projects/rocr-runtime -B "$ROCR_BUILD" \ + -DCMAKE_C_COMPILER=$PWD/$LLVM_BUILD/bin/clang \ + -DCMAKE_CXX_COMPILER=$PWD/$LLVM_BUILD/bin/clang++ \ -DBUILD_SHARED_LIBS=ON \ -DCMAKE_INSTALL_LIBDIR=lib \ - -DCMAKE_INSTALL_PREFIX=$PWD/staging \ - -DLLVM_DIR=$PWD/build/lib/cmake/llvm \ - -DClang_DIR=$PWD/build/lib/cmake/clang + -DCMAKE_INSTALL_PREFIX=$PWD/$STAGING \ + -DLLVM_DIR=$PWD/$LLVM_BUILD/lib/cmake/llvm \ + -DClang_DIR=$PWD/$LLVM_BUILD/lib/cmake/clang - name: Build ROCR-Runtime env: - ROCM_PATH: ${{ github.workspace }}/staging - run: ninja -C build-rocr install + ROCM_PATH: ${{ github.workspace }}/${{ env.STAGING }} + run: ninja -C "$ROCR_BUILD" install - name: Configure CLR (HIP runtime) run: | - cmake -G Ninja -S rocm-systems/projects/clr -B build-clr \ - -DCMAKE_C_COMPILER=$PWD/build/bin/clang \ - -DCMAKE_CXX_COMPILER=$PWD/build/bin/clang++ \ + cmake -G Ninja -S rocm-systems/projects/clr -B "$CLR_BUILD" \ + -DCMAKE_C_COMPILER=$PWD/$LLVM_BUILD/bin/clang \ + -DCMAKE_CXX_COMPILER=$PWD/$LLVM_BUILD/bin/clang++ \ -DBUILD_SHARED_LIBS=ON \ -DCMAKE_INSTALL_LIBDIR=lib \ - -DCMAKE_INSTALL_PREFIX=$PWD/staging \ - -DCMAKE_PREFIX_PATH="$PWD/staging;$PWD/build;$PWD/rocm-cmake/share/rocm" \ + -DCMAKE_INSTALL_PREFIX=$PWD/$STAGING \ + -DCMAKE_PREFIX_PATH="$PWD/$STAGING;$PWD/$LLVM_BUILD;$PWD/rocm-cmake/share/rocm" \ -DHIP_PLATFORM=amd \ -DHIP_COMMON_DIR=$PWD/rocm-systems/projects/hip \ -DCLR_BUILD_HIP=ON \ @@ -153,28 +166,28 @@ jobs: -DHIP_ENABLE_ROCPROFILER_REGISTER=OFF - name: Build CLR - run: ninja -C build-clr install + run: ninja -C "$CLR_BUILD" install - name: Stage translator binary for runtime SPIRV JIT run: | - mkdir -p staging/bin - cp -a build/bin/amd-llvm-spirv staging/bin/ + mkdir -p "$STAGING/bin" + cp -a "$LLVM_BUILD/bin/amd-llvm-spirv" "$STAGING/bin/" # Create hipconfig script for rocPRIM/hipCUB detection. - name: Create hipconfig script run: | - mkdir -p staging/bin - cat > staging/bin/hipconfig << 'EOF' + mkdir -p "$STAGING/bin" + cat > "$STAGING/bin/hipconfig" << 'EOF' #!/bin/bash case "$1" in --platform) echo "amd" ;; --compiler) echo "clang" ;; --runtime) echo "rocclr" ;; - --hipclangpath) echo "$PWD/build/bin" ;; + --hipclangpath) echo "$PWD/$LLVM_BUILD/bin" ;; *) echo "amd" ;; esac EOF - chmod +x staging/bin/hipconfig + chmod +x "$STAGING/bin/hipconfig" # Build rocPRIM. - name: Checkout rocPRIM @@ -187,16 +200,16 @@ jobs: - name: Configure and install rocPRIM run: | - export PATH=$PWD/staging/bin:$PATH - cmake -G Ninja -S rocPRIM -B build-rocprim \ - -DCMAKE_CXX_COMPILER=$PWD/build/bin/clang++ \ - -DCMAKE_HIP_COMPILER=$PWD/build/bin/clang++ \ - -DCMAKE_PREFIX_PATH="$PWD/staging;$PWD/build" \ - -DCMAKE_INSTALL_PREFIX=$PWD/staging \ + export PATH=$PWD/$STAGING/bin:$PATH + cmake -G Ninja -S rocPRIM -B "$ROCPRIM_BUILD" \ + -DCMAKE_CXX_COMPILER=$PWD/$LLVM_BUILD/bin/clang++ \ + -DCMAKE_HIP_COMPILER=$PWD/$LLVM_BUILD/bin/clang++ \ + -DCMAKE_PREFIX_PATH="$PWD/$STAGING;$PWD/$LLVM_BUILD" \ + -DCMAKE_INSTALL_PREFIX=$PWD/$STAGING \ -DBUILD_TEST=OFF \ -DBUILD_BENCHMARK=OFF - ninja -C build-rocprim - cmake --install build-rocprim --prefix $PWD/staging + ninja -C "$ROCPRIM_BUILD" + cmake --install "$ROCPRIM_BUILD" --prefix $PWD/$STAGING # Build hipCUB. - name: Checkout hipCUB @@ -209,15 +222,15 @@ jobs: - name: Configure and install hipCUB run: | - cmake -G Ninja -S hipCUB -B build-hipcub \ - -DCMAKE_CXX_COMPILER=$PWD/build/bin/clang++ \ - -DCMAKE_HIP_COMPILER=$PWD/build/bin/clang++ \ - -DCMAKE_PREFIX_PATH="$PWD/staging;$PWD/build" \ - -DCMAKE_INSTALL_PREFIX=$PWD/staging \ + cmake -G Ninja -S hipCUB -B "$HIPCUB_BUILD" \ + -DCMAKE_CXX_COMPILER=$PWD/$LLVM_BUILD/bin/clang++ \ + -DCMAKE_HIP_COMPILER=$PWD/$LLVM_BUILD/bin/clang++ \ + -DCMAKE_PREFIX_PATH="$PWD/$STAGING;$PWD/$LLVM_BUILD" \ + -DCMAKE_INSTALL_PREFIX=$PWD/$STAGING \ -DBUILD_TEST=OFF \ -DBUILD_BENCHMARK=OFF - ninja -C build-hipcub - cmake --install build-hipcub --prefix $PWD/staging + ninja -C "$HIPCUB_BUILD" + cmake --install "$HIPCUB_BUILD" --prefix $PWD/$STAGING # Build rocRAND. - name: Checkout rocRAND @@ -230,19 +243,19 @@ jobs: - name: Configure and build rocRAND env: - ROCM_PATH: ${{ github.workspace }}/staging + ROCM_PATH: ${{ github.workspace }}/${{ env.STAGING }} run: | - cmake -G Ninja -S rocRAND -B build-rocrand \ - -DCMAKE_CXX_COMPILER=$PWD/build/bin/clang++ \ - -DCMAKE_HIP_COMPILER=$PWD/build/bin/clang++ \ - -DCMAKE_PREFIX_PATH="$PWD/staging;$PWD/build" \ - -DCMAKE_INSTALL_PREFIX=$PWD/staging \ + cmake -G Ninja -S rocRAND -B "$ROCRAND_BUILD" \ + -DCMAKE_CXX_COMPILER=$PWD/$LLVM_BUILD/bin/clang++ \ + -DCMAKE_HIP_COMPILER=$PWD/$LLVM_BUILD/bin/clang++ \ + -DCMAKE_PREFIX_PATH="$PWD/$STAGING;$PWD/$LLVM_BUILD" \ + -DCMAKE_INSTALL_PREFIX=$PWD/$STAGING \ -DAMDGPU_TARGETS="gfx942" \ -DBUILD_TEST=OFF \ -DBUILD_BENCHMARK=OFF \ - -DCMAKE_HIP_FLAGS="--rocm-path=$PWD/staging" - ninja -C build-rocrand - cmake --install build-rocrand --prefix $PWD/staging + -DCMAKE_HIP_FLAGS="--rocm-path=$PWD/$STAGING" + ninja -C "$ROCRAND_BUILD" + cmake --install "$ROCRAND_BUILD" --prefix $PWD/$STAGING # Build hipRAND. - name: Checkout hipRAND @@ -255,17 +268,17 @@ jobs: - name: Configure and build hipRAND env: - ROCM_PATH: ${{ github.workspace }}/staging + ROCM_PATH: ${{ github.workspace }}/${{ env.STAGING }} run: | - cmake -G Ninja -S hipRAND -B build-hiprand \ - -DCMAKE_CXX_COMPILER=$PWD/build/bin/clang++ \ - -DCMAKE_PREFIX_PATH="$PWD/staging;$PWD/build" \ - -DCMAKE_INSTALL_PREFIX=$PWD/staging \ + cmake -G Ninja -S hipRAND -B "$HIPRAND_BUILD" \ + -DCMAKE_CXX_COMPILER=$PWD/$LLVM_BUILD/bin/clang++ \ + -DCMAKE_PREFIX_PATH="$PWD/$STAGING;$PWD/$LLVM_BUILD" \ + -DCMAKE_INSTALL_PREFIX=$PWD/$STAGING \ -DBUILD_TEST=OFF \ -DBUILD_BENCHMARK=OFF \ - -DROCRAND_PATH=$PWD/staging - ninja -C build-hiprand - cmake --install build-hiprand --prefix $PWD/staging + -DROCRAND_PATH=$PWD/$STAGING + ninja -C "$HIPRAND_BUILD" + cmake --install "$HIPRAND_BUILD" --prefix $PWD/$STAGING # ---- Strip + upload artifact ----------------------------------------- # Strip binaries to keep the artifact under GHA's 10GB cap and shorten @@ -273,8 +286,8 @@ jobs: # preserves dynamic symbols needed at link/load time. - name: Strip binaries run: | - find build build-comgr build-device-libs build-rocr build-clr \ - build-rocprim build-hipcub build-rocrand build-hiprand staging \ + find "$LLVM_BUILD" "$COMGR_BUILD" "$DEVLIBS_BUILD" "$ROCR_BUILD" "$CLR_BUILD" \ + "$ROCPRIM_BUILD" "$HIPCUB_BUILD" "$ROCRAND_BUILD" "$HIPRAND_BUILD" "$STAGING" \ -type f \( -executable -o -name '*.so*' -o -name '*.a' \) \ -exec strip --strip-unneeded {} + 2>/dev/null || true @@ -283,8 +296,8 @@ jobs: - name: Tar build trees run: | tar -cf linux-build-tree.tar \ - build build-comgr build-device-libs build-rocr build-clr \ - build-rocprim build-hipcub build-rocrand build-hiprand staging + "$LLVM_BUILD" "$COMGR_BUILD" "$DEVLIBS_BUILD" "$ROCR_BUILD" "$CLR_BUILD" \ + "$ROCPRIM_BUILD" "$HIPCUB_BUILD" "$ROCRAND_BUILD" "$HIPRAND_BUILD" "$STAGING" - name: Upload build tree artifact uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 @@ -335,7 +348,7 @@ jobs: with: repository: ROCm/SPIRV-LLVM-Translator ref: amd-staging - path: llvm-project/llvm/projects/SPIRV-LLVM-Translator + path: ${{ env.TRANSLATOR_SRC }} fetch-depth: 1 persist-credentials: false @@ -349,21 +362,21 @@ jobs: - name: Untar build trees run: | tar -xmf linux-build-tree.tar - touch build/build.ninja build-comgr/build.ninja build-device-libs/build.ninja + touch "$LLVM_BUILD/build.ninja" "$COMGR_BUILD/build.ninja" "$DEVLIBS_BUILD/build.ninja" - name: Test - SPIRV Translator (check-amd-llvm-spirv) [PR head] id: check_spirv_xlator continue-on-error: true run: | set -o pipefail - ninja -C build check-amd-llvm-spirv 2>&1 | tee build/check-amd-llvm-spirv.log + ninja -C "$LLVM_BUILD" check-amd-llvm-spirv 2>&1 | tee "$LLVM_BUILD/check-amd-llvm-spirv.log" - name: Capture PR head translator failures if: always() run: | - grep -oE '^FAIL: LLVM_SPIRV :: \S+' build/check-amd-llvm-spirv.log \ - | sort -u > build/spirv-fails-pr.txt - echo "PR head failures:"; cat build/spirv-fails-pr.txt + grep -oE '^FAIL: LLVM_SPIRV :: \S+' "$LLVM_BUILD/check-amd-llvm-spirv.log" \ + | sort -u > "$LLVM_BUILD/spirv-fails-pr.txt" + echo "PR head failures:"; cat "$LLVM_BUILD/spirv-fails-pr.txt" - name: Switch llvm-project to amd-staging tip for baseline # PRs on llvm-project change llvm/clang/lld, not the translator, so the @@ -385,29 +398,29 @@ jobs: run: | set -o pipefail # Re-configure to pick up any CMakeLists / file-list changes in the swap - cmake -G Ninja -S llvm-project/llvm -B build - ninja -C build check-amd-llvm-spirv 2>&1 \ - | tee build/check-amd-llvm-spirv-baseline.log + cmake -G Ninja -S llvm-project/llvm -B "$LLVM_BUILD" + ninja -C "$LLVM_BUILD" check-amd-llvm-spirv 2>&1 \ + | tee "$LLVM_BUILD/check-amd-llvm-spirv-baseline.log" - name: Capture baseline translator failures # Split from the lit step so a non-zero ninja exit (lit failures + # set -o pipefail under bash -e) doesn't skip this grep. if: always() run: | - grep -oE '^FAIL: LLVM_SPIRV :: \S+' build/check-amd-llvm-spirv-baseline.log \ - | sort -u > build/spirv-fails-baseline.txt - echo "Baseline failures:"; cat build/spirv-fails-baseline.txt + grep -oE '^FAIL: LLVM_SPIRV :: \S+' "$LLVM_BUILD/check-amd-llvm-spirv-baseline.log" \ + | sort -u > "$LLVM_BUILD/spirv-fails-baseline.txt" + echo "Baseline failures:"; cat "$LLVM_BUILD/spirv-fails-baseline.txt" # Fail the job on real regressions (PR head FAILs that aren't on # amd-staging baseline). Pre-existing baseline failures don't block. - name: Gate - new translator lit failures if: always() run: | - if [ ! -f build/spirv-fails-pr.txt ] || [ ! -f build/spirv-fails-baseline.txt ]; then + if [ ! -f "$LLVM_BUILD/spirv-fails-pr.txt" ] || [ ! -f "$LLVM_BUILD/spirv-fails-baseline.txt" ]; then echo "::warning::Could not compute new-failure delta (missing pr.txt or baseline.txt); not gating." exit 0 fi - new=$(comm -23 build/spirv-fails-pr.txt build/spirv-fails-baseline.txt) + new=$(comm -23 "$LLVM_BUILD/spirv-fails-pr.txt" "$LLVM_BUILD/spirv-fails-baseline.txt") if [ -n "$new" ]; then count=$(printf '%s\n' "$new" | wc -l) echo "::error::$count new translator lit failure(s) introduced by this PR:" @@ -448,12 +461,12 @@ jobs: with: repository: ROCm/SPIRV-LLVM-Translator ref: amd-staging - path: llvm-project/llvm/projects/SPIRV-LLVM-Translator + path: ${{ env.TRANSLATOR_SRC }} fetch-depth: 1 persist-credentials: false - name: Download build tree artifact - uses: actions/download-artifact@v7 + uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0 with: name: linux-build-tree @@ -462,10 +475,10 @@ jobs: - name: Untar build trees run: | tar -xmf linux-build-tree.tar - touch build/build.ninja build-comgr/build.ninja build-device-libs/build.ninja + touch "$LLVM_BUILD/build.ninja" "$COMGR_BUILD/build.ninja" "$DEVLIBS_BUILD/build.ninja" - name: Test - LLVM SPIRV backend (check-llvm-codegen-spirv) - run: ninja -C build check-llvm-codegen-spirv + run: ninja -C "$LLVM_BUILD" check-llvm-codegen-spirv # ===================================================================== # Test - Comgr (lit + gtest + ctest) @@ -499,7 +512,7 @@ jobs: with: repository: ROCm/SPIRV-LLVM-Translator ref: amd-staging - path: llvm-project/llvm/projects/SPIRV-LLVM-Translator + path: ${{ env.TRANSLATOR_SRC }} fetch-depth: 1 persist-credentials: false @@ -513,14 +526,14 @@ jobs: - name: Untar build trees run: | tar -xmf linux-build-tree.tar - touch build/build.ninja build-comgr/build.ninja build-device-libs/build.ninja + touch "$LLVM_BUILD/build.ninja" "$COMGR_BUILD/build.ninja" "$DEVLIBS_BUILD/build.ninja" - name: Test - Comgr (check-comgr) # check-comgr depends on test-lit (runs lit suite) and test-unit # (runs gtest binaries via its COMMAND block), then runs ctest for # the legacy C tests. Single target = all three test layers. id: check_comgr - run: ninja -C build-comgr check-comgr + run: ninja -C "$COMGR_BUILD" check-comgr - name: Show failed Comgr ctest output # check-comgr invokes ctest without --output-on-failure, so failures @@ -531,7 +544,7 @@ jobs: if: failure() && steps.check_comgr.conclusion == 'failure' env: AMD_COMGR_REDIRECT_LOGS: stderr - run: ctest --test-dir build-comgr --output-on-failure --rerun-failed + run: ctest --test-dir "$COMGR_BUILD" --output-on-failure --rerun-failed # ===================================================================== # Test - rocm-examples @@ -570,8 +583,8 @@ jobs: # HIP-Basic. - name: ROCm Examples build HIP-Basic run: | - STAGING=$PWD/staging - LLVM_PATH=$PWD/build + STAGING=$PWD/$STAGING + LLVM_PATH=$PWD/$LLVM_BUILD cmake -S rocm-examples/HIP-Basic -B examples-build-hip-basic \ -DCMAKE_CXX_COMPILER=$LLVM_PATH/bin/clang++ \ -DCMAKE_HIP_COMPILER=$LLVM_PATH/bin/clang++ \ @@ -586,15 +599,15 @@ jobs: - name: ROCm Examples run HIP-Basic env: - LD_LIBRARY_PATH: ${{ github.workspace }}/staging/lib + LD_LIBRARY_PATH: ${{ github.workspace }}/${{ env.STAGING }}/lib run: | ctest --test-dir examples-build-hip-basic --output-on-failure -j $(nproc) -E '^hip_cooperative_groups$' # Applications. - name: ROCm Examples build Applications run: | - STAGING=$PWD/staging - LLVM_PATH=$PWD/build + STAGING=$PWD/$STAGING + LLVM_PATH=$PWD/$LLVM_BUILD cmake -S rocm-examples/Applications -B examples-build-Applications \ -DCMAKE_CXX_COMPILER=$LLVM_PATH/bin/clang++ \ -DCMAKE_HIP_COMPILER=$LLVM_PATH/bin/clang++ \ @@ -608,15 +621,15 @@ jobs: - name: ROCm Examples run Applications env: - LD_LIBRARY_PATH: ${{ github.workspace }}/staging/lib + LD_LIBRARY_PATH: ${{ github.workspace }}/${{ env.STAGING }}/lib run: | ctest --test-dir examples-build-Applications --output-on-failure -j $(nproc) -E '^(applications_optical_flow|applications_monte_carlo_pi)$' # Libraries. - name: ROCm Examples build Libraries run: | - STAGING=$PWD/staging - LLVM_PATH=$PWD/build + STAGING=$PWD/$STAGING + LLVM_PATH=$PWD/$LLVM_BUILD cmake -S rocm-examples/Libraries -B examples-build-Libraries \ -DCMAKE_CXX_COMPILER=$LLVM_PATH/bin/clang++ \ -DCMAKE_HIP_COMPILER=$LLVM_PATH/bin/clang++ \ @@ -636,6 +649,6 @@ jobs: - name: ROCm Examples run Libraries env: - LD_LIBRARY_PATH: ${{ github.workspace }}/staging/lib + LD_LIBRARY_PATH: ${{ github.workspace }}/${{ env.STAGING }}/lib run: | ctest --test-dir examples-build-Libraries --output-on-failure -j $(nproc) -E '^(hiprand_simple_distributions_cpp|rocrand_simple_distributions_cpp)$' From ba130fee7819f70633ef42c3b886aa2b0946de79 Mon Sep 17 00:00:00 2001 From: idubinov Date: Wed, 1 Jul 2026 09:59:27 +0200 Subject: [PATCH 17/19] Apply suggestion from @aobolensk Co-authored-by: Arseniy Obolenskiy --- .github/workflows/spirv-ci-linux-amd-staging.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/spirv-ci-linux-amd-staging.yml b/.github/workflows/spirv-ci-linux-amd-staging.yml index 73a759ea78da5..fc79058a78821 100644 --- a/.github/workflows/spirv-ci-linux-amd-staging.yml +++ b/.github/workflows/spirv-ci-linux-amd-staging.yml @@ -107,7 +107,6 @@ jobs: - name: Build Comgr run: ninja -C "$COMGR_BUILD" amd_comgr - # Builds ROCR-Runtime (libhsa-runtime64.so) and CLR (libamdhip64.so). - name: Install build deps for runtime build run: | dnf install -y --setopt=install_weak_deps=False \ From 8258303e5d6739df810fecf34ff3e927351f2f6c Mon Sep 17 00:00:00 2001 From: idubinov Date: Wed, 1 Jul 2026 03:15:35 -0500 Subject: [PATCH 18/19] Add TODO for unsupported examples --- .github/workflows/spirv-ci-linux-amd-staging.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/spirv-ci-linux-amd-staging.yml b/.github/workflows/spirv-ci-linux-amd-staging.yml index fc79058a78821..40d109c1353f1 100644 --- a/.github/workflows/spirv-ci-linux-amd-staging.yml +++ b/.github/workflows/spirv-ci-linux-amd-staging.yml @@ -600,7 +600,8 @@ jobs: env: LD_LIBRARY_PATH: ${{ github.workspace }}/${{ env.STAGING }}/lib run: | - ctest --test-dir examples-build-hip-basic --output-on-failure -j $(nproc) -E '^hip_cooperative_groups$' + ctest --test-dir examples-build-hip-basic --output-on-failure -j $(nproc) \ + -E '^hip_cooperative_groups$' # TODO: ISSUE #3048 # Applications. - name: ROCm Examples build Applications @@ -622,7 +623,8 @@ jobs: env: LD_LIBRARY_PATH: ${{ github.workspace }}/${{ env.STAGING }}/lib run: | - ctest --test-dir examples-build-Applications --output-on-failure -j $(nproc) -E '^(applications_optical_flow|applications_monte_carlo_pi)$' + ctest --test-dir examples-build-Applications --output-on-failure -j $(nproc) \ + -E '^(applications_optical_flow|applications_monte_carlo_pi)$' # TODO: ISSUE #3048 # Libraries. - name: ROCm Examples build Libraries @@ -650,4 +652,5 @@ jobs: env: LD_LIBRARY_PATH: ${{ github.workspace }}/${{ env.STAGING }}/lib run: | - ctest --test-dir examples-build-Libraries --output-on-failure -j $(nproc) -E '^(hiprand_simple_distributions_cpp|rocrand_simple_distributions_cpp)$' + ctest --test-dir examples-build-Libraries --output-on-failure -j $(nproc) \ + -E '^(hiprand_simple_distributions_cpp|rocrand_simple_distributions_cpp)$' # TODO: ISSUE #3048 From 3f488c075425ed9b09b0473b19f4e701ab8d2f44 Mon Sep 17 00:00:00 2001 From: idubinov Date: Wed, 1 Jul 2026 03:19:54 -0500 Subject: [PATCH 19/19] Correct issue number --- .github/workflows/spirv-ci-linux-amd-staging.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/spirv-ci-linux-amd-staging.yml b/.github/workflows/spirv-ci-linux-amd-staging.yml index 40d109c1353f1..9c2be006a392e 100644 --- a/.github/workflows/spirv-ci-linux-amd-staging.yml +++ b/.github/workflows/spirv-ci-linux-amd-staging.yml @@ -624,7 +624,7 @@ jobs: LD_LIBRARY_PATH: ${{ github.workspace }}/${{ env.STAGING }}/lib run: | ctest --test-dir examples-build-Applications --output-on-failure -j $(nproc) \ - -E '^(applications_optical_flow|applications_monte_carlo_pi)$' # TODO: ISSUE #3048 + -E '^(applications_optical_flow|applications_monte_carlo_pi)$' # TODO: ISSUE #3143 # Libraries. - name: ROCm Examples build Libraries @@ -653,4 +653,4 @@ jobs: LD_LIBRARY_PATH: ${{ github.workspace }}/${{ env.STAGING }}/lib run: | ctest --test-dir examples-build-Libraries --output-on-failure -j $(nproc) \ - -E '^(hiprand_simple_distributions_cpp|rocrand_simple_distributions_cpp)$' # TODO: ISSUE #3048 + -E '^(hiprand_simple_distributions_cpp|rocrand_simple_distributions_cpp)$' # TODO: ISSUE #3143