Skip to content

Sycl nightly workflow #34

Sycl nightly workflow

Sycl nightly workflow #34

Workflow file for this run

name: SYCL
on:
workflow_call:
push:
pull_request:
permissions:
contents: read
jobs:
last-release:
# run only on upstream; forks will not have the HW
# currently this job is disabled as sycl-ls doesn't detect devices on the last release + latest UMF
if: github.repository == 'oneapi-src/unified-memory-framework' && false
name: Last release
runs-on: [DSS-LEVEL_ZERO, DSS-UBUNTU]
steps:
# Install sycl
- name: Download latest llvm release
run: |
latest_release=$(curl -s https://api.github.com/repos/intel/llvm/releases/latest | grep "tag_name" | cut -d '"' -f 4)
download_url="https://github.com/intel/llvm/archive/refs/tags/${latest_release}.tar.gz"
wget --no-verbose $download_url -O sycl_linux.tar.gz
- name: Extract llvm
run: |
mkdir sycl_repo
tar -xzf sycl_linux.tar.gz -C sycl_repo --strip-components=1
- name: Build llvm
working-directory: sycl_repo
run: |
python3 buildbot/configure.py
python3 buildbot/compile.py -j $(nproc)
- name: Add llvm install directory to environment
run: |
echo "SYCL_INSTALL_DIR=${{ github.workspace }}/sycl_repo/build/install" >> $GITHUB_ENV
- name: Add llvm to PATH
run: |
echo "${{ github.workspace }}/llvm/bin:$PATH" >> $GITHUB_PATH
echo "LD_LIBRARY_PATH=${{env.SYCL_INSTALL_DIR}}/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV
- name: Remove UMF installed with llvm
run: rm -f ${{env.SYCL_INSTALL_DIR}}/lib/libumf*
- name: Print installed sycl files
run: |
tree -L 2 ${{env.SYCL_INSTALL_DIR}}
# Install UMF
- name: Checkout UMF
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
path: umf_repo
fetch-depth: 0
- name: Configure UMF
working-directory: umf_repo
run: >
cmake
-B build
-DCMAKE_INSTALL_PREFIX=${{ env.SYCL_INSTALL_DIR }}
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_C_COMPILER=gcc
-DCMAKE_CXX_COMPILER=g++
-DUMF_BUILD_SHARED_LIBRARY=ON
-DUMF_BUILD_TESTS=OFF
-DUMF_BUILD_EXAMPLES=OFF
- name: Build and install UMF
working-directory: umf_repo
run: cmake --build build --target install -j$(nproc)
- name: Print installed lib files
run: ls -l ${{env.SYCL_INSTALL_DIR}}/lib
# Test sycl
- name: Run sycl-ls
run: |
${{env.SYCL_INSTALL_DIR}}/bin/sycl-ls
- name: Print clang++ version
run: clang++ --version
- name: Run sycl tests built locally
working-directory: sycl_repo
run: |
${{env.SYCL_INSTALL_DIR}}/bin/clang++ -fsycl sycl/test-e2e/AbiNeutral/submit-kernel.cpp -o submit-kernel -I${{env.SYCL_INSTALL_DIR}}/include -I${{env.SYCL_INSTALL_DIR}}/include/sycl
ONEAPI_DEVICE_SELECTOR=level_zero:gpu ./submit-kernel
- name: Clean up
if: always()
run: rm -rf llvm sycl_repo sycl_linux.tar.gz
latest-daily:
# run only on upstream; forks will not have the HW
if: github.repository == 'oneapi-src/unified-memory-framework'
name: Latest daily build
runs-on: ["DSS-LEVEL_ZERO", "DSS-UBUNTU"]
steps:
# Install sycl
- name: Download latest llvm daily release
run: |
latest_tag=$(curl -s https://api.github.com/repos/intel/llvm/releases | awk -F'"' '/"tag_name":/ {print $4; exit}')
download_url="https://github.com/intel/llvm/releases/download/${latest_tag}/sycl_linux.tar.gz"
wget --no-verbose $download_url -O sycl_linux.tar.gz
- name: Extract llvm
run: |
mkdir llvm
tar -xzf sycl_linux.tar.gz -C llvm --strip-components=1
- name: Add sycl to PATH
run: |
echo "${{ github.workspace }}/llvm/bin:$PATH" >> $GITHUB_PATH
echo "LD_LIBRARY_PATH=${{ github.workspace }}/llvm/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV
# Install UMF
- name: Checkout UMF
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
path: umf_repo
fetch-depth: 0
- name: Configure UMF
working-directory: umf_repo
run: >
cmake
-B build
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/llvm
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_C_COMPILER=gcc
-DCMAKE_CXX_COMPILER=g++
-DUMF_BUILD_SHARED_LIBRARY=ON
-DUMF_BUILD_TESTS=OFF
-DUMF_BUILD_EXAMPLES=OFF
- name: Remove UMF installed with llvm
run: rm -f llvm/lib/libumf*
- name: Build and install UMF
working-directory: umf_repo
run: cmake --build build --target install -j$(nproc)
- name: Print installed lib files
run: ls -l llvm/lib
# Test sycl-ls
- name: Run sycl-ls
run: |
./llvm/bin/sycl-ls
# Test several sycl e2e test
- name: Checkout sycl
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
repository: intel/llvm
path: sycl_repo
fetch-depth: 1
ref: sycl
- name: Create sycl tests build directory
run: |
echo "TESTS_BUILD_DIR=${{ github.workspace }}/sycl_repo/test-e2e/build" >> $GITHUB_ENV
mkdir ${{env.TESTS_BUILD_DIR}}
- name: Build sycl e2e tests
working-directory: sycl_repo
run: |
./llvm/bin/clang++ -fsycl sycl/test-e2e/AbiNeutral/submit-kernel.cpp -o ${{env.TESTS_BUILD_DIR}}/submit-kernel -Iinclude
./llvm/bin/clang++ -fsycl sycl/test-e2e/Adapters/interop-l0-direct.cpp -o ${{env.TESTS_BUILD_DIR}}/interop-l0-direct -lze_loader -Iinclude
./llvm/bin/clang++ -fsycl sycl/test-e2e/Adapters/level_zero_interop_memcpy.cpp -o ${{env.TESTS_BUILD_DIR}}/level_zero_interop_memcpy -Iinclude
./llvm/bin/clang++ -fsycl sycl/test-e2e/Basic/build_log.cpp -o ${{env.TESTS_BUILD_DIR}}/build_log -Iinclude
./llvm/bin/clang++ -fsycl sycl/test-e2e/PerformanceTests/ParallelFor/parallel_for_range_roundup.cpp -fsycl-range-rounding=force -o ${{env.TESTS_BUILD_DIR}}/parallel_for_range_roundup -Iinclude
./llvm/bin/clang++ -fsycl sycl/test-e2e/ThreadSanitizer/check_no_race.cpp -Xarch_device -fsanitize=thread -O0 -g -o ${{env.TESTS_BUILD_DIR}}/check_no_race -Iinclude
./llvm/bin/clang++ -fsycl sycl/test-e2e/USM/fill_any_size.cpp -o ${{env.TESTS_BUILD_DIR}}/fill_any_size -Iinclude
- name: Run sycl e2e tests
env:
ONEAPI_DEVICE_SELECTOR: level_zero:gpu
UMF_LOG: "level:debug;flush:debug;output:stdout;pid:yes"
working-directory: ${{env.TESTS_BUILD_DIR}}
run: |
./submit-kernel
./interop-l0-direct
./level_zero_interop_memcpy
./build_log
./parallel_for_range_roundup
./check_no_race
./fill_any_size
- name: Clean up
if: always()
run: rm -rf llvm sycl_linux.tar.gz