Skip to content

Commit 3c00aee

Browse files
[CI] Add backward ABI-compatibility testing to pre-commit
1 parent f1017d0 commit 3c00aee

File tree

2 files changed

+75
-163
lines changed

2 files changed

+75
-163
lines changed

.github/workflows/sycl-linux-precommit.yml

Lines changed: 28 additions & 163 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,8 @@ concurrency:
4040
permissions: read-all
4141

4242
jobs:
43-
detect_changes:
44-
uses: ./.github/workflows/sycl-detect-changes.yml
45-
4643
build:
4744
name: Self build
48-
needs: [detect_changes]
4945
if: always() && success()
5046
uses: ./.github/workflows/sycl-linux-build.yml
5147
with:
@@ -56,172 +52,41 @@ jobs:
5652
build_image: "ghcr.io/intel/llvm/sycl_ubuntu2404_nightly:latest"
5753
cc: clang
5854
cxx: clang++
59-
changes: ${{ needs.detect_changes.outputs.filters }}
55+
changes: '[]'
56+
build_configure_extra_args: --disable-preview-lib
6057

6158
toolchain_artifact: sycl_linux_default
62-
e2e_binaries_artifact: e2e_bin
63-
e2e_binaries_preview_artifact: e2e_bin_preview
64-
65-
# If a PR changes CUDA adapter, run the build on Ubuntu 22.04 as well.
66-
# Ubuntu 22.04 container has CUDA 12.1 installed while Ubuntu 24.0 image
67-
# has CUDA 12.6.1 installed.
68-
# The idea is to ensure that the code works with both CUDA versions.
69-
build_ubuntu2204:
70-
needs: [detect_changes]
71-
if: always() && !cancelled() && contains(needs.detect_changes.outputs.filters, 'ur_cuda_adapter')
72-
uses: ./.github/workflows/sycl-linux-build.yml
73-
with:
74-
build_ref: ${{ github.sha }}
75-
build_cache_root: "/__w/"
76-
build_cache_suffix: "ubuntu22"
77-
build_image: "ghcr.io/intel/llvm/ubuntu2204_build:latest"
78-
changes: ${{ needs.detect_changes.outputs.filters }}
79-
80-
toolchain_artifact: sycl_linux_ubuntu22
8159

