Skip to content

[CI][SYCL][Do not merge] Add CI workflow to run compute-benchmarks on incoming syclos PRs #11135

[CI][SYCL][Do not merge] Add CI workflow to run compute-benchmarks on incoming syclos PRs

[CI][SYCL][Do not merge] Add CI workflow to run compute-benchmarks on incoming syclos PRs #11135

# TODO When merging, ensure e2e tests are fully restored!
name: SYCL Pre Commit on Linux
on:
# We rely on "Fork pull request workflows from outside collaborators" -
# "Require approval for all outside collaborators" at
# https://github.com/intel/llvm/settings/actions for security.
pull_request:
branches:
- sycl
- sycl-devops-pr/**
- sycl-rel-**
# Do not run builds if changes are only in the following locations
paths-ignore:
- '.github/ISSUE_TEMPLATE/**'
- '.github/CODEOWNERS'
- 'sycl/doc/**'
- 'sycl/gdb/**'
- 'clang/docs/**'
- '**.md'
- '**.rst'
- '.github/workflows/sycl-windows-*.yml'
- '.github/workflows/sycl-macos-*.yml'
- '.github/workflows/sycl-nightly.yml'
- 'devops/containers/**'
- 'devops/actions/build_container/**'
concurrency:
# Cancel a currently running workflow from the same PR, branch or tag.
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
permissions: read-all
jobs:
detect_changes:
uses: ./.github/workflows/sycl-detect-changes.yml
build:
needs: [detect_changes]
if: always() && success()
uses: ./.github/workflows/sycl-linux-build.yml
with:
build_ref: ${{ github.sha }}
merge_ref: ''
build_cache_root: "/__w/"
build_artifact_suffix: "default"
build_cache_suffix: "default"
changes: ${{ needs.detect_changes.outputs.filters }}
# determine_arc_tests:
# name: Decide which Arc tests to run
# needs: [build, detect_changes]
# if: ${{ always() && !cancelled() && needs.build.outputs.build_conclusion == 'success' }}
# runs-on: [Linux, aux-tasks]
# timeout-minutes: 3
# outputs:
# arc_tests: ${{ steps.arc_tests.outputs.arc_tests }}
# steps:
# - name: Determine Arc tests
# id: arc_tests
# run: |
# if [ "${{ contains(needs.detect_changes.outputs.filters, 'devigccfg') }}" == "true" ]; then
# echo 'arc_tests="(ESIMD|InvokeSimd|Matrix)/"' >> "$GITHUB_OUTPUT"
# elif [ "${{ contains(needs.detect_changes.outputs.filters, 'drivers') }}" == "true" ]; then
# echo 'arc_tests=""' >> "$GITHUB_OUTPUT"
# elif [ "${{ contains(needs.detect_changes.outputs.filters, 'esimd') }}" == "true" ]; then
# echo 'arc_tests="(ESIMD|InvokeSimd|Matrix)/"' >> "$GITHUB_OUTPUT"
# else
# echo 'arc_tests="Matrix/"' >> "$GITHUB_OUTPUT"
# fi
# test:
# needs: [build, detect_changes, determine_arc_tests]
# if: ${{ always() && !cancelled() && needs.build.outputs.build_conclusion == 'success' }}
# strategy:
# fail-fast: false
# matrix:
# include:
# - name: NVIDIA/CUDA
# runner: '["Linux", "cuda"]'
# image: ghcr.io/intel/llvm/ubuntu2204_build:latest
# image_options: -u 1001 --gpus all --cap-add SYS_ADMIN
# target_devices: ext_oneapi_cuda:gpu
# - name: Intel
# runner: '["Linux", "gen12"]'
# image: ghcr.io/intel/llvm/ubuntu2204_intel_drivers:latest
# image_options: -u 1001 --device=/dev/dri --privileged --cap-add SYS_ADMIN
# target_devices: level_zero:gpu;opencl:gpu;opencl:cpu
# reset_intel_gpu: true
# install_drivers: ${{ contains(needs.detect_changes.outputs.filters, 'drivers') }}
# extra_lit_opts: --param gpu-intel-gen12=True
# - name: E2E tests on Intel Arc A-Series Graphics
# runner: '["Linux", "arc"]'
# image: ghcr.io/intel/llvm/ubuntu2204_intel_drivers:latest
# image_options: -u 1001 --device=/dev/dri --privileged --cap-add SYS_ADMIN
# target_devices: level_zero:gpu;opencl:gpu
# reset_intel_gpu: true
# install_drivers: ${{ contains(needs.detect_changes.outputs.filters, 'drivers') }}
# extra_lit_opts: --param matrix-xmx8=True --param gpu-intel-dg2=True
# env: '{"LIT_FILTER":${{ needs.determine_arc_tests.outputs.arc_tests }} }'
# - name: E2E tests with dev igc on Intel Arc A-Series Graphics
# runner: '["Linux", "arc"]'
# image: ghcr.io/intel/llvm/ubuntu2204_intel_drivers:devigc
# image_options: -u 1001 --device=/dev/dri --privileged --cap-add SYS_ADMIN
# target_devices: level_zero:gpu;opencl:gpu
# reset_intel_gpu: true
# install_drivers: >-
# ${{ contains(needs.detect_changes.outputs.filters, 'drivers') ||
# contains(needs.detect_changes.outputs.filters, 'devigccfg') }}
# use_dev_igc: ${{ contains(needs.detect_changes.outputs.filters, 'devigccfg') }}
# extra_lit_opts: --param matrix-xmx8=True --param gpu-intel-dg2=True
# env: '{"LIT_FILTER":${{ needs.determine_arc_tests.outputs.arc_tests }} }'
# # Run only if the PR does not have the 'ci-no-devigc' label.
# skip_run: ${{ contains(github.event.pull_request.labels.*.name, 'ci-no-devigc') }}
#
# uses: ./.github/workflows/sycl-linux-run-tests.yml
# with:
# name: ${{ matrix.name }}
# runner: ${{ matrix. runner }}
# image: ${{ matrix.image }}
# image_options: ${{ matrix.image_options }}
# target_devices: ${{ matrix.target_devices }}
# reset_intel_gpu: ${{ matrix.reset_intel_gpu }}
# install_drivers: ${{ matrix.install_drivers }}
# use_dev_igc: ${{ matrix.use_dev_igc }}
# extra_lit_opts: ${{ matrix.extra_lit_opts }}
# env: ${{ matrix.env || '{}' }}
# skip_run: ${{ matrix.skip_run || 'false' }}
# tests_selector: "benchmark"
#
# ref: ${{ github.sha }}
# merge_ref: ''
#
# sycl_toolchain_artifact: sycl_linux_default
# sycl_toolchain_archive: ${{ needs.build.outputs.artifact_archive_name }}
# sycl_toolchain_decompress_command: ${{ needs.build.outputs.artifact_decompress_command }}
#
#
# test-perf:
# needs: [build, detect_changes]
# if: |
# always() && !cancelled()
# && needs.build.outputs.build_conclusion == 'success'
# && (contains(github.event.pull_request.labels.*.name, 'run-perf-tests')
# || contains(needs.detect_changes.outputs.filters, 'perf-tests'))
# strategy:
# fail-fast: false
# matrix:
# include:
# - name: Intel GEN12 Graphics system
# runner: '["Linux", "gen12"]'
# image: ghcr.io/intel/llvm/ubuntu2204_intel_drivers:latest
# image_extra_opts: --device=/dev/dri
# reset_intel_gpu: true
# - name: Intel Arc A-Series Graphics system
# runner: '["Linux", "arc"]'
# image: ghcr.io/intel/llvm/ubuntu2204_intel_drivers:latest
# image_extra_opts: --device=/dev/dri
# reset_intel_gpu: true
# - name: AMD system
# runner: '["Linux", "amdgpu"]'
# image: ghcr.io/intel/llvm/ubuntu2204_build:latest
# image_extra_opts: --device=/dev/dri --device=/dev/kfd
# extra_cmake_args: -DHIP_PLATFORM="AMD" -DAMD_ARCH="gfx1031"
# - name: CUDA system
# runner: '["Linux", "cuda"]'
# image: ghcr.io/intel/llvm/ubuntu2204_build:latest
# image_extra_opts: --gpus all
# uses: ./.github/workflows/sycl-linux-run-tests.yml
# with:
# name: Perf tests on ${{ matrix.name }}
# runner: ${{ matrix. runner }}
# image: ${{ matrix.image }}
# image_options: -u 1001 --privileged --cap-add SYS_ADMIN ${{ matrix.image_extra_opts }}
# target_devices: all
# reset_intel_gpu: ${{ matrix.reset_intel_gpu }}
#
# env: '{"LIT_FILTER":"PerformanceTests/"}'
# extra_lit_opts: -a -j 1 --param enable-perf-tests=True
# extra_cmake_args: ${{ matrix.extra_cmake_args }}
#
# ref: ${{ github.sha }}
# merge_ref: ''
#
# sycl_toolchain_artifact: sycl_linux_default
# sycl_toolchain_archive: ${{ needs.build.outputs.artifact_archive_name }}
# sycl_toolchain_decompress_command: ${{ needs.build.outputs.artifact_decompress_command }}
benchmark:
needs: [build, detect_changes ]
permissions:
contents: write
if: ${{ always() && !cancelled() && needs.build.outputs.build_conclusion == 'success' }}
strategy:
fail-fast: false
matrix:
include:
# - name: NVIDIA/CUDA
# runner: '["Linux", "cuda"]'
# image: ghcr.io/intel/llvm/ubuntu2204_build:latest
# image_options: -u 1001 --gpus all --cap-add SYS_ADMIN
# target_devices: ext_oneapi_cuda:gpu
- name: Run benchmarks on Intel
runner: '["Linux", "gen12"]'
image: ghcr.io/intel/llvm/ubuntu2204_intel_drivers:latest
image_options: -u 1001 --device=/dev/dri -v /dev/dri/by-path:/dev/dri/by-path --privileged --cap-add SYS_ADMIN
target_devices: level_zero:gpu;opencl:gpu;opencl:cpu
env: |
{
"RESET_GPU": "1"
}
install_drivers: ${{ contains(needs.detect_changes.outputs.filters, 'drivers') }}
extra_lit_opts: --param gpu-intel-gen12=True
# - name: E2E tests on Intel Arc A-Series Graphics
# runner: '["Linux", "arc"]'
# image: ghcr.io/intel/llvm/ubuntu2204_intel_drivers:latest
# image_options: -u 1001 --device=/dev/dri -v /dev/dri/by-path:/dev/dri/by-path --privileged --cap-add SYS_ADMIN
# target_devices: level_zero:gpu;opencl:gpu
# reset_intel_gpu: true
# extra_lit_opts: --param matrix-xmx8=True --param gpu-intel-dg2=True
# env: '{"LIT_FILTER":${{ needs.determine_arc_tests.outputs.arc_tests }} }'
# - name: E2E tests with dev igc on Intel Arc A-Series Graphics
# runner: '["Linux", "arc"]'
# image: ghcr.io/intel/llvm/ubuntu2204_intel_drivers:devigc
# image_options: -u 1001 --device=/dev/dri -v /dev/dri/by-path:/dev/dri/by-path --privileged --cap-add SYS_ADMIN
# target_devices: level_zero:gpu;opencl:gpu
# reset_intel_gpu: true
# extra_lit_opts: --param matrix-xmx8=True --param gpu-intel-dg2=True
# env: '{"LIT_FILTER":${{ needs.determine_arc_tests.outputs.arc_tests }} }'
# use_igc_dev: true
# TODO switch back to e2e
uses: ./.github/workflows/sycl-linux-benchmark.yml
with:
name: ${{ matrix.name }}
runner: ${{ matrix.runner }}
image: ${{ matrix.image }}
image_options: ${{ matrix.image_options }}
target_devices: ${{ matrix.target_devices }}
# reset_intel_gpu: ${{ matrix.reset_intel_gpu }}
#extra_lit_opts: ${{ matrix.extra_lit_opts }}
env: ${{ matrix.env || '{}' }}
# # Do not install drivers on AMD and CUDA runners.
# install_igc_driver: >-
# ${{ !contains(matrix.target_devices, 'ext_oneapi_cuda') &&
# !contains(matrix.target_devices, 'ext_oneapi_hip') &&
# contains(needs.detect_changes.outputs.filters, 'drivers') }}
# install_dev_igc_driver: >-
# ${{ !contains(matrix.target_devices, 'ext_oneapi_cuda') &&
# !contains(matrix.target_devices, 'ext_oneapi_hip') &&
# matrix.use_igc_dev && contains(needs.detect_changes.outputs.filters, 'devigccfg') ||
# 'false' }}
# Run only if the PR does not have the 'ci-no-devigc' label.
# skip_run: ${{matrix.use_igc_dev && contains(github.event.pull_request.labels.*.name, 'ci-no-devigc') || 'false'}}
ref: ${{ github.sha }}
merge_ref: ''
sycl_toolchain_artifact: sycl_linux_default
sycl_toolchain_archive: ${{ needs.build.outputs.artifact_archive_name }}
sycl_toolchain_decompress_command: ${{ needs.build.outputs.artifact_decompress_command }}
# test-perf:
# needs: [build, detect_changes]
# if: |
# always() && !cancelled()
# && needs.build.outputs.build_conclusion == 'success'
# && (contains(github.event.pull_request.labels.*.name, 'run-perf-tests')
# || contains(needs.detect_changes.outputs.filters, 'perf-tests'))
# strategy:
# fail-fast: false
# matrix:
# include:
# - name: Intel GEN12 Graphics system
# runner: '["Linux", "gen12"]'
# image: ghcr.io/intel/llvm/ubuntu2204_intel_drivers:latest
# image_extra_opts: --device=/dev/dri
# reset_intel_gpu: true
# - name: Intel Arc A-Series Graphics system
# runner: '["Linux", "arc"]'
# image: ghcr.io/intel/llvm/ubuntu2204_intel_drivers:latest
# image_extra_opts: --device=/dev/dri
# reset_intel_gpu: true
# - name: AMD system
# runner: '["Linux", "amdgpu"]'
# image: ghcr.io/intel/llvm/ubuntu2204_build:latest
# image_extra_opts: --device=/dev/dri --device=/dev/kfd
# extra_cmake_args: -DHIP_PLATFORM="AMD" -DAMD_ARCH="gfx1031"
# - name: CUDA system
# runner: '["Linux", "cuda"]'
# image: ghcr.io/intel/llvm/ubuntu2204_build:latest
# image_extra_opts: --gpus all
# uses: ./.github/workflows/sycl-linux-run-tests.yml
# with:
# name: Perf tests on ${{ matrix.name }}
# runner: ${{ matrix. runner }}
# image: ${{ matrix.image }}
# image_options: -u 1001 --privileged --cap-add SYS_ADMIN ${{ matrix.image_extra_opts }}
# target_devices: all
# reset_intel_gpu: ${{ matrix.reset_intel_gpu }}
#
# env: '{"LIT_FILTER":"PerformanceTests/"}'
# extra_lit_opts: -a -j 1 --param enable-perf-tests=True
# extra_cmake_args: ${{ matrix.extra_cmake_args }}