Skip to content

sdk-build-and-test #411

sdk-build-and-test

sdk-build-and-test #411

name: sdk-build-and-test
on:
push:
paths:
- .github/workflows/sdk_build_and_test.yml
- .github/actions/linuxTest/action.yml
- sdk/**
branches:
- master
- release/**
pull_request:
branches:
- master
- release/**
paths:
- sdk/**
workflow_dispatch:
schedule:
- cron: '30 5 * * *' # Daily 5:30 AM UTC / 12:30 AM EST
permissions:
contents: read
jobs:
sdk-build-and-test:
name: Test PTI ${{ matrix.os_id }} ${{ matrix.tags }}
timeout-minutes: 45
runs-on: ${{ fromJSON(matrix.tags) }}
defaults:
run:
shell: bash
strategy:
matrix:
include:
- container: ${{ vars.PTI_DOCKER_UBUNTU_24_4_ONEAPI_N }}
os_id: "ubuntu-24.04.2025.3.0"
preset: linux-icpx-release
tags: '["self-hosted", "Linux", "pti", "client", "BMG"]'
- container: ${{ vars.PTI_DOCKER_UBUNTU_24_4_ONEAPI_N }}
os_id: "ubuntu-24.04.2025.3.0"
preset: linux-icpx-release
tags: '["self-hosted", "Linux", "pti", "server", "PVC"]'
container:
image: ${{ matrix.container }}
options: --device=/dev/dri --cap-add CAP_PERFMON --shm-size=24G --volume=/dev/dri/by-path:/dev/dri/by-path
credentials:
username: ${{ vars.PTI_DOCKER_USER }}
password: ${{ secrets.PTI_DOCKER_PWD }}
if: vars.PTI_RUN_LINUX_TESTS == 1
steps:
- name: Clean-up
run: rm -rf *
- name: Checkout
uses: actions/checkout@v4
- name: Build
working-directory: sdk
run: |
source /opt/intel/oneapi/setvars.sh
cmake --preset ${{ matrix.preset }}
cmake --build --preset ${{ matrix.preset }} -j $(($(nproc)/2))
- name: Test action
uses: ./.github/actions/linuxTest
with:
wdir: sdk
preset: ${{ matrix.preset }}
- name: Build AddressSanitizer
if: contains(fromJSON(matrix.tags), 'server')
working-directory: sdk
run: |
source /opt/intel/oneapi/setvars.sh
cmake --preset linux-asan
cmake --build --preset linux-asan --parallel $(($(nproc)/2))
- name: Build ThreadSanitizer
if: contains(fromJSON(matrix.tags), 'server')
working-directory: sdk
run: |
source /opt/intel/oneapi/setvars.sh
cmake --preset linux-tsan
cmake --build --preset linux-tsan --parallel $(($(nproc)/2))
- name: Build libFuzzer
if: contains(fromJSON(matrix.tags), 'server')
working-directory: sdk
run: |
# To ensure it still builds, run build for fuzz targets until we have
# proper fuzz testing infrastructure in place.
source /opt/intel/oneapi/setvars.sh
cmake --preset linux-fuzz
cmake --build --preset linux-fuzz --parallel $(($(nproc)/2))
#
# Rocky8 has a problem with this test.
#
- name: Test AddressSanitizer
if: contains(fromJSON(matrix.tags), 'server')
working-directory: sdk
run: |
source /opt/intel/oneapi/setvars.sh
#
# Must skip Rocky8 with more than one GPU because of
# an unexpected failure as documented in PTI-74
#
if [ $(sycl-ls|grep 'ext_oneapi_level_zero:gpu:' -c) -gt 1 ] &&\
[[ $(cat /etc/redhat-release) =~ Rocky.*8 ]]; then
exit 0
fi
ctest --preset linux-asan --output-on-failure -L samples
- name: Test ThreadSanitizer
if: contains(fromJSON(matrix.tags), 'server')
working-directory: sdk
run: |
source /opt/intel/oneapi/setvars.sh
ctest --preset linux-tsan --output-on-failure -L samples
win-lib-build-and-test:
name: Test pti-lib on Windows
runs-on: ${{ fromJSON(matrix.tags) }}
timeout-minutes: 30
env:
LEVEL_ZERO_LOADER_VERSION: 1.28.0
defaults:
run:
shell: cmd
working-directory: sdk
strategy:
matrix:
include:
- preset: windows-ci-release
build-dir: wbr
tags: '["self-hosted", "Windows", "pti", "client", "BMG"]'
if: vars.PTI_RUN_TESTS == 1
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Get Level Zero Loader Version
id: loader-ver
run: |
@echo off
REM Make sure there is no whitespace between ...>>...
echo ze_loader_ver=%LEVEL_ZERO_LOADER_VERSION%>>%GITHUB_OUTPUT%
- uses: actions/cache@v4
id: cache
with:
path: sdk/level-zero-sdk
key: ${{ runner.os }}-Ze-Loader-${{ steps.loader-ver.outputs.ze_loader_ver }}
- name: Download Dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: |
@echo off
call "C:\Program Files (x86)\Intel\oneAPI\setvars-vcvarsall.bat"
call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat"
rmdir /S /Q level-zero-sdk
del /s level-zero-sdk_%LEVEL_ZERO_LOADER_VERSION%.zip
echo https://github.com/oneapi-src/level-zero/releases/download/v%LEVEL_ZERO_LOADER_VERSION%/level-zero-win-sdk-%LEVEL_ZERO_LOADER_VERSION%.zip
curl.exe -L -O https://github.com/oneapi-src/level-zero/releases/download/v%LEVEL_ZERO_LOADER_VERSION%/level-zero-win-sdk-%LEVEL_ZERO_LOADER_VERSION%.zip
unzip.exe -q level-zero-win-sdk-%LEVEL_ZERO_LOADER_VERSION%.zip -d level-zero-sdk
echo "Successfully Downloaded Level Zero Loader Version %LEVEL_ZERO_LOADER_VERSION%"
- name: Build
run: |
@echo off
call "C:\Program Files (x86)\Intel\oneAPI\setvars-vcvarsall.bat"
call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat"
set /A JOBS=%NUMBER_OF_PROCESSORS%/2
rmdir /S /Q ${{ matrix.build-dir }}
cmake --preset ${{ matrix.preset }}
cmake --build --preset ${{ matrix.preset }} --parallel %JOBS%
- name: Test
run: |
@echo off
call "C:\Program Files (x86)\Intel\oneAPI\setvars-vcvarsall.bat"
call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat"
REM TODO(PTI-88): OverheadRecordsCountsAllOnesViewRecords fails on Windows. Investigation needed. Bug filed.
ctest --output-on-failure --preset ${{ matrix.preset }} -LE performance ^
-E "MainFixtureTest.OverheadRecordsCountsAllOnesViewRecords"
- name: Quarantined tests # flaky tests
continue-on-error: true
run: |
@echo off
call "C:\Program Files (x86)\Intel\oneAPI\setvars-vcvarsall.bat"
call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat"
ctest --output-on-failure --preset ${{ matrix.preset }} -L performance
if %ERRORLEVEL% NEQ 0 (
echo ::warning::Quarantined performance tests step failed.
)
exit /b 0 ::always exit 0 to keep the green check mark going