Skip to content

Commit a394feb

Browse files
maleadtclaudesimeonschaub
authored
Trim the CI matrix to hand-picked configurations. (#456)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Simeon David Schaub <simeon@schaub.rocks>
1 parent 45a91e3 commit a394feb

2 files changed

Lines changed: 40 additions & 71 deletions

File tree

.buildkite/pipeline.yml

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ steps:
2626
- group: "macos"
2727
key: "julia"
2828
steps:
29-
- label: "{{matrix.julia}} macos"
29+
- label: "{{matrix.julia}} macos - {{matrix.pocl}}"
3030
plugins:
3131
- JuliaCI/julia#v1:
3232
version: "{{matrix.julia}}"
@@ -42,13 +42,13 @@ steps:
4242
# against the registry, which has no SPIRVIntrinsics 1. Pkg.test
4343
# then carries the in-tree copy into the test sandbox.
4444
Pkg.develop(path="lib/intrinsics")
45-
Pkg.add("pocl_jll")
45+
Pkg.add("{{matrix.pocl}}_jll")
4646
Pkg.add("InteractiveUtils")
4747
4848
println("+++ :julia: Running tests")
4949
using InteractiveUtils
5050
InteractiveUtils.versioninfo()
51-
Pkg.test(; coverage=true, test_args=`--platform=pocl`)'
51+
Pkg.test(; coverage=true, test_args=`--platform={{matrix.pocl}}`)'
5252
agents:
5353
queue: "metal"
5454
if: build.message !~ /\[skip tests\]/
@@ -58,3 +58,12 @@ steps:
5858
julia:
5959
- "1.10"
6060
- "1.12"
61+
pocl:
62+
- "pocl"
63+
- "pocl_next"
64+
adjustments:
65+
# the upcoming PoCL release is only smoke-tested on current Julia
66+
- with:
67+
julia: "1.10"
68+
pocl: "pocl_next"
69+
skip: true

.github/workflows/Test.yml

Lines changed: 28 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -21,23 +21,33 @@ jobs:
2121
contents: read
2222
strategy:
2323
fail-fast: false
24+
# Hand-picked configurations instead of a full cross-product: the memory backend
25+
# is a host-side, load-time preference that's essentially orthogonal to OS, arch,
26+
# Julia version and PoCL build, so we cover all backends on the primary platform
27+
# (Linux x64) and rotate them across the other platforms. The `pocl` axis selects
28+
# the released JLL (`jll`), the upcoming release (`next`, via pocl_next_jll, run
29+
# on every platform), or upstream PoCL HEAD built from source (`local`, one job,
30+
# Linux-only).
2431
matrix:
25-
version: ['1.10', '1.12']
26-
os: [ubuntu-24.04, ubuntu-24.04-arm, windows-2022]
27-
arch: [x64, arm64]
28-
pocl: [jll, local]
29-
memory_backend: [usm, svm, buffer]
30-
exclude:
31-
# unsupported combinations
32-
- os: ubuntu-24.04
33-
arch: arm64
34-
- os: windows-2022
35-
arch: arm64
36-
- os: ubuntu-24.04-arm
37-
arch: x64
38-
# we only test building PoCL on Linux
39-
- os: windows-2022
40-
pocl: local
32+
include:
33+
# full memory-backend coverage on the primary platform
34+
- { os: ubuntu-24.04, arch: x64, version: '1.12', pocl: jll, memory_backend: usm }
35+
- { os: ubuntu-24.04, arch: x64, version: '1.12', pocl: jll, memory_backend: svm }
36+
- { os: ubuntu-24.04, arch: x64, version: '1.12', pocl: jll, memory_backend: buffer }
37+
# oldest supported Julia
38+
- { os: ubuntu-24.04, arch: x64, version: '1.10', pocl: jll, memory_backend: usm }
39+
# Julia version coverage on the primary platform
40+
- { os: ubuntu-24.04, arch: x64, version: '1.11', pocl: jll, memory_backend: usm }
41+
- { os: ubuntu-24.04, arch: x64, version: '1.13-nightly', pocl: jll, memory_backend: usm }
42+
# other platforms, one job each (backends rotated for extra cross-coverage)
43+
- { os: ubuntu-24.04-arm, arch: arm64, version: '1.12', pocl: jll, memory_backend: svm }
44+
- { os: windows-2022, arch: x64, version: '1.12', pocl: jll, memory_backend: usm }
45+
# upcoming PoCL release (pocl_next_jll) on every platform
46+
- { os: ubuntu-24.04, arch: x64, version: '1.12', pocl: next, memory_backend: usm }
47+
- { os: ubuntu-24.04-arm, arch: arm64, version: '1.12', pocl: next, memory_backend: svm }
48+
- { os: windows-2022, arch: x64, version: '1.12', pocl: next, memory_backend: buffer }
49+
# upstream PoCL HEAD, built from source
50+
- { os: ubuntu-24.04, arch: x64, version: '1.12', pocl: local, memory_backend: usm }
4151
steps:
4252
- name: Checkout OpenCL.jl
4353
uses: actions/checkout@v7
@@ -134,7 +144,7 @@ jobs:
134144
uses: julia-actions/julia-runtest@v1
135145
if: runner.os != 'Windows'
136146
with:
137-
test_args: '--quickfail --verbose --platform=pocl'
147+
test_args: "--quickfail --verbose --platform=${{ case(matrix.pocl == 'next', 'pocl_next', 'pocl') }}"
138148

139149
- name: Setup BusyBox
140150
if: runner.os == 'Windows'
@@ -146,7 +156,7 @@ jobs:
146156
run: |
147157
using Pkg
148158
Pkg.activate(".")
149-
Pkg.test(; test_args=`--quickfail --verbose --platform=pocl`)
159+
Pkg.test(; test_args=`--quickfail --verbose --platform=${{ matrix.pocl == 'next' && 'pocl_next' || 'pocl' }}`)
150160
151161
- name: Upload compilation dumps
152162
if: always()
@@ -161,53 +171,3 @@ jobs:
161171
with:
162172
token: ${{ secrets.CODECOV_TOKEN }}
163173
files: lcov.info
164-
165-
# Smoke-test against the upcoming PoCL release (pocl_next_jll) so we catch
166-
# regressions early. This mirrors the `pocl: jll` path above but swaps in
167-
# pocl_next via `--platform=pocl_next`, on a single representative
168-
# configuration (rather than the full matrix) to keep it cheap.
169-
test-pocl-next:
170-
name: Julia ${{ matrix.version }} - PoCL next - ${{ matrix.memory_backend }}
171-
runs-on: ubuntu-24.04
172-
timeout-minutes: 100
173-
permissions: # needed to allow julia-actions/cache to proactively delete old caches that it has created
174-
actions: write
175-
contents: read
176-
strategy:
177-
fail-fast: false
178-
matrix:
179-
version: ['1.12']
180-
memory_backend: [usm, svm, buffer]
181-
steps:
182-
- name: Checkout OpenCL.jl
183-
uses: actions/checkout@v7
184-
185-
- name: Setup Julia
186-
uses: julia-actions/setup-julia@v3
187-
with:
188-
version: ${{ matrix.version }}
189-
arch: x64
190-
191-
- name: Setup Julia cache
192-
uses: julia-actions/cache@v3
193-
194-
- name: Setup OpenCL.jl
195-
run: |
196-
echo '[OpenCL]' >> test/LocalPreferences.toml
197-
echo 'default_memory_backend="${{ matrix.memory_backend }}"' >> test/LocalPreferences.toml
198-
julia --project -e '
199-
using Pkg
200-
# Julia 1.10 does not support [sources], so dev the in-tree
201-
# SPIRVIntrinsics; Pkg.test then carries it into the test sandbox.
202-
Pkg.develop(path="lib/intrinsics")'
203-
204-
- name: Test OpenCL.jl
205-
uses: julia-actions/julia-runtest@v1
206-
with:
207-
test_args: '--quickfail --verbose --platform=pocl_next'
208-
209-
- uses: julia-actions/julia-processcoverage@v1
210-
- uses: codecov/codecov-action@v7
211-
with:
212-
token: ${{ secrets.CODECOV_TOKEN }}
213-
files: lcov.info

0 commit comments

Comments
 (0)