Add ock artefact building #7
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Simple workflow for running non-documentation PR testing | |
name: Run ock tests for PR testing | |
on: | |
workflow_call: | |
inputs: | |
ock: | |
required: false | |
type: boolean | |
default: true | |
target_list: | |
required: false | |
type: string | |
default: '["x86_64", "aarch64", "riscv64"]' | |
os_list: | |
required: false | |
type: string | |
default: '["ubuntu-22.04", "windows-2019"]' | |
update_cache: | |
required: false | |
type: boolean | |
default: false | |
# target_host_x86_64_windows: | |
# required: false | |
# type: boolean | |
# default: false | |
# target_host_aarch64_linux: | |
# required: false | |
# type: boolean | |
# default: true | |
llvm_version: | |
required: false | |
type: string | |
default: 18 | |
env: | |
target_list: '["x86_64","aarch64", "riscv64"]' | |
os_list: '["ubuntu-22.04", "windows-2019"]' | |
jobs: | |
calc_matrix: | |
runs-on: ubuntu-latest | |
name: Calc matrix | |
outputs: | |
target_list: ${{ steps.step1.outputs.target_list }} | |
os_list: ${{ steps.step1.outputs.os_list }} | |
steps: | |
- id: step1 | |
run: | | |
# echo "target_list=$target_list" >> "$GITHUB_OUTPUT" | |
# echo "os_list=$os_list" >> "$GITHUB_OUTPUT" | |
echo 'target_list=${{ inputs.target_list }}' >> "$GITHUB_OUTPUT" | |
echo 'os_list=${{ inputs.os_list }}' >> "$GITHUB_OUTPUT" | |
cat $GITHUB_OUTPUT | |
create_ock_artefacts: | |
needs: calc_matrix | |
strategy: | |
matrix: | |
target: ${{ fromJson(needs.calc_matrix.outputs.target_list) }} | |
os: ${{ fromJson(needs.calc_matrix.outputs.os_list) }} | |
build_type: [RelAssert] | |
exclude: | |
- os: windows-2019 | |
- target: riscv64 | |
# - target: aarch64 | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
# TODO: Move this to a single action | |
- name: load native llvm | |
if: ${{ matrix.target }} != "x86_64" && ${{ matrix.os }} == "ubuntu-22.04" | |
uses: actions/cache/restore@v4 | |
with: | |
path: llvm_install/** | |
key: llvm-ubuntu-22.04-x86_64-v19-RelAssert | |
fail-on-cache-miss: true | |
- name: mv llvm native | |
if: ${{ matrix.target }} != "x86_64" && ${{ matrix.os }} == "ubuntu-22.04" | |
run: mv llvm_install llvm_install_native | |
# installs tools, ninja, installs llvm and sets up sccache | |
- name: setup-ubuntu | |
if: ${{ matrix.target }} == "x86_64" && ${{ matrix.os }} == "ubuntu-22.04" | |
uses: ./.github/actions/setup_build | |
with: | |
llvm_version: 19 | |
llvm_build_type: RelAssert | |
# For now target and arch match | |
arch: ${{ matrix.target }} | |
save: ${{ inputs.update_cache }} | |
toolchain_file: scripts/../platform/arm-linux/${{ matrix.target }}-toolchain.cmake" | |
- name: build ock x86 | |
if: ${{ matrix.target == 'x86_64' && matrix.os == 'ubuntu-22.04' }} | |
# if: ${{ matrix.target }} == "x86_64" && ${{ matrix.os }} == "ubuntu-22.04" | |
uses: ./.github/actions/do_build_ock | |
with: | |
build_target: install | |
offline_kernel_tests: OFF | |
- name: build ock other ${{ matrix.target }} | |
if: ${{ matrix.target != 'x86_64' && matrix.os == 'ubuntu-22.04' }} | |
uses: ./.github/actions/do_build_ock | |
with: | |
build_targets: install | |
# Todo : target does not directly equate to arch here | |
arch: ${{ matrix.target }} | |
toolchain_file: "platform/arm-linux/aarch64-toolchain.cmake" | |
extra_flags: -DCA_BUILTINS_TOOLS_DIR=${{ github.workspace }}/llvm_install_native/bin | |
# Do we need the offline kernel as an artefact? If so currently this requires an external clc or qemu to be installed. | |
offline_kernel_tests: OFF | |
host_fp16: ON | |
# Prune it as there is too much things in there we don't want to use | |
# We may want to extend this a bit as time goes on such as clc or UnitCL | |
- name: prune ock artefact ${{ matrix.target }} | |
if: ${{ matrix.os == 'ubuntu-22.04' }} | |
run: | | |
rm install/bin/* | |
rm install/share/* | |
uses: ./.github/actions/do_build_ock | |
with: | |
build_targets: install | |
# Todo : target does not directly equate to arch here | |
arch: ${{ matrix.target }} | |
toolchain_file: "platform/arm-linux/aarch64-toolchain.cmake" | |
extra_flags: -DCA_BUILTINS_TOOLS_DIR=${{ github.workspace }}/llvm_install_native/bin | |
# Do we need the offline kernel as an artefact? If so currently this requires an external clc or qemu to be installed. | |
offline_kernel_tests: OFF | |
host_fp16: ON | |
- name: upload ock artefact | |
if: ${{ matrix.target }} == "x86_64" && ${{ matrix.os }} == "ubuntu-22.04" | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ock_${{matrix.os}}_${{matrix.target}} | |
path: install_ock_${{matrix.os}}_${{matrix.target}} | |
retention-days: 1 | |
# use_ock_artefacts_all: | |
# needs: [ calc_matrix, create_ock_artefacts ] | |
# strategy: | |
# matrix: | |
# target: ${{ fromJson(needs.calc_matrix.outputs.target_list) }} | |
# os: ${{ fromJson(needs.calc_matrix.outputs.os_list) }} | |
# build_type: [RelAssert] | |
# exclude: | |
# - os: windows-2019 | |
# target: aarch64 | |
# - os: windows-2019 | |
# target: riscv64 | |
use_ock_artefacts: | |
needs: [ calc_matrix, create_ock_artefacts ] | |
strategy: | |
matrix: | |
target: ${{ fromJson(needs.calc_matrix.outputs.target_list) }} | |
os: ${{ fromJson(needs.calc_matrix.outputs.os_list) }} | |
build_type: [RelAssert] | |
exclude: | |
- os: windows-2019 | |
- target: riscv64 | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Download ock artefact | |
uses: actions/download-artifact@v4 | |
with: | |
name: ock_${{matrix.os}}_${{matrix.target}} | |
- name: print ock artefact | |
run: | | |
ls -R . | |
# echo "${{ matrix.os }} ${{ matrix.build_type }} ${{ matrix.arch }}" > foo.txt | |
# --define CA_CL_ENABLE_ICD_LOADER=ON | |
# --define OCL_EXTENSION_cl_khr_command_buffer=ON | |
# --define OCL_EXTENSION_cl_khr_command_buffer_mutable_dispatch=ON | |
# --define OCL_EXTENSION_cl_khr_extended_async_copies=ON | |
# --target check-ock | |
# -B build |