Skip to content
# 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 }}

Check failure on line 68 in .github/workflows/planned_testing.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/planned_testing.yml

Invalid workflow file

You have an error in your yaml syntax on line 68
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 }}
- name: build ock x86
if: ${{ matrix.target == 'x86_64' }}
uses: ./.github/actions/do_build_ock
with:
build_targets: install
offline_kernel_tests: OFF
- name: build ock other ${{ matrix.target }}
if: ${{ matrix.target != 'x86_64' }}
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 }}
run: |
# delete all but city runner and the python associated file under bin
find install_ock_${{matrix.os}}_${{matrix.target}}/bin -maxdepth 1 -type f ! -name "*.py" -delete
rm -rf install_ock_${{matrix.os}}_${{matrix.target}}/share
- name: upload ock artefact
uses: actions/upload-artifact@v4
with:
name: ock_${{matrix.os}}_${{matrix.target}}
path: install
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
build_icd:
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
runs-on: ${{ matrix.os }}
steps:
- name: Install Ninja
uses: llvm/actions/install-ninja@main
- name: clone ock platform
uses: actions/checkout@v4
with:
sparse-checkout: |
platform
.github
# todo look into setting variables in a common way so we can pass toolchains in for different jobs
- name : build and upload icd
# if: ${{ matrix.target != 'x86_64' }}
uses: ./.github/actions/do_build_icd
with:
# Todo : not just support linux here
toolchain: ${{ matrix.target == 'aarch64' && '--toolchain $GITHUB_WORKSPACE/platform/arm-linux/aarch64-toolchain.cmake' || '' }}
name: icd_${{matrix.os}}_${{matrix.target}}
# Todo do as an action
build_tornado:
needs: [ calc_matrix, build_icd ]
# 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
runs-on: ${{ matrix.os }}
steps:
# - name: Install Ninja
# uses: llvm/actions/install-ninja@main
- name: clone ock platform
uses: actions/checkout@v4
with:
sparse-checkout: |
platform
.github
- name: download icd artifact
uses: actions/download-artifact@v4
with:
name: icd_${{matrix.os}}_${{matrix.target}}
path: install_icd
# Get maven
- name: fetch maven
run: |
wget https://archive.apache.org/dist/maven/maven-3/3.9.3/binaries/apache-maven-3.9.3-bin.tar.gz
tar xf apache-maven-3.9.3-bin.tar.gz
# for x86, we'll need to do something else for aarch64
- name: select jdk21
run: |
sudo update-java-alternatives -s temurin-21-jdk-amd64
pip install tqdm
- name: build tornadovm
run: |
git clone https://github.com/beehive-lab/TornadoVM.git -b develop --depth 1 TornadoVM_build
export JAVA_HOME=`readlink -f $(command -v java) | sed 's/\/bin\/java//'`
export TORNADO_SDK=$GITHUB_WORKSPACE/TornadoVM_build/bin/sdk
export PATH=$PWD/apache-maven-3.9.3/bin:$PATH
mvn -v
java --version
cd TornadoVM_build
# The tornado build system links in OpenCL assuming it's in a known place. This gets around
# this by pass CXX as an environment variable as it's difficult to change the build system
# even if we don't use this script.
CXX="g++ -L$GITHUB_WORKSPACE/install_icd/lib" make -j8 jdk21 BACKEND=opencl
# # Not sure if gitlab ci does not follow symbolic links so copy for the artefact
# cp -r -L $TORNADO_SDK $GITHUB_WORKSPACE/TornadoVM_SDK
- name: Download ock artefact
uses: actions/download-artifact@v4
with:
name: ock_${{matrix.os}}_${{matrix.target}}
path: ock
- name: Run tornado example
run: |
export ARETEFACT_CHECKOUT_PATH=$GITHUB_WORKSPACE/ock
echo ARTEFACT_CHECKOUT_PATH is $ARTEFACT_CHECKOUT_PATH
ls $ARTEFACT_CHECKOUT_PATH
export ICD_LOADER_INSTALL_PATH=$GITHUB_WORKSPACE/icd
echo ICD_LOADER_INSTALL_PATH is $ICD_LOADER_INSTALL_PATH
ls $ICD_LOADER_INSTALL_PATH
export LD_LIBRARY_PATH=$ICD_LOADER_INSTALL_PATH/lib:$LD_LIBRARY_PATH
echo $LD_LIBRARY_PATH
export OCL_ICD_FILENAMES=$ARTEFACT_CHECKOUT_PATH/lib/libCL.so
export JAVA_HOME=`readlink -f $(command -v java) | sed 's/\/bin\/java//'`
export TORNADO_SDK=$GITHUB_WORKSPACE/TornadoVM_build/bin/sdk
export PATH=$TORNADO_SDK/bin:$PATH
git clone https://github.com/beehive-lab/TornadoVM.git -b develop --depth 1
cd TornadoVM
tornado-test -V "uk.ac.manchester.tornado.unittests.TestHello"
# todo : download ock artefact
# Run tornado example
# at some point we will make an artefact if we want to do more, but it is enough to show it working using the created files.
# - name: run tornado example
# run: |
# echo ARTEFACT_CHECKOUT_PATH is $ARTEFACT_CHECKOUT_PATH
# ls $ARTEFACT_CHECKOUT_PATH
# export LD_LIBRARY_PATH=$ICD_LOADER_INSTALL_PATH/lib:$LD_LIBRARY_PATH
# echo $LD_LIBRARY_PATH
# export OCL_ICD_FILENAMES=$ARTEFACT_CHECKOUT_PATH/lib/libCL.so
# export JAVA_HOME=`readlink -f $(command -v java) | sed 's/\/bin\/java//'`
# export TORNADO_SDK=$CI_PROJECT_DIR/TornadoVM_SDK
# export PATH=$TORNADO_SDK/bin:$PATH
# git clone https://github.com/beehive-lab/TornadoVM.git -b develop --depth 1
# cd TornadoVM
# toolchain:
# description: 'path to toolchain'
# default: $GITHUB_WORKSPACE/ock/platform/x86_64-linux.cmake
# build_type:
# description: 'path to toolchain'
# default: ock/platform/x86_64-linux.cmake
# name:
# description: 'artifact name'
# default: ubuntu-22.04-x86_64
# 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}}
# path: 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