Skip to content

Commit 7246884

Browse files
authored
Refactor CI to add backends (#193)
1 parent 83c5e35 commit 7246884

File tree

3 files changed

+54
-88
lines changed

3 files changed

+54
-88
lines changed

.github/workflows/test.yml

Lines changed: 27 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ jobs:
77
runs-on: ${{ matrix.os }}
88
strategy:
99
matrix:
10-
julia-version: ['1']
10+
julia-version: ['lts', '1']
1111
julia-arch: [x64]
1212
os: [ubuntu-latest,macos-latest,windows-latest]
1313
steps:
@@ -16,89 +16,51 @@ jobs:
1616
with:
1717
version: ${{ matrix.julia-version }}
1818
- uses: julia-actions/julia-buildpkg@latest
19+
- name: Add OpenCL.jl to test environment
20+
run: |
21+
julia --project=test -e 'using Pkg; Pkg.add(["OpenCL", "pocl_jll"])'
1922
- uses: julia-actions/julia-runtest@latest
2023
env:
2124
EXAMODELS_TEST_POCL: 1
2225

23-
nvidia:
24-
runs-on:
25-
labels: cuda
26+
gpu:
2627
strategy:
2728
matrix:
28-
julia-version: ['1']
29+
julia-version: ['lts', '1']
2930
julia-arch: [x64]
31+
os: [ubuntu-latest]
32+
backend: ['cuda', 'amdgpu', 'oneapi']
33+
runs-on: ['self-hosted', 'gpu', '${{ matrix.backend }}']
34+
env:
35+
# oneAPI specific variables
36+
OverrideDefaultFP64Settings: ${{ matrix.backend == 'oneapi' && '1' || '' }}
37+
IGC_EnableDPEmulation: ${{ matrix.backend == 'oneapi' && '1' || '' }}
3038
steps:
3139
- name: Checkout code
3240
uses: actions/checkout@v2
3341
- name: Setup Julia
3442
uses: julia-actions/setup-julia@latest
3543
with:
3644
version: ${{ matrix.julia-version }}
37-
- name: Run tests
38-
env:
39-
EXAMODELS_TEST_CUDA: 1
40-
EXAMODELS_TEST_POCL: 1
45+
- name: Setup tests
4146
run: |
4247
julia --color=yes --project=./test -e '
4348
using Pkg
4449
Pkg.Registry.update()
4550
Pkg.develop(path=".")
46-
Pkg.instantiate()
47-
include("test/runtests.jl")'
48-
amd:
49-
runs-on:
50-
labels: amdgpu
51-
strategy:
52-
matrix:
53-
julia-version: ['1']
54-
julia-arch: [x64]
55-
steps:
56-
- name: Checkout code
57-
uses: actions/checkout@v2
58-
- name: Setup Julia
59-
uses: julia-actions/setup-julia@latest
60-
with:
61-
version: ${{ matrix.julia-version }}
62-
- name: Run tests
63-
env:
64-
EXAMODELS_TEST_AMDGPU: 1
65-
EXAMODELS_TEST_POCL: 1
66-
JULIA_NUM_THREADS: 4
67-
JULIA_AMDGPU_CORE_MUST_LOAD: "1"
68-
JULIA_AMDGPU_HIP_MUST_LOAD: "1"
69-
JULIA_AMDGPU_DISABLE_ARTIFACTS: "1"
51+
Pkg.instantiate()'
52+
- name: Add AMDGPU.jl to test environment
53+
if: matrix.backend == 'amdgpu'
7054
run: |
71-
julia --color=yes --project=./test -e '
72-
using Pkg
73-
Pkg.Registry.update()
74-
Pkg.develop(path=".")
75-
Pkg.instantiate()
76-
include("test/runtests.jl")'
77-
78-
intel:
79-
runs-on:
80-
labels: oneapi
81-
strategy:
82-
matrix:
83-
julia-version: ['1']
84-
julia-arch: [x64]
85-
steps:
86-
- name: Checkout code
87-
uses: actions/checkout@v2
88-
- name: Setup Julia
89-
uses: julia-actions/setup-julia@latest
90-
with:
91-
version: ${{ matrix.julia-version }}
55+
julia --project=test -e 'using Pkg; Pkg.add("AMDGPU")'
56+
- name: Add CUDA.jl to test environment
57+
if: matrix.backend == 'cuda'
58+
run: |
59+
julia --project=test -e 'using Pkg; Pkg.add("CUDA")'
60+
- name: Add oneAPI.jl to test environment
61+
if: matrix.backend == 'oneapi'
62+
run: |
63+
julia --project=test -e 'using Pkg; Pkg.add("oneAPI")'
9264
- name: Run tests
93-
env:
94-
EXAMODELS_TEST_ONEAPI: 1
95-
EXAMODELS_TEST_POCL: 1
96-
OverrideDefaultFP64Settings: 1
97-
IGC_EnableDPEmulation: 1
9865
run: |
99-
julia --color=yes --project=./test -e '
100-
using Pkg
101-
Pkg.Registry.update()
102-
Pkg.develop(path=".")
103-
Pkg.instantiate()
104-
include("test/runtests.jl")'
66+
julia --color=yes --project=./test -e 'include("test/runtests.jl")'

test/Project.toml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
[deps]
2-
AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e"
3-
CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba"
42
Downloads = "f43a241f-c20a-4ad4-852c-f6b1247861c6"
53
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
64
Ipopt = "b6b21f68-93f8-5de0-b562-5493be1d77c9"
@@ -11,12 +9,9 @@ NLPModels = "a4795742-8479-5a88-8948-cc11e1c8c1a6"
119
NLPModelsIpopt = "f4238b75-b362-5c4c-b852-0801c9a21d71"
1210
NLPModelsJuMP = "792afdf1-32c1-5681-94e0-d7bf7a5df49e"
1311
NLPModelsTest = "7998695d-6960-4d3a-85c4-e1bceb8cd856"
14-
OpenCL = "08131aa3-fb12-5dee-8b74-c09406e224a2"
1512
Percival = "01435c0c-c90d-11e9-3788-63660f8fbccc"
1613
PowerModels = "c36e90e8-916a-50a6-bd94-075b64ef4655"
1714
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
1815
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
1916
SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b"
2017
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
21-
oneAPI = "8f75cd03-7ff8-4ecb-9b8f-daf728133b1b"
22-
pocl_jll = "627d6b7a-bbe6-5189-83e7-98cc0a5aeadd"

test/backends.jl

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,47 @@
1+
using KernelAbstractions
2+
13
const BACKENDS = Any[nothing, CPU()]
24

3-
if haskey(ENV, "EXAMODELS_TEST_CUDA")
4-
using CUDA
5-
push!(BACKENDS, CUDABackend())
5+
is_package_installed(name::String) = !isnothing(Base.find_package(name))
6+
const EXAMODELS_TEST_CUDA = is_package_installed("CUDA")
7+
if EXAMODELS_TEST_CUDA
8+
@eval using CUDA
9+
@eval push!(BACKENDS, CUDABackend())
610
@info "including CUDA"
711
else
812
@info "excluding CUDA"
913
end
1014

11-
if haskey(ENV, "EXAMODELS_TEST_AMDGPU")
12-
using AMDGPU
13-
push!(BACKENDS, ROCBackend())
15+
const EXAMODELS_TEST_AMDGPU = is_package_installed("AMDGPU")
16+
if EXAMODELS_TEST_AMDGPU
17+
@eval using AMDGPU
18+
@eval push!(BACKENDS, ROCBackend())
1419
@info "including AMDGPU"
1520
else
1621
@info "excluding AMDGPU"
1722
end
1823

19-
if haskey(ENV, "EXAMODELS_TEST_ONEAPI")
20-
using oneAPI
21-
push!(BACKENDS, oneAPIBackend())
24+
const EXAMODELS_TEST_ONEAPI = is_package_installed("oneAPI")
25+
if EXAMODELS_TEST_ONEAPI
26+
@eval using oneAPI
27+
@eval push!(BACKENDS, oneAPIBackend())
2228
@info "including oneAPI"
2329
else
2430
@info "excluding oneAPI"
2531
end
2632

27-
if haskey(ENV, "EXAMODELS_TEST_POCL")
28-
using OpenCL, pocl_jll
29-
if !(Sys.iswindows() && OpenCL.cl.is_high_integrity_level())
30-
push!(BACKENDS, OpenCLBackend())
31-
@info "including PoCL"
32-
OpenCL.versioninfo()
33-
@info "OpenCL Device:" OpenCL.cl.device()
34-
else
35-
@info "excluding PoCL (cannot use pocl_jll when running on Windows as administrator)"
33+
const EXAMODELS_TEST_OPENCL = is_package_installed("OpenCL")
34+
if EXAMODELS_TEST_OPENCL
35+
@eval begin
36+
using OpenCL, pocl_jll
37+
if !(Sys.iswindows() && OpenCL.cl.is_high_integrity_level())
38+
push!(BACKENDS, OpenCLBackend())
39+
@info "including PoCL"
40+
OpenCL.versioninfo()
41+
@info "OpenCL Device:" OpenCL.cl.device()
42+
else
43+
@info "excluding PoCL (cannot use pocl_jll when running on Windows as administrator)"
44+
end
3645
end
3746
else
3847
@info "excluding PoCL"

0 commit comments

Comments
 (0)