From 960ce5faebba65de0b88ac2defd4993e8ffcb59e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Stolarczuk?= Date: Wed, 12 Nov 2025 14:34:05 +0100 Subject: [PATCH 1/4] [CI][Bench] Remove now redundant W/A to install custom L0 --- devops/actions/run-tests/benchmark/action.yml | 26 ------------------- 1 file changed, 26 deletions(-) diff --git a/devops/actions/run-tests/benchmark/action.yml b/devops/actions/run-tests/benchmark/action.yml index 826e5bbc8e77c..f44fc00951a1a 100644 --- a/devops/actions/run-tests/benchmark/action.yml +++ b/devops/actions/run-tests/benchmark/action.yml @@ -145,32 +145,6 @@ runs: cd - - echo "::endgroup::" - # Install level zero v1.25.2 - # This is to have the latest level zero required by Compute Benchmarks - # Remove this w/a once the sycl nightly images are updated to have level zero v1.25.2 - - name: Install level zero v1.25.2 - shell: bash - run: | - echo "::group::checkout_level_zero" - # Checkout Level Zero at build ref: - wget https://github.com/oneapi-src/level-zero/archive/refs/tags/v1.25.2.tar.gz -O level-zero-v1.25.2.tar.gz - tar -xvf level-zero-v1.25.2.tar.gz - cd level-zero-1.25.2 - - echo "::endgroup::" - echo "::group::configure_level_zero" - - cmake -DCMAKE_BUILD_TYPE=Release \ - -Bbuild - - echo "::endgroup::" - echo "::group::build_and_install_level_zero" - - cmake --build build -j "$(nproc)" - sudo cmake --install build - - cd - echo "::endgroup::" # Linux tools installed during docker creation may not match the self-hosted # kernel version, so we need to install the correct version here. From 5b4d012dc00657f02c051f7f2bbeae5ed40166ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Stolarczuk?= Date: Wed, 12 Nov 2025 14:59:41 +0100 Subject: [PATCH 2/4] [CI][Bench] Bring back names in steps and order groups a little --- devops/actions/run-tests/benchmark/action.yml | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/devops/actions/run-tests/benchmark/action.yml b/devops/actions/run-tests/benchmark/action.yml index f44fc00951a1a..168c402390288 100644 --- a/devops/actions/run-tests/benchmark/action.yml +++ b/devops/actions/run-tests/benchmark/action.yml @@ -113,10 +113,12 @@ runs: # modified output the entire sycl build dir as an artifact, in which the # intermediate files required can be stitched together from the build files. # However, this is not exactly "clean" or "fun to maintain"... - - name: Build LLVM + - name: Build Unified Runtime shell: bash run: | - echo "::group::checkout_llvm" + # Build Unified Runtime + echo "::group::checkout_llvm_ur" + # Sparse-checkout UR at build ref: git clone --depth 1 --no-checkout https://github.com/intel/llvm ur cd ur @@ -124,10 +126,10 @@ runs: git sparse-checkout set unified-runtime git fetch origin ${{ inputs.build_ref }} git checkout FETCH_HEAD + echo "::endgroup::" - echo "::group::configure_llvm" + echo "::group::configure_llvm_ur" - # Configure UR mkdir build install cmake -DCMAKE_BUILD_TYPE=Release \ -Sunified-runtime \ @@ -138,7 +140,7 @@ runs: -DUR_BUILD_ADAPTER_L0_V2=ON echo "::endgroup::" - echo "::group::build_and_install_llvm" + echo "::group::build_and_install_llvm_ur" cmake --build build -j "$(nproc)" cmake --install build @@ -151,6 +153,7 @@ runs: - name: Install perf in version matching the host kernel shell: bash run: | + # Install perf in version matching the host kernel echo "::group::install_linux_tools" sudo apt-get update sudo apt-get install -y linux-tools-$(uname -r) @@ -175,8 +178,8 @@ runs: SAVE_PREFIX: ${{ inputs.save_name }} shell: bash run: | - # TODO generate summary + display helpful message here - export CMPLR_ROOT=./toolchain + # Build and run benchmarks + echo "::group::install_python_deps" echo "Installing python dependencies..." # Using --break-system-packages because: @@ -186,9 +189,11 @@ runs: # - apt is unable to install anything due to unresolved dpkg dependencies, # as a result of how the sycl nightly images are created pip install --user --break-system-packages -r ./devops/scripts/benchmarks/requirements.txt + echo "::endgroup::" - echo "::group::sycl_ls" + echo "::group::establish_parameters_and_vars" + export CMPLR_ROOT=./toolchain # By default, the benchmark scripts forceload level_zero FORCELOAD_ADAPTER="${ONEAPI_DEVICE_SELECTOR%%:*}" echo "Adapter: $FORCELOAD_ADAPTER" @@ -222,6 +227,8 @@ runs: # docker images are built nightly. export COMPUTE_RUNTIME_TAG_CACHE="$(cat ./devops/dependencies.json | jq -r .linux.compute_runtime.github_tag)" + echo "::endgroup::" + echo "::group::sycl_ls" sycl-ls echo "::endgroup::" echo "::group::run_benchmarks" @@ -259,7 +266,11 @@ runs: echo "::endgroup::" - LLVM_BENCHMARKS_UNIT_TESTING=1 COMPUTE_BENCHMARKS_BUILD_PATH=$WORKDIR/compute-benchmarks-build python3 ./devops/scripts/benchmarks/tests/test_integration.py + # Run integration tests + # NOTE: Each integration test prints its own group name as part of test script + export LLVM_BENCHMARKS_UNIT_TESTING=1 + export COMPUTE_BENCHMARKS_BUILD_PATH=$WORKDIR/compute-benchmarks-build + python3 ./devops/scripts/benchmarks/tests/test_integration.py - name: Cache changes and upload github summary if: always() From 236698d10c4cd3826cd949d9ac66a2bf388254c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Stolarczuk?= Date: Wed, 12 Nov 2025 18:11:58 +0100 Subject: [PATCH 3/4] [CI][Bench] Make sycl-ls verbose, to print more info on used sycl --- devops/actions/run-tests/benchmark/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devops/actions/run-tests/benchmark/action.yml b/devops/actions/run-tests/benchmark/action.yml index 168c402390288..9e67c672c43bd 100644 --- a/devops/actions/run-tests/benchmark/action.yml +++ b/devops/actions/run-tests/benchmark/action.yml @@ -229,7 +229,7 @@ runs: echo "::endgroup::" echo "::group::sycl_ls" - sycl-ls + sycl-ls --verbose echo "::endgroup::" echo "::group::run_benchmarks" From 71d8fc4710c1b69d83e430802af859722b7aa7bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Stolarczuk?= Date: Wed, 12 Nov 2025 17:37:15 +0100 Subject: [PATCH 4/4] [CI][Bench] Remove toolchain_artifact name in PR job --- .github/workflows/sycl-ur-perf-benchmarking.yml | 3 --- devops/actions/run-tests/benchmark/action.yml | 3 ++- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/sycl-ur-perf-benchmarking.yml b/.github/workflows/sycl-ur-perf-benchmarking.yml index 5e1f949222419..63dd2c2379a2a 100644 --- a/.github/workflows/sycl-ur-perf-benchmarking.yml +++ b/.github/workflows/sycl-ur-perf-benchmarking.yml @@ -259,7 +259,4 @@ jobs: benchmark_dry_run: true benchmark_exit_on_failure: true repo_ref: ${{ github.sha }} - toolchain_artifact: ${{ needs.build_pr.outputs.toolchain_artifact }} - toolchain_artifact_filename: ${{ needs.build_pr.outputs.toolchain_artifact_filename }} - toolchain_decompress_command: ${{ needs.build_pr.outputs.toolchain_decompress_command }} # END benchmark framework builds and runs on PRs path diff --git a/devops/actions/run-tests/benchmark/action.yml b/devops/actions/run-tests/benchmark/action.yml index 9e67c672c43bd..8ea3265ddb626 100644 --- a/devops/actions/run-tests/benchmark/action.yml +++ b/devops/actions/run-tests/benchmark/action.yml @@ -2,7 +2,8 @@ name: 'Run benchmarks' # This action assumes the following prerequisites: # -# - SYCL is placed in ./toolchain -- TODO change this +# - SYCL is accessible in the system (nightly image provides it within /opt/sycl), +# or SYCL is placed in ./toolchain (TODO: change this??). The second option has higher priority. # - /devops has been checked out in ./devops. # - env.GITHUB_TOKEN was properly set, because according to Github, that's # apparently the recommended way to pass a secret into a github action: