@@ -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