82-
run_prebuilt_e2e_tests:
83-
needs: [build, detect_changes]
60+
compat_read_exclude:
61+
name: Read compatibility testing exclude list
62+
runs-on: [Linux, build]
63+
outputs:
64+
FILTER: ${{ steps.result.outputs.FILTER }}
65+
steps:
66+
- uses: actions/checkout@v4
67+
with:
68+
sparse-checkout: |
69+
devops/
70+
- name: Register cleanup after job is finished
71+
uses: ./devops/actions/cleanup
72+
- id: result
73+
shell: bash
74+
run: |
75+
echo FILTER="$(grep -v '^#\|^\W*$' devops/compat_ci_exclude.sycl-rel-6_2 | paste -sd '|')" >> $GITHUB_OUTPUT
76+
77+
78+
compatibility:
79+
needs: [build, compat_read_exclude]
8480
if: ${{ always() && !cancelled() && needs.build.outputs.build_conclusion == 'success' }}
85-
strategy:
86-
fail-fast: false
87-
matrix:
88-
include:
89-
- name: GEN 12 Integrated
90-
runner: '["Linux", "gen12"]'
91-
image_options: -u 1001 --device=/dev/dri -v /dev/dri/by-path:/dev/dri/by-path --privileged --cap-add SYS_ADMIN
92-
target_devices: level_zero:gpu;opencl:gpu;opencl:cpu
93-
extra_lit_opts: --param gpu-intel-gen12=True
94-
- name: NVIDIA/CUDA
95-
runner: '["Linux", "cuda"]'
96-
image_options: -u 1001 --gpus all --cap-add SYS_ADMIN
97-
target_devices: cuda:gpu
98-
- name: AMD/HIP
99-
runner: '["Linux", "amdgpu"]'
100-
image_options: -u 1001 --device=/dev/dri --device=/dev/kfd
101-
target_devices: hip:gpu
102-
extra_lit_opts: -j 1
103-
- name: Intel Arc A-Series Graphics
104-
runner: '["Linux", "arc"]'
105-
image_options: -u 1001 --device=/dev/dri -v /dev/dri/by-path:/dev/dri/by-path --privileged --cap-add SYS_ADMIN
106-
target_devices: level_zero:gpu;opencl:gpu;level_zero_v2:gpu
107-
extra_lit_opts: --param matrix-xmx8=True
108-
- name: E2E tests with dev igc on Intel Arc A-Series Graphics
109-
runner: '["Linux", "arc"]'
110-
image: ghcr.io/intel/llvm/ubuntu2404_intel_drivers:devigc
111-
image_options: -u 1001 --device=/dev/dri -v /dev/dri/by-path:/dev/dri/by-path --privileged --cap-add SYS_ADMIN
112-
target_devices: level_zero:gpu
113-
extra_lit_opts: --param matrix-xmx8=True
114-
use_igc_dev: true
115-
env: '{"LIT_FILTER":"Matrix/"}'
116-
- name: E2E tests on Intel Ponte Vecchio GPU
117-
runner: '["Linux", "pvc"]'
118-
image_options: -u 1001 --device=/dev/dri -v /dev/dri/by-path:/dev/dri/by-path --privileged --cap-add SYS_ADMIN
119-
target_devices: level_zero:gpu;opencl:gpu;level_zero_v2:gpu
120-
- name: Dev IGC on Intel Ponte Vecchio GPU
121-
runner: '["Linux", "pvc"]'
122-
image: ghcr.io/intel/llvm/ubuntu2404_intel_drivers:devigc
123-
image_options: -u 1001 --device=/dev/dri -v /dev/dri/by-path:/dev/dri/by-path --privileged --cap-add SYS_ADMIN
124-
target_devices: level_zero:gpu
125-
use_igc_dev: true
126-
env: '{"LIT_FILTER":"Matrix/"}'
127-
- name: Intel Battlemage Graphics
128-
runner: '["Linux", "bmg"]'
129-
image_options: -u 1001 --device=/dev/dri -v /dev/dri/by-path:/dev/dri/by-path --privileged --cap-add SYS_ADMIN
130-
target_devices: level_zero_v1:gpu;level_zero_v2:gpu
131-
- name: Preview Mode
132-
runner: '["Linux", "gen12"]'
133-
image_options: -u 1001 --device=/dev/dri -v /dev/dri/by-path:/dev/dri/by-path --privileged --cap-add SYS_ADMIN
134-
target_devices: level_zero:gpu;opencl:gpu;opencl:cpu
135-
extra_lit_opts: --param test-preview-mode=True
136-
e2e_binaries_artifact: e2e_bin_preview
137-
138-
uses: ./.github/workflows/sycl-linux-run-tests.yml
139-
with:
140-
name: ${{ matrix.name }}
141-
runner: ${{ matrix.runner }}
142-
image: ${{ matrix.image }}
143-
image_options: ${{ matrix.image_options }}
144-
target_devices: ${{ matrix.target_devices }}
145-
extra_lit_opts: ${{ matrix.extra_lit_opts }}
146-
repo_ref: ${{ github.sha }}
147-
toolchain_artifact: ${{ needs.build.outputs.toolchain_artifact }}
148-
toolchain_artifact_filename: ${{ needs.build.outputs.toolchain_artifact_filename }}
149-
toolchain_decompress_command: ${{ needs.build.outputs.toolchain_decompress_command }}
150-
e2e_binaries_artifact: ${{ matrix.e2e_binaries_artifact || 'e2e_bin' }}
151-
e2e_testing_mode: 'run-only'
152-
153-
# Do not install drivers on AMD and CUDA runners.
154-
install_igc_driver: >-
155-
${{ !contains(matrix.target_devices, 'cuda') &&
156-
!contains(matrix.target_devices, 'hip') &&
157-
contains(needs.detect_changes.outputs.filters, 'drivers') }}
158-
install_dev_igc_driver: >-
159-
${{ !contains(matrix.target_devices, 'cuda') &&
160-
!contains(matrix.target_devices, 'hip') &&
161-
matrix.use_igc_dev &&
162-
(contains(needs.detect_changes.outputs.filters, 'devigccfg') || contains(needs.detect_changes.outputs.filters, 'drivers')) ||
163-
'false' }}
164-
# Run only if the PR does not have the 'ci-no-devigc' label.
165-
skip_run: ${{matrix.use_igc_dev && contains(github.event.pull_request.labels.*.name, 'ci-no-devigc') || 'false'}}
166-
env: ${{ matrix.env || (contains(needs.detect_changes.outputs.filters, 'esimd') && '{}' || '{"LIT_FILTER_OUT":"ESIMD/"}') }}
167-
168-
test_benchmark_scripts:
169-
needs: [build, detect_changes]
170-
if: |
171-
always() && !cancelled()
172-
&& needs.build.outputs.build_conclusion == 'success'
173-
&& contains(needs.detect_changes.outputs.filters, 'benchmarks')
17481
uses: ./.github/workflows/sycl-linux-run-tests.yml
17582
with:
176-
name: Benchmark suite precommit testing
177-
runner: '["PVC_PERF"]'
178-
image: ghcr.io/intel/llvm/sycl_ubuntu2404_nightly:latest
83+
name: E2E Backward ABI compatibility
84+
runner: '["Linux", "pvc"]'
85+
image: ghcr.io/intel/llvm/sycl_prebuilt_tests:sycl-rel-6_2
17986
image_options: -u 1001 --device=/dev/dri -v /dev/dri/by-path:/dev/dri/by-path --privileged --cap-add SYS_ADMIN
180-
target_devices: 'level_zero:gpu'
181-
tests_selector: benchmarks
182-
benchmark_upload_results: false
183-
benchmark_preset: 'Minimal'
184-
benchmark_dry_run: true
185-
repo_ref: ${{ github.sha }}
186-
toolchain_artifact: ${{ needs.build.outputs.toolchain_artifact }}
187-
toolchain_artifact_filename: ${{ needs.build.outputs.toolchain_artifact_filename }}
188-
toolchain_decompress_command: ${{ needs.build.outputs.toolchain_decompress_command }}
189-
190-
test-perf:
191-
needs: [build, detect_changes]
192-
if: |
193-
always() && !cancelled()
194-
&& needs.build.outputs.build_conclusion == 'success'
195-
&& (contains(github.event.pull_request.labels.*.name, 'run-perf-tests')
196-
|| contains(needs.detect_changes.outputs.filters, 'perf-tests'))
197-
strategy:
198-
fail-fast: false
199-
matrix:
200-
include:
201-
- name: Intel GEN12 Graphics system
202-
runner: '["Linux", "gen12"]'
203-
image_extra_opts: --device=/dev/dri
204-
- name: Intel Arc A-Series Graphics system
205-
runner: '["Linux", "arc"]'
206-
image_extra_opts: --device=/dev/dri
207-
- name: AMD system
208-
runner: '["Linux", "amdgpu"]'
209-
image_extra_opts: --device=/dev/dri --device=/dev/kfd
210-
- name: CUDA system
211-
runner: '["Linux", "cuda"]'
212-
image_extra_opts: --gpus all
213-
uses: ./.github/workflows/sycl-linux-run-tests.yml
214-
with:
215-
name: Perf tests on ${{ matrix.name }}
216-
runner: ${{ matrix. runner }}
217-
image_options: -u 1001 --privileged --cap-add SYS_ADMIN ${{ matrix.image_extra_opts }}
218-
target_devices: all
219-
220-
env: '{"LIT_FILTER":"PerformanceTests/"}'
221-
extra_lit_opts: -a -j 1 --param enable-perf-tests=True
222-
223-
repo_ref: ${{ github.sha }}
224-
87+
target_devices: level_zero:gpu
22588
toolchain_artifact: ${{ needs.build.outputs.toolchain_artifact }}
22689
toolchain_artifact_filename: ${{ needs.build.outputs.toolchain_artifact_filename }}
22790
toolchain_decompress_command: ${{ needs.build.outputs.toolchain_decompress_command }}
91+
extra_lit_opts: '--filter-out "${{ needs.compat_read_exclude.outputs.FILTER }}"'
92+
e2e_testing_mode: 'run-only'

devops/compat_ci_exclude.sycl-rel-6_2

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# https://github.com/intel/llvm/pull/18253 broke at least some of the pre-built
2+
# E2E binaries, but we don't provide backward compatibility for binaries built
3+
# with sanitizers.
4+
Sanitizer
5+
6+
# https://github.com/intel/llvm/pull/19238
7+
NonUniformGroups/opportunistic_group.cpp
8+
9+
# https://github.com/intel/llvm/pull/18314 (need to address?)
10+
Assert/assert_in_kernels.cpp
11+
Assert/assert_in_multiple_tus.cpp
12+
Assert/assert_in_multiple_tus_one_ndebug.cpp
13+
Assert/assert_in_one_kernel.cpp
14+
Assert/assert_in_simultaneous_kernels.cpp
15+
Assert/assert_in_simultaneously_multiple_tus.cpp
16+
Assert/assert_in_simultaneously_multiple_tus_one_ndebug.cpp
17+
18+
# https://github.com/intel/llvm/pull/17955
19+
AsyncAlloc/device/async_alloc_from_pool.cpp
20+
AsyncAlloc/device/async_alloc_zero_init.cpp
21+
AsyncAlloc/device/ooo_queue_async_alloc_from_pool.cpp
22+
23+
# https://github.com/intel/llvm/pull/18059 made property a no-op, so `FileCheck`
24+
# fails, but that isn't an actual ABI break.
25+
DiscardEvents/discard_events_accessors.cpp
26+
DiscardEvents/discard_events_using_assert_ndebug.cpp
27+
DiscardEvents/discard_events_usm.cpp
28+
DiscardEvents/invalid_event.cpp
29+
DiscardEvents/invalid_event_exceptions.cpp
30+
31+
# https://github.com/intel/llvm/pull/17442 (unclear if need to address)
32+
KernelCompiler/opencl.cpp
33+
KernelCompiler/opencl_cache_eviction.cpp
34+
KernelCompiler/opencl_queries.cpp
35+
36+
# Pulldown https://github.com/intel/llvm/pull/18403 (why? TODO!!!)
37+
DeviceImageDependencies/NewOffloadDriver/dynamic.cpp
38+
DeviceImageDependencies/NewOffloadDriver/free_function_kernels.cpp
39+
DeviceImageDependencies/NewOffloadDriver/math_device_lib.cpp
40+
DeviceImageDependencies/NewOffloadDriver/objects.cpp
41+
DeviceImageDependencies/NewOffloadDriver/singleDynamicLibrary.cpp
42+
NewOffloadDriver/aot-gpu.cpp
43+
NewOffloadDriver/buffer.cpp
44+
NewOffloadDriver/multisource.cpp
45+
NewOffloadDriver/spirv_device_obj_smoke.cpp
46+
NewOffloadDriver/split-per-source-main.cpp
47+
NewOffloadDriver/sycl-external-with-optional-features.cpp

0 commit comments

Comments
 (0)