From 63a876e37440ff0cdbc77aa0491e74a3ae813a5c Mon Sep 17 00:00:00 2001 From: Colin Davidson Date: Thu, 7 Nov 2024 15:46:11 +0000 Subject: [PATCH] TBD icd --- .github/actions/do_build_icd/action.yml | 100 +++++++++++ .github/workflows/planned_testing.yml | 207 +++++++++++++---------- platform/x86_64-linux/x86_64-linux.cmake | 4 + 3 files changed, 224 insertions(+), 87 deletions(-) create mode 100644 .github/actions/do_build_icd/action.yml create mode 100644 platform/x86_64-linux/x86_64-linux.cmake diff --git a/.github/actions/do_build_icd/action.yml b/.github/actions/do_build_icd/action.yml new file mode 100644 index 0000000000..aa444760e4 --- /dev/null +++ b/.github/actions/do_build_icd/action.yml @@ -0,0 +1,100 @@ +name: pull and build icd loader +description: pull icd loader and build with a particular toolchain + +inputs: + 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 + shell_to_use: + description: "which shell to use (default bash)" + default: bash + +runs: + # We don't want a new docker just a list of steps, so mark as composite + using: "composite" + steps: + # - name: clone ock platform + # uses: actions/checkout@v4 + # with: + # sparse-checkout: | + # platform + # path: ock + + - name: clone headers + uses: actions/checkout@v4 + with: + repository: KhronosGroup/OpenCL-Headers + path: headers + - name: build headers + shell: ${{ inputs.shell_to_use }} + run: | + cmake headers -Bbuild ${{ inputs.toolchain }} ."-DCMAKE_INSTALL_PREFIX=headers_install" -GNinja + ninja -v -C headers/build + ninja -v -C headers/build install + pwd + ls -R . + + + - name: clone icd + shell: ${{ inputs.shell_to_use }} + uses: actions/checkout@v4 + with: + repository: KhronosGroup/OpenCL-ICD-Loader + path: icd + + - name: icd cmake + shell: ${{ inputs.shell_to_use }} + run: + cmake -B icd/build . ${{ inputs.toolchain }} + "-DCMAKE_BUILD_TYPE= ${{ inputs.build_type }} -DCMAKE_INSTALL_PREFIX=install_icd + "-DOpenCLHeaders_DIR=headers_install/share/cmake/OpenCLHeaders" -GNinja + + - name: icd build + shell: ${{ inputs.shell_to_use }} + run: | + ninja -v -C build + ninja -v -C build install + pwd + ls -R . + + - name: upload icd artifact + uses: actions/upload-artifact@v4 + with: + name: icd_${{ inputs.name }} + path: install + retention-days: 1 + + # - name: cmake_ock + # shell: ${{ inputs.shell_to_use }} + # - mkdir -p $CI_PROJECT_DIR/build + # - cd $CI_PROJECT_DIR/build + # - git -c advice.detachedHead=false + # clone https://github.com/KhronosGroup/OpenCL-Headers + # --single-branch --depth 1 + # - cd OpenCL-Headers + # - git log -1 + # - mkdir build + # - cmake -Bbuild ${{ inputs.toolchain }} . + # "-DCMAKE_INSTALL_PREFIX=$OPENCL_HEADERS_PATH" -GNinja + # - ninja -v -C build + # - ninja -v -C build install + # - cd .. + + # - git -c advice.detachedHead=false + # clone https://github.com/KhronosGroup/OpenCL-ICD-Loader + # --single-branch --depth 1 + # - cd OpenCL-ICD-Loader + # - git log -1 + # - mkdir build + # - cmake -Bbuild . ${{ inputs.toolchain }} + # "-DCMAKE_BUILD_TYPE=$ICD_BUILD_TYPE" -DCMAKE_INSTALL_PREFIX=$ICD_LOADER_INSTALL_PATH + # "-DOpenCLHeaders_DIR=$OPENCL_HEADERS_PATH/share/cmake/OpenCLHeaders" -GNinja + # - ninja -v -C build + # - ninja -v -C build install + # - cd $CI_PROJECT_DIR \ No newline at end of file diff --git a/.github/workflows/planned_testing.yml b/.github/workflows/planned_testing.yml index 1a33767683..bbdc1f34a2 100644 --- a/.github/workflows/planned_testing.yml +++ b/.github/workflows/planned_testing.yml @@ -53,83 +53,80 @@ jobs: 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' }} - uses: ./.github/actions/do_build_ock - with: - build_targets: install - offline_kernel_tests: OFF - install_dir: install_ock_${{matrix.os}}_${{matrix.target}} - - - 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 - install_dir: install_ock_${{matrix.os}}_${{matrix.target}} - 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 0 -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_ock_${{matrix.os}}_${{matrix.target}} - retention-days: 1 + # 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 }} + + # - 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: @@ -146,8 +143,8 @@ jobs: # target: riscv64 - use_ock_artefacts: - needs: [ calc_matrix, create_ock_artefacts ] + build_icd: + needs: [ calc_matrix ] strategy: matrix: target: ${{ fromJson(needs.calc_matrix.outputs.target_list) }} @@ -158,14 +155,50 @@ jobs: - 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 . + - name: clone ock platform + uses: actions/checkout@v4 + with: + sparse-checkout: | + platform + .github + - name : build icd + uses: ./.github/actions/do_build_icd + with: + # Todo : not just support linux here + toolchain: platform/${{matrix.target}}-linux + name: icd_${{matrix.os}}_${{matrix.target}} + + # 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 diff --git a/platform/x86_64-linux/x86_64-linux.cmake b/platform/x86_64-linux/x86_64-linux.cmake new file mode 100644 index 0000000000..535ebc5b70 --- /dev/null +++ b/platform/x86_64-linux/x86_64-linux.cmake @@ -0,0 +1,4 @@ +set(CMAKE_C_COMPILER gcc) +set(CMAKE_C_FLAGS -m64) +set(CMAKE_CXX_COMPILER g++) +set(CMAKE_CXX_FLAGS -m64)