Skip to content

[CI] Add reusable workflow for SYCL builds #4773

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 27 commits into from
Oct 29, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
159 changes: 159 additions & 0 deletions .github/workflows/sycl_linux_build_and_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
name: Reusable SYCL Linux build and test workflow

on:
pull_request:
paths:
- '.github/workflows/sycl_linux_build_and_test.yml'
workflow_call:
inputs:
cc:
type: string
required: false
default: "gcc"
cxx:
type: string
required: false
default: "g++"
build_image:
type: string
required: false
default: "ghcr.io/intel/llvm/ubuntu2004_base:latest"
build_runs_on:
type: string
required: false
default: "ubuntu-latest"
build_github_cache:
type: boolean
required: false
default: false
build_cache_root:
type: string
required: true
build_cache_suffix:
type: string
required: false
default: "default"
build_cache_size:
type: string
required: false
default: 2G
build_configure_extra_args:
type: string
required: false
default: ""
build_artifact_suffix:
type: string
required: true
build_upload_artifact:
type: boolean
required: false
default: false

jobs:
configure:
name: Pre-build configuration
runs-on: ubuntu-latest
outputs:
params: ${{ steps.input-parameters.outputs.params }}
steps:
- id: input-parameters
env:
INPUTS: ${{ toJSON(inputs) }}
run: |
if [[ "$GITHUB_EVENT_NAME" != "workflow_call" ]]; then
INPUTS="{
\"cc\":\"gcc\",
\"cxx\":\"g++\",
\"build_runs_on\":\"sycl-precommit-linux\",
\"build_image\":\"ghcr.io/intel/llvm/ubuntu2004_base:latest\",
\"build_github_cache\":\"false\",
\"build_cache_root\":\"/__w/\",
\"build_cache_suffix\":\"default\",
\"build_cache_size\":\"2G\",
\"build_configure_extra_args\":\"\",
\"build_artifact_suffix\":\"default\",
\"build_upload_artifact\":\"false\"
}"
fi
INPUTS="${INPUTS//'%'/'%25'}"
INPUTS="${INPUTS//$'\n'/'%0A'}"
INPUTS="${INPUTS//$'\r'/'%0D'}"
echo "::set-output name=params::$INPUTS"
echo "$INPUTS"
build:
name: Build SYCL toolchain
needs: configure
runs-on: ${{ fromJSON(needs.configure.outputs.params).build_runs_on }}
container:
image: ${{ fromJSON(needs.configure.outputs.params).build_image }}
options: -u 1001:1001
steps:
- uses: actions/checkout@v2
with:
path: src
- name: Setup Cache
uses: actions/cache@v2
if: ${{ steps.parameters.build_github_cache }}
id: cache
with:
path: ${{ fromJSON(needs.configure.outputs.params).build_cache_root }}/build_cache_${{ fromJSON(needs.configure.outputs.params).build_cache_suffix }}
key: sycl-build-${{ fromJSON(needs.configure.outputs.params).build_cache_suffix }}-${{ github.sha }}
restore-keys: |
sycl-build-${{ fromJSON(needs.configure.outputs.params).build_cache_suffix }}-
- name: Configure
env:
CC: ${{ fromJSON(needs.configure.outputs.params).cc }}
CXX: ${{ fromJSON(needs.configure.outputs.params).cxx }}
CACHE_ROOT: ${{ fromJSON(needs.configure.outputs.params).build_cache_root }}
CACHE_SUFFIX: ${{ fromJSON(needs.configure.outputs.params).build_cache_suffix }}
CACHE_SIZE: ${{ fromJSON(needs.configure.outputs.params).build_cache_size }}
ARGS: ${{ fromJSON(needs.configure.outputs.params).build_configure_extra_args }}
run: |
mkdir -p $CACHE_ROOT/build_cache_$CACHE_SUFFIX
mkdir -p $GITHUB_WORKSPACE/build
cd $GITHUB_WORKSPACE/build
python3 $GITHUB_WORKSPACE/src/buildbot/configure.py -w $GITHUB_WORKSPACE \
-s $GITHUB_WORKSPACE/src -o $GITHUB_WORKSPACE/build -t Release \
--ci-defaults $ARGS --cmake-opt="-DLLVM_CCACHE_BUILD=ON" \
--cmake-opt="-DLLVM_CCACHE_DIR=$CACHE_ROOT/build_cache_$CACHE_SUFFIX" \
--cmake-opt="-DLLVM_CCACHE_MAXSIZE=$CACHE_SIZE"
- name: Compile
run: cmake --build $GITHUB_WORKSPACE/build
# TODO allow to optionally disable in-tree checks
- name: check-llvm
if: always()
run: |
cmake --build $GITHUB_WORKSPACE/build --target check-llvm
- name: check-clang
if: always()
run: |
export XDG_CACHE_HOME=$GITHUB_WORKSPACE/os_cache
cmake --build $GITHUB_WORKSPACE/build --target check-clang
- name: check-sycl
if: always()
run: |
cmake --build $GITHUB_WORKSPACE/build --target check-sycl
- name: check-llvm-spirv
if: always()
run: |
cmake --build $GITHUB_WORKSPACE/build --target check-llvm-spirv
- name: check-xptifw
if: always()
run: |
cmake --build $GITHUB_WORKSPACE/build --target check-xptifw
- name: Install
if: ${{ steps.parameters.build_upload_artifact }}
run: cmake --build $GITHUB_WORKSPACE/build --target install
- name: Pack
if: ${{ steps.parameters.build_upload_artifact }}
run: tar -czf llvm_sycl.tar.gz -C $GITHUB_WORKSPACE/build/install .
- name: Upload artifacts
uses: actions/upload-artifact@v1
if: ${{ steps.parameters.build_upload_artifact }}
with:
name: sycl_linux_${{ fromJSON(needs.configure.outputs.params).build_artifact_suffix }}
path: llvm_sycl.tar.gz
- name: Cleanup
if: always()
run: rm -rf $GITHUB_WORKSPACE/*

3 changes: 3 additions & 0 deletions buildbot/configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ def do_configure(args):
print("# Default CI configuration will be applied. #")
print("#############################################")

# For clang-format and clang-tidy
llvm_enable_projects += ";clang-tools-extra"

# replace not append, so ARM ^ X86
if args.arm:
llvm_targets_to_build = 'ARM;AArch64'
Expand Down