Skip to content

Commit 97c431d

Browse files
SYCL CTS CI for aarch64 graviton (#681)
1 parent 1c02741 commit 97c431d

File tree

11 files changed

+133
-51
lines changed

11 files changed

+133
-51
lines changed

.github/actions/do_build_dpcpp/action.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -131,4 +131,4 @@ runs:
131131
with:
132132
name: dpcpp_${{inputs.target}}
133133
path: llvm/build/install/dpcpp.tar
134-
retention-days: 1
134+
retention-days: 7

.github/actions/do_build_icd/action.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ runs:
4242
with:
4343
name: header_${{inputs.target}}
4444
path: headers_install_${{steps.calc_vars.outputs.arch}}
45-
retention-days: 1
45+
retention-days: 7
4646

4747
- name: clone icd
4848
uses: actions/checkout@v4
@@ -71,5 +71,5 @@ runs:
7171
with:
7272
name: icd_${{inputs.target}}
7373
path: install_icd_${{steps.calc_vars.outputs.arch}}
74-
retention-days: 1
74+
retention-days: 7
7575

.github/actions/do_build_ock_artefact/action.yml

+9-6
Original file line numberDiff line numberDiff line change
@@ -36,21 +36,24 @@ runs:
3636
with:
3737
llvm_version: ${{ inputs.llvm_version }}
3838
llvm_build_type: RelAssert
39-
cross_arch: ${{ steps.calc_vars.outputs.arch == 'x86_64' && 'none' || steps.calc_vars.outputs.arch }}
39+
cross_arch: ${{ ( steps.calc_vars.outputs.arch == 'x86_64' || steps.calc_vars.outputs.arch == 'aarch64' )
40+
&& 'none' || steps.calc_vars.outputs.arch }}
4041
os: ${{ contains(inputs.target, 'windows') && 'windows' || 'ubuntu' }}
4142
ubuntu_version: ${{ contains(inputs.target, 'riscv64') && '24.04' || '22.04' }}
4243

43-
- name: build ock x86
44-
if: steps.calc_vars.outputs.arch == 'x86_64' && contains(inputs.download_ock_artefact, inputs.target) != true
44+
- name: build native ock - x86_64 and aarch64
45+
if: ( steps.calc_vars.outputs.arch == 'x86_64' || steps.calc_vars.outputs.arch == 'aarch64' )
46+
&& contains(inputs.download_ock_artefact, inputs.target) != true
4547
uses: ./.github/actions/do_build_ock
4648
with:
4749
build_targets: install
4850
offline_kernel_tests: OFF
4951
extra_flags: -DCA_ENABLE_TESTS=OFF -DCA_ENABLE_EXAMPLES=OFF -DCA_ENABLE_DOCUMENTATION=OFF
5052
shell_to_use: ${{ contains(inputs.target, 'windows') && 'pwsh' || 'bash' }}
5153

52-
- name: build ock other ${{ inputs.target }}
53-
if: steps.calc_vars.outputs.arch != 'x86_64' && contains(inputs.download_ock_artefact, inputs.target) != true
54+
- name: build ock - other ${{ inputs.target }}
55+
if: ( steps.calc_vars.outputs.arch != 'x86_64' && steps.calc_vars.outputs.arch != 'aarch64' )
56+
&& contains(inputs.download_ock_artefact, inputs.target) != true
5457
uses: ./.github/actions/do_build_ock
5558
with:
5659
build_targets: install
@@ -88,4 +91,4 @@ runs:
8891
with:
8992
name: ock_${{ inputs.target }}
9093
path: install
91-
retention-days: 1
94+
retention-days: 7

.github/actions/do_build_opencl_cts/action.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,5 +70,5 @@ runs:
7070
!test_conformance/**/*.ninja
7171
!test_conformance/test_common
7272
!test_conformance/test_common/**
73-
retention-days: 1
73+
retention-days: 7
7474

.github/actions/do_build_sycl_cts/action.yml

+6-2
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,10 @@ runs:
6767
# We build SYCL-CTS without installing it, so build directly in the top level.
6868
git -C SYCL-CTS.src log -1
6969
git -C SYCL-CTS.src apply $GITHUB_WORKSPACE/.github/patches/SYCL-CTS-0002-Permit-building-for-unknown-architectures.patch
70+
export JOPT="4"
71+
if [[ "${{inputs.target}}" =~ .*aarch64.* ]] ; then # needed for cp-graviton runner
72+
JOPT="2"
73+
fi
7074
cmake -S SYCL-CTS.src \
7175
-GNinja \
7276
-B SYCL-CTS \
@@ -77,7 +81,7 @@ runs:
7781
-DCMAKE_CXX_COMPILER="$GITHUB_WORKSPACE/install_dpcpp/bin/clang++" \
7882
-DCMAKE_CXX_FLAGS="--target=${{steps.calc_vars.outputs.arch}}-linux-gnu" \
7983
-DCMAKE_CXX_LINK_FLAGS="-fuse-ld=lld"
80-
ninja -C SYCL-CTS -v -j4 -k 0 || :
84+
ninja -C SYCL-CTS -v -j$JOPT -k 0 || :
8185
8286
- name: package artefacts # package/unpackage avoids known 'permissions loss' issue
8387
if: contains(inputs.download_sycl_cts_artefact, inputs.target) != true
@@ -107,5 +111,5 @@ runs:
107111
with:
108112
name: sycl_cts_${{inputs.target}}
109113
path: SYCL-CTS/sycl-cts.tar
110-
retention-days: 2
114+
retention-days: 7
111115

.github/actions/do_build_tornado/action.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,4 @@ runs:
6666
with:
6767
name: tornado_${{inputs.target}}
6868
path: TornadoVM_SDK
69-
retention-days: 1
69+
retention-days: 7

.github/actions/run_sycl_cts/action.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ runs:
6262
SYCL_CTS_TIMEOUT: '02:00:00'
6363
SYCL_CTS_FILTER: ''
6464
run: |
65-
set -x
6665
echo running sycl cts
6766
export LD_LIBRARY_PATH=$GITHUB_WORKSPACE/install_dpcpp/lib:$GITHUB_WORKSPACE/install_ock/lib
6867
export ONEAPI_DEVICE_SELECTOR=opencl:0
@@ -71,15 +70,16 @@ runs:
7170
# $CTS_FILTER ignores certain test, so is treated differently to temporary fails.
7271
7372
# Build override file, all is done first, then the target specific. The last file can overwrite prevous overrides.
74-
for csv in .github/sycl_cts/override_all.csv ..github/sycl_cts/override_${{ inputs.target }}.csv
73+
for csv in .github/sycl_cts/override_all.csv .github/sycl_cts/override_${{ inputs.target }}.csv
7574
do
7675
[ -f $csv ] && cat $csv
7776
done > override.csv
7877
79-
echo override file:
78+
echo OVERRIDE FILE:
8079
cat override.csv
8180
8281
exitcode=0
82+
set -x
8383
python3 $GITHUB_WORKSPACE/scripts/testing/run_cities.py \
8484
--color=always \
8585
--timeout $SYCL_CTS_TIMEOUT \

.github/scripts/create_sycl_cts_test_lists.sh

+8-5
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,14 @@ while IFS= read -r line; do
5151
# Process the line to work out how to run the test - use csv reader to select test and args to run
5252
test_to_run=`echo $line | python3 -c 'import sys, csv
5353
for line in csv.reader(sys.stdin): print(line[1])'`
54-
# Actually run the test with --list-tests
55-
eval "$prepend_path ./bin/$test_to_run --list-tests -v quiet" >> $temp_file
56-
if [ $? -ne 0 ]; then
57-
echo "Error : Unable to process $line"
58-
exit 1
54+
# Actually run the test, if binary exists, with --list-tests
55+
binary=$(echo ./bin/$test_to_run | sed 's/\ .*//')
56+
if [[ -f $binary ]]; then
57+
eval "$prepend_path ./bin/$test_to_run --list-tests -v quiet" >> $temp_file
58+
if [ $? -ne 0 ]; then
59+
echo "Error : Unable to process $line"
60+
exit 1
61+
fi
5962
fi
6063
done <<< $sycl_cts_file
6164

.github/scripts/sycl-cts.csv

+1-1
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ SYCL_CTS,test_kernel_bundle "device image api"
228228
SYCL_CTS,test_kernel_bundle "device_image common reference semantics"
229229
SYCL_CTS,test_kernel_bundle get_kernel_bundle_builtin_kernels
230230
SYCL_CTS,test_kernel_bundle get_kernel_bundle_dev_no_linker_or_compiler_aspect
231-
SYCL_CTS,test_kernel_bundle get_kernel_bundle_dev_not_associated_with_context --allow-running-no-tests
231+
SYCL_CTS,test_kernel_bundle get_kernel_bundle_dev_not_associated_with_context --allow-running-no-tests
232232
SYCL_CTS,test_kernel_bundle get_kernel_bundle_with_incompatible_kernels
233233
SYCL_CTS,test_kernel_bundle get_kernel_bundle_without_kernel_attr_verify_that_exception_is_not_thrown
234234
SYCL_CTS,test_kernel_bundle get_kernel_bundle_zero_device
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
SYCL_CTS,test_atomic_ref_stress "sycl::atomic_ref atomicity *",Mayfail
2+
SYCL_CTS,test_atomic_ref "sycl::atomic_ref fetch_add()/fetch_sub() test. *",Mayfail
3+
SYCL_CTS,test_vector_operators vector_OPERATORS_bool,Xfail
4+
SYCL_CTS,test_vector_operators vector_OPERATORS_byte,Xfail
5+
SYCL_CTS,test_vector_operators vector_OPERATORS_char,Xfail
6+
SYCL_CTS,test_vector_operators vector_OPERATORS_double,Xfail
7+
SYCL_CTS,test_vector_operators vector_OPERATORS_float,Xfail
8+
SYCL_CTS,test_vector_operators vector_OPERATORS_half --allow-running-no-tests,Xfail
9+
SYCL_CTS,test_vector_operators vector_OPERATORS_int,Xfail
10+
SYCL_CTS,test_vector_operators vector_OPERATORS_int32_t,Xfail
11+
SYCL_CTS,test_vector_operators vector_OPERATORS_int8_t,Xfail

.github/workflows/planned_testing.yml

+90-29
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,10 @@ jobs:
5454
runs-on: ubuntu-22.04
5555
outputs:
5656
matrix_only_linux_x86_64_aarch64_riscv64: ${{ steps.vars.outputs.matrix_only_linux_x86_64_aarch64_riscv64 }}
57-
matrix_only_linux_x86_64: ${{ steps.vars.outputs.matrix_only_linux_x86_64 }}
57+
matrix_only_linux_x86_64_aarch64: ${{ steps.vars.outputs.matrix_only_linux_x86_64_aarch64 }}
58+
matrix_only_linux_x86_64: ${{ steps.vars.outputs.matrix_only_linux_x86_64 }}
59+
matrix_only_linux_aarch64: ${{ steps.vars.outputs.matrix_only_linux_aarch64 }}
60+
matrix_only_linux_riscv64: ${{ steps.vars.outputs.matrix_only_linux_riscv64 }}
5861
steps:
5962
- id: vars
6063
# TODO: If we expand on this, come up with a more programmatical way of doing only certain targets.
@@ -66,21 +69,41 @@ jobs:
6669
{\"target\": \"host_refsi_linux\"}, \
6770
{\"target\": \"host_i686_linux\"}, \
6871
{\"target\": \"host_x86_64_windows\"}]" >> $GITHUB_OUTPUT
72+
echo matrix_only_linux_x86_64_aarch64="[ \
73+
{\"target\": \"host_arm_linux\"}, \
74+
{\"target\": \"host_riscv64_linux\"}, \
75+
{\"target\": \"host_refsi_linux\"}, \
76+
{\"target\": \"host_i686_linux\"}, \
77+
{\"target\": \"host_x86_64_windows\"}]" >> $GITHUB_OUTPUT
6978
echo matrix_only_linux_x86_64="[ \
7079
{\"target\": \"host_aarch64_linux\"}, \
7180
{\"target\": \"host_riscv64_linux\"}, \
7281
{\"target\": \"host_arm_linux\"}, \
7382
{\"target\": \"host_refsi_linux\"}, \
7483
{\"target\": \"host_i686_linux\"}, \
7584
{\"target\": \"host_x86_64_windows\"}]" >> $GITHUB_OUTPUT
85+
echo matrix_only_linux_aarch64="[ \
86+
{\"target\": \"host_x86_64_linux\"}, \
87+
{\"target\": \"host_riscv64_linux\"}, \
88+
{\"target\": \"host_arm_linux\"}, \
89+
{\"target\": \"host_refsi_linux\"}, \
90+
{\"target\": \"host_i686_linux\"}, \
91+
{\"target\": \"host_x86_64_windows\"}]" >> $GITHUB_OUTPUT
92+
echo matrix_only_linux_riscv64="[ \
93+
{\"target\": \"host_x86_64_linux\"}, \
94+
{\"target\": \"host_aarch64_linux\"}, \
95+
{\"target\": \"host_arm_linux\"}, \
96+
{\"target\": \"host_refsi_linux\"}, \
97+
{\"target\": \"host_i686_linux\"}, \
98+
{\"target\": \"host_x86_64_windows\"}]" >> $GITHUB_OUTPUT
7699
cat $GITHUB_OUTPUT
77100
78101
create_ock_artefacts_windows:
79102
needs: [workflow_vars]
80103
# Currently there is only one windows target so we don't bother with the
81104
# matrix, just check if it's enabled
82105
runs-on: windows-2019
83-
if : inputs.ock && contains(inputs.target_list, 'host_x86_64_windows')
106+
if: inputs.ock && contains(inputs.target_list, 'host_x86_64_windows')
84107
steps:
85108
- name: Checkout repo
86109
uses: actions/checkout@v4
@@ -105,13 +128,14 @@ jobs:
105128

106129
# risc-v needs ubuntu 24.04 so we get the latest qemu as well as how we
107130
# build llvm. Otherwise we choose ubuntu-22.04 (use a container for both for consistency).
108-
runs-on: cp-ubuntu-24.04
131+
runs-on: ${{ contains(matrix.target, 'host_aarch64') && 'cp-graviton' || 'cp-ubuntu-24.04' }}
109132
container:
110-
image: ${{ contains(matrix.target, 'host_riscv') && 'ghcr.io/uxlfoundation/ock_ubuntu_24.04-x86-64:latest'
111-
|| 'ghcr.io/uxlfoundation/ock_ubuntu_22.04-x86-64:latest' }}
133+
image: ${{ contains(matrix.target, 'host_riscv') && 'ghcr.io/uxlfoundation/ock_ubuntu_24.04-x86-64:latest'
134+
|| ( contains(matrix.target, 'host_aarch64') && 'ghcr.io/uxlfoundation/ock_ubuntu_22.04-aarch64:latest'
135+
|| 'ghcr.io/uxlfoundation/ock_ubuntu_22.04-x86-64:latest' ) }}
112136
volumes:
113137
- ${{github.workspace}}:${{github.workspace}}
114-
if : inputs.ock && contains(inputs.target_list, 'linux')
138+
if: inputs.ock && contains(inputs.target_list, 'linux')
115139
steps:
116140
- name: Checkout repo
117141
uses: actions/checkout@v4
@@ -136,10 +160,11 @@ jobs:
136160
target: ${{ fromJson(inputs.target_list) }}
137161
exclude: ${{ fromJson(needs.workflow_vars.outputs.matrix_only_linux_x86_64_aarch64_riscv64) }}
138162

139-
runs-on: cp-ubuntu-24.04
163+
runs-on: ${{ contains(matrix.target, 'host_aarch64') && 'cp-graviton' || 'cp-ubuntu-24.04' }}
140164
container:
141-
image: ${{ contains(matrix.target, 'host_riscv') && 'ghcr.io/uxlfoundation/ock_ubuntu_24.04-x86-64:latest'
142-
|| 'ghcr.io/uxlfoundation/ock_ubuntu_22.04-x86-64:latest' }}
165+
image: ${{ contains(matrix.target, 'host_riscv') && 'ghcr.io/uxlfoundation/ock_ubuntu_24.04-x86-64:latest'
166+
|| ( contains(matrix.target, 'host_aarch64') && 'ghcr.io/uxlfoundation/ock_ubuntu_22.04-aarch64:latest'
167+
|| 'ghcr.io/uxlfoundation/ock_ubuntu_22.04-x86-64:latest' ) }}
143168
volumes:
144169
- ${{github.workspace}}:${{github.workspace}}
145170
steps:
@@ -196,7 +221,7 @@ jobs:
196221
container:
197222
image: ${{ contains(matrix.target, 'host_riscv') && 'ghcr.io/uxlfoundation/ock_ubuntu_24.04-x86-64:latest'
198223
|| ( contains(matrix.target, 'host_aarch64') && 'ghcr.io/uxlfoundation/ock_ubuntu_22.04-aarch64:latest'
199-
|| 'ghcr.io/uxlfoundation/ock_ubuntu_22.04-x86-64:latest' ) }}
224+
|| 'ghcr.io/uxlfoundation/ock_ubuntu_22.04-x86-64:latest' ) }}
200225
volumes:
201226
- ${{github.workspace}}:${{github.workspace}}
202227
steps:
@@ -221,21 +246,50 @@ jobs:
221246
with:
222247
target: ${{ matrix.target }}
223248

224-
build_dpcpp_native_host:
249+
build_dpcpp_native:
225250
needs: [workflow_vars]
226251
strategy:
227252
matrix:
228253
target: ${{ fromJson(inputs.target_list) }}
229-
exclude: ${{ fromJson(needs.workflow_vars.outputs.matrix_only_linux_x86_64) }}
254+
exclude: ${{ fromJson(needs.workflow_vars.outputs.matrix_only_linux_x86_64_aarch64) }}
255+
256+
runs-on: ${{ contains(matrix.target, 'host_aarch64') && 'cp-graviton' || 'cp-ubuntu-24.04' }}
257+
container:
258+
image: ${{ contains(matrix.target, 'host_aarch64') && 'ghcr.io/uxlfoundation/ock_ubuntu_22.04-aarch64:latest'
259+
|| 'ghcr.io/uxlfoundation/ock_ubuntu_22.04-x86-64:latest' }}
260+
volumes:
261+
- ${{github.workspace}}:${{github.workspace}}
262+
263+
if: inputs.test_sycl_cts
264+
steps:
265+
- name: Checkout repo
266+
uses: actions/checkout@v4
267+
- name: set up gh
268+
uses: ./.github/actions/setup_gh
269+
with:
270+
os: ${{ contains( matrix.target, 'windows') && 'windows' || 'ubuntu' }}
271+
token: ${{ secrets.GITHUB_TOKEN }}
272+
- name: build dpc++ artefact
273+
uses: ./.github/actions/do_build_dpcpp
274+
with:
275+
target: ${{ matrix.target }}
276+
download_dpcpp_artefact: ${{ inputs.download_dpcpp_artefact }}
277+
278+
build_dpcpp_cross:
279+
needs: [workflow_vars, build_dpcpp_native] # cross builds need pre-built native artefact
280+
strategy:
281+
fail-fast: false # let all matrix jobs complete
282+
matrix:
283+
target: ${{ fromJson(inputs.target_list) }}
284+
exclude: ${{ fromJson(needs.workflow_vars.outputs.matrix_only_linux_riscv64) }}
230285

231-
# TODO: Extend if we decide to enable for windows or build natively on another target
232286
runs-on: cp-ubuntu-24.04
233287
container:
234-
image: 'ghcr.io/uxlfoundation/ock_ubuntu_22.04-x86-64:latest'
288+
image: 'ghcr.io/uxlfoundation/ock_ubuntu_24.04-x86-64:latest'
235289
volumes:
236290
- ${{github.workspace}}:${{github.workspace}}
237291

238-
if : inputs.test_sycl_cts
292+
if: inputs.test_sycl_cts && contains(inputs.target_list, 'host_riscv64_linux')
239293
steps:
240294
- name: Checkout repo
241295
uses: actions/checkout@v4
@@ -251,49 +305,56 @@ jobs:
251305
download_dpcpp_artefact: ${{ inputs.download_dpcpp_artefact }}
252306

253307
build_sycl_cts:
254-
needs: [workflow_vars, build_icd, build_dpcpp_native_host]
308+
needs: [workflow_vars, build_icd, build_dpcpp_native]
255309
strategy:
310+
fail-fast: false # let all matrix jobs complete
256311
matrix:
257312
target: ${{ fromJson(inputs.target_list) }}
258-
# TODO: For now just linux x86_64
259-
exclude: ${{ fromJson(needs.workflow_vars.outputs.matrix_only_linux_x86_64) }}
313+
# TODO: For now just linux x86_64 & aarch64
314+
exclude: ${{ fromJson(needs.workflow_vars.outputs.matrix_only_linux_x86_64_aarch64) }}
260315

261-
# TODO: Extend if we decide to enable for windows or build natively on another target
262-
runs-on: cp-ubuntu-24.04
316+
runs-on: ${{ contains(matrix.target, 'host_aarch64') && 'cp-graviton' || 'cp-ubuntu-24.04' }}
263317
container:
264-
image: 'ghcr.io/uxlfoundation/ock_ubuntu_22.04-x86-64:latest'
318+
image: ${{ contains(matrix.target, 'host_aarch64') && 'ghcr.io/uxlfoundation/ock_ubuntu_22.04-aarch64:latest'
319+
|| 'ghcr.io/uxlfoundation/ock_ubuntu_22.04-x86-64:latest' }}
265320
volumes:
266321
- ${{github.workspace}}:${{github.workspace}}
267322

268-
if : inputs.test_sycl_cts
323+
if: inputs.test_sycl_cts
269324
steps:
270325
- name: Checkout repo
271326
uses: actions/checkout@v4
272327
- name: set up gh
273328
uses: ./.github/actions/setup_gh
274329
with:
275330
os: ${{ contains( matrix.target, 'windows') && 'windows' || 'ubuntu' }}
276-
token: ${{ secrets.GITHUB_TOKEN }}
331+
token: ${{ secrets.GITHUB_TOKEN }}
277332
- name: build sycl cts artefact
278333
uses: ./.github/actions/do_build_sycl_cts
279334
with:
280335
target: ${{ matrix.target }}
281336
download_sycl_cts_artefact: ${{ inputs.download_sycl_cts_artefact }}
282337

283338
run_sycl_cts:
284-
needs: [workflow_vars, create_ock_artefacts_ubuntu, build_dpcpp_native_host, build_sycl_cts]
339+
needs: [workflow_vars, create_ock_artefacts_ubuntu, build_dpcpp_native, build_sycl_cts]
285340
strategy:
341+
fail-fast: false # let all matrix jobs complete
286342
matrix:
287343
target: ${{ fromJson(inputs.target_list) }}
288-
# TODO: For now just linux x86_64
289-
exclude: ${{ fromJson(needs.workflow_vars.outputs.matrix_only_linux_x86_64) }}
344+
# TODO: For now just linux x86_64 and aarch64
345+
exclude: ${{ fromJson(needs.workflow_vars.outputs.matrix_only_linux_x86_64_aarch64) }}
290346

291-
runs-on: 'ubuntu-22.04'
292-
if : inputs.test_sycl_cts
347+
runs-on: ${{ contains(matrix.target, 'host_aarch64') && 'cp-graviton' || 'cp-ubuntu-24.04' }}
348+
container:
349+
image: ${{ contains(matrix.target, 'host_aarch64') && 'ghcr.io/uxlfoundation/ock_ubuntu_22.04-aarch64:latest'
350+
|| 'ghcr.io/uxlfoundation/ock_ubuntu_22.04-x86-64:latest' }}
351+
volumes:
352+
- ${{github.workspace}}:${{github.workspace}}
353+
if: inputs.test_sycl_cts
293354
steps:
294355
- name: Checkout repo
295356
uses: actions/checkout@v4
296-
- name: build dpc++ artefact
357+
- name: run sycl cts
297358
uses: ./.github/actions/run_sycl_cts
298359
with:
299360
target: ${{ matrix.target }}

0 commit comments

Comments
 (0)