Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
941831a
Add Intel SYCL x86 CI smoke test
allnes Mar 16, 2026
131da29
Fix SYCL CI x86 setup and concurrency
allnes Mar 16, 2026
69e8aff
Enable SYCL CI fail-fast matrix
allnes Mar 16, 2026
8494713
Fix SYCL CI toolchain detection
allnes Mar 16, 2026
2718191
Fix Windows SYCL compiler paths
allnes Mar 16, 2026
479595a
Trim OpenCV from SYCL CI
allnes Mar 16, 2026
9cca983
Use prebuilt oneTBB in SYCL CI
allnes Mar 16, 2026
4a8aa93
Use clang-cl for Windows SYCL CI
allnes Mar 16, 2026
b0b5218
Use OpenCV 4.6 binaries in SYCL CI
allnes Mar 16, 2026
8da4eff
Use latest Windows OpenCV in SYCL CI
allnes Mar 17, 2026
8357129
Restore default oneDNN TBB ordering
allnes Mar 17, 2026
d5471e4
Fix SYCL CI and macOS arm64 path
allnes Mar 17, 2026
e0b875b
Run macOS SYCL job in parallel
allnes Mar 17, 2026
b01990c
Enable ccache and full test runs in SYCL CI
allnes Mar 17, 2026
def2327
Fix Windows SYCL tests with clang-cl
allnes Mar 17, 2026
2326b9f
Fix Windows googletest targets with clang-cl
allnes Mar 17, 2026
83ba14c
Fix native_cpu SYCL builds on Windows
allnes Mar 17, 2026
5fc4d9f
Fix x86 SYCL OpenCL runtime setup
allnes Mar 17, 2026
b50cf5b
Fix SYCL example warnings with Clang
allnes Mar 17, 2026
1cca4ed
Isolate SYCL kernel compilation
allnes Mar 17, 2026
ab1fc95
Use x86_64 AOT SYCL target in CI
allnes Mar 17, 2026
49d9dbd
Fix Linux SYCL debug runtime path
allnes Mar 17, 2026
416f09c
Use Intel OpenCL runtime in Linux SYCL CI
allnes Mar 17, 2026
5e9ad6c
Use a named SYCL kernel in example
allnes Mar 17, 2026
a5c6a90
Build SYCL example kernel in executable target
allnes Mar 17, 2026
a3d557a
Keep iostream out of SYCL kernel translation unit
allnes Mar 17, 2026
3383ba2
Move SYCL queue setup to host example
allnes Mar 17, 2026
946dc47
Expose SYCL headers to host example sources
allnes Mar 17, 2026
0832580
Fix SYCL host includes and static analysis scope
allnes Mar 17, 2026
ba1c422
Suppress host-only SYCL header warnings
allnes Mar 17, 2026
1ecf41b
Fix Windows SYCL target selection
allnes Mar 17, 2026
f849fb8
Prefer Intel SYCL Windows drivers
allnes Mar 17, 2026
ba9932b
Disable Windows SYCL compiler launcher
allnes Mar 17, 2026
2f57a79
Fix Windows warning flags for icpx
allnes Mar 17, 2026
429a36b
Handle GNU-style Windows clang warnings
allnes Mar 17, 2026
5f82816
Extract SYCL CI scripts
allnes Mar 17, 2026
6a07c7c
Fix Windows test getenv warnings
allnes Mar 17, 2026
a15aaf7
Keep OpenMP enabled in SYCL CI
allnes Mar 17, 2026
f4105ac
Drop custom HAS_OPENMP define
allnes Mar 17, 2026
0b7930d
Simplify OpenMP integration
allnes Mar 17, 2026
012441d
Apply SYCL review feedback
allnes Mar 17, 2026
cce72cd
Move vendored OpenCV build to ExternalProject
allnes Mar 17, 2026
1f86f16
Fix Linux SYCL OpenMP detection
allnes Mar 17, 2026
4b8b3de
Fix PR CI regressions
allnes Mar 17, 2026
cb4a446
Fix CI regressions in static analysis and SYCL
allnes Mar 18, 2026
b3b3233
Limit clang-format CI to changed files
allnes Mar 18, 2026
e3fb4f2
Fix PR clang-format ref handling
allnes Mar 18, 2026
e8b2cf4
Fix Windows OpenCV build ordering
allnes Mar 18, 2026
fd9e87f
Fix OpenCV include layout across platforms
allnes Mar 18, 2026
f014ced
Disable OpenMP in external OpenCV build
allnes Mar 18, 2026
3bc43bc
Convert CI helper scripts to Python
allnes Mar 18, 2026
b9f30a0
Use libiomp5 for Linux SYCL OpenMP
allnes Mar 18, 2026
037ccad
Pass OpenMP include dir to Linux SYCL builds
allnes Mar 19, 2026
9b8897f
Scope OpenMP to consuming targets
allnes Mar 19, 2026
804e8e4
Use package-based SYCL integration
allnes Mar 19, 2026
349d964
Restore clang-format action
allnes Mar 19, 2026
2980a81
Add AdaptiveCpp Linux arm SYCL job
allnes Mar 19, 2026
bfb79bf
Use compiler-driven Intel SYCL flow
allnes Mar 19, 2026
a30f6bb
Fix macOS AdaptiveCpp OpenMP detection
allnes Mar 19, 2026
6fed73a
Pin Linux SYCL builds to GCC 13
allnes Mar 19, 2026
3a17b13
Use explicit GCC install dir for Intel SYCL
allnes Mar 19, 2026
2d3b237
Fix SYCL review issues and Linux PSTL build
allnes Mar 19, 2026
413b0c6
Avoid cstdint in Intel SYCL headers
allnes Mar 19, 2026
5c4e997
Format integer-header changes and fix OpenMP include order
allnes Mar 19, 2026
17cd8f3
Fix integer include order before TBB
allnes Mar 19, 2026
600c5de
Preserve integer includes before OpenMP and TBB
allnes Mar 19, 2026
3322b4f
Use compiler OpenMP headers in SYCL CI
allnes Mar 19, 2026
1dbf531
Use Intel OpenMP headers in SYCL CI
allnes Mar 19, 2026
8ea46d1
Use oneAPI compiler for Linux SYCL CI
allnes Mar 19, 2026
365432d
Treat Kokkos headers as system includes
allnes Mar 19, 2026
ca552f8
Expose Intel SYCL runtime in Linux CI
allnes Mar 19, 2026
9ebb925
Use native CPU backend for Linux SYCL CI
allnes Mar 19, 2026
7be71bf
Let Linux SYCL CI use default device selection
allnes Mar 19, 2026
fb25aee
Skip empty SYCL device selector in CI
allnes Mar 19, 2026
a936835
Align Linux Intel SYCL target and device
allnes Mar 19, 2026
5ad553c
Disable libspirv for native CPU SYCL
allnes Mar 19, 2026
67b9aa2
Use PoCL for Linux Intel SYCL CI
allnes Mar 19, 2026
c3cdc22
Restore Intel OpenCL runtime for Linux SYCL
allnes Mar 19, 2026
cd8e24e
Broaden Linux OpenCL SYCL selector
allnes Mar 19, 2026
2e21875
Use Intel OpenCL ICD for Linux SYCL
allnes Mar 19, 2026
17e57cf
Skip unsupported Linux SYCL example device
allnes Mar 19, 2026
55a85b0
Restore mandatory SYCL test execution
allnes Mar 19, 2026
e7741bc
Use Intel native CPU container for Linux SYCL
allnes Mar 19, 2026
c9f83fe
Use oneAPI compiler for Linux native CPU CI
allnes Mar 19, 2026
abff6a6
Build cached Intel native CPU toolchain in CI
allnes Mar 19, 2026
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
4 changes: 4 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
name: CI

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

on:
push:
pull_request:
Expand Down
7 changes: 6 additions & 1 deletion .github/workflows/static-analysis.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
name: Static analysis

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

on: [pull_request]

jobs:
Expand Down Expand Up @@ -27,4 +31,5 @@ jobs:
cmake --build build --parallel
- name: Run clang-tidy
run: |
clang-tidy app/**/*.cpp src/**/*.cpp -format-style=file -header-filter="($PWD/include/.*|$PWD/src/.*|$PWD/app/.*)" -p build
mapfile -t sources < <(find app src -path 'app/SYCL' -prune -o -name '*.cpp' -print)
clang-tidy "${sources[@]}" -format-style=file -header-filter="($PWD/include/.*|$PWD/src/.*|$PWD/app/.*)" -p build
190 changes: 190 additions & 0 deletions .github/workflows/sycl-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
name: SYCL CI

on:
pull_request:
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

env:
INTEL_LLVM_TAG: nightly-2026-03-17
INTEL_OPENCL_CPU_RUNTIME_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ad824c04-01c8-4ae5-b5e8-164a04f67609/w_opencl_runtime_p_2025.3.1.762.exe
ADAPTIVECPP_TAG: v25.10.0

jobs:
prepare-sycl-linux-x86-toolchain:
name: prepare-linux-x86_64-toolchain
runs-on: ubuntu-latest
timeout-minutes: 360

defaults:
run:
shell: bash

steps:
- uses: actions/checkout@v4

- name: Setup Ninja
uses: seanmiddleditch/gha-setup-ninja@v6

- name: Setup ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: ccache-${{ github.job }}-${{ env.INTEL_LLVM_TAG }}
max-size: 8G

- name: Restore Intel toolchain cache
uses: actions/cache@v4
with:
path: ${{ runner.temp }}/intel-nativecpu-toolchain/install
key: intel-nativecpu-toolchain-${{ env.INTEL_LLVM_TAG }}-v1

- name: Prepare Intel native_cpu toolchain
run: python3 ./scripts/ci/sycl_x86_setup.py linux-x86_64

build-sycl-linux-x86:
name: linux-x86_64 / ${{ matrix.build_type }}
runs-on: ubuntu-latest
needs: prepare-sycl-linux-x86-toolchain
timeout-minutes: 360
strategy:
fail-fast: true
matrix:
build_type:
- Debug
- Release

defaults:
run:
shell: bash

steps:
- uses: actions/checkout@v4
with:
submodules: true

- name: Setup Ninja
uses: seanmiddleditch/gha-setup-ninja@v6

- name: Setup ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: ccache-${{ github.job }}-${{ matrix.build_type }}
max-size: 2G

- name: Restore Intel toolchain cache
uses: actions/cache@v4
with:
path: ${{ runner.temp }}/intel-nativecpu-toolchain/install
key: intel-nativecpu-toolchain-${{ env.INTEL_LLVM_TAG }}-v1

- name: Prepare platform settings
run: python3 ./scripts/ci/sycl_x86_setup.py linux-x86_64

- name: Configure
run: python3 ./scripts/ci/sycl_configure.py "${{ matrix.build_type }}" "${ITLABAI_ENABLE_OPENCV_APPS}"

- name: Build
run: cmake --build build --parallel

- name: Test
run: |
if [ -n "${DEVICE_SELECTOR}" ]; then
ONEAPI_DEVICE_SELECTOR="${DEVICE_SELECTOR}" ctest --test-dir build --output-on-failure --parallel
else
ctest --test-dir build --output-on-failure --parallel
fi

build-sycl-windows-x86:
name: windows-x86_64 / ${{ matrix.build_type }}
runs-on: windows-2025
timeout-minutes: 360
strategy:
fail-fast: true
matrix:
build_type:
- Debug
- Release

defaults:
run:
shell: bash

steps:
- uses: actions/checkout@v4
with:
submodules: true

- name: Setup Ninja
uses: seanmiddleditch/gha-setup-ninja@v6

- name: Setup ccache
uses: Chocobo1/setup-ccache-action@v1
with:
windows_compile_environment: msvc

- name: Setup MSVC environment
uses: ilammy/msvc-dev-cmd@v1

- name: Prepare platform settings
run: python3 ./scripts/ci/sycl_x86_setup.py windows-x86_64

- name: Configure
run: python3 ./scripts/ci/sycl_configure.py "${{ matrix.build_type }}" "${ITLABAI_ENABLE_OPENCV_APPS}"

- name: Build
run: cmake --build build --parallel

- name: Test
run: |
if [ -n "${DEVICE_SELECTOR}" ]; then
ONEAPI_DEVICE_SELECTOR="${DEVICE_SELECTOR}" ctest --test-dir build --output-on-failure --parallel
else
ctest --test-dir build --output-on-failure --parallel
fi

build-sycl-adaptivecpp-arm64:
name: ${{ matrix.platform }} / ${{ matrix.build_type }}
runs-on: ${{ matrix.platform == 'linux-arm64' && 'ubuntu-24.04-arm' || 'macos-15' }}
timeout-minutes: 360
strategy:
fail-fast: true
matrix:
platform:
- linux-arm64
- macos-arm64
build_type:
- Debug
- Release

defaults:
run:
shell: bash

steps:
- uses: actions/checkout@v4
with:
submodules: true

- name: Setup Ninja
uses: seanmiddleditch/gha-setup-ninja@v6

- name: Setup ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: ccache-${{ github.job }}-${{ matrix.platform }}-${{ matrix.build_type }}
max-size: 2G

- name: Install AdaptiveCpp prerequisites
run: python3 ./scripts/ci/sycl_adaptivecpp_setup.py

- name: Configure
run: python3 ./scripts/ci/sycl_configure.py "${{ matrix.build_type }}" "${ITLABAI_ENABLE_OPENCV_APPS}"

- name: Build
run: cmake --build build --parallel

- name: Test
run: ctest --test-dir build --output-on-failure --parallel
22 changes: 10 additions & 12 deletions 3rdparty/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,15 +1,22 @@
add_subdirectory(googletest)

if(WIN32 AND CMAKE_CXX_COMPILER_ID MATCHES "Clang")
foreach(itlabai_gtest_target IN ITEMS gtest gtest_main gmock gmock_main)
if(TARGET ${itlabai_gtest_target})
target_compile_options(${itlabai_gtest_target} PRIVATE -Wno-character-conversion)
endif()
endforeach()
endif()

set(DNNL_CPU_RUNTIME "TBB" CACHE STRING "oneDNN CPU threading runtime")

add_subdirectory(oneDNN)

# Unified TBB Configuration
# Unified TBB configuration for the vendored fallback.
option(TBB_TEST "Build TBB tests" OFF)
option(TBB_EXAMPLES "Build TBB examples" OFF)
set(TBB_STRICT OFF CACHE BOOL "Treat compiler warnings as errors")

# Configure TBB with unified settings
add_subdirectory(TBB)

# Create a unified TBB interface target
Expand All @@ -20,17 +27,8 @@ if(NOT TARGET TBB_unified)
$<TARGET_PROPERTY:TBB::tbb,INTERFACE_INCLUDE_DIRECTORIES>
)

# Platform-specific runtime library handling for Windows
# Platform-specific runtime library handling for Windows.
if(WIN32)
# Get the TBB library directory based on build type
if(CMAKE_BUILD_TYPE)
string(TOLOWER ${CMAKE_BUILD_TYPE} lower_build)
set(TBB_LIB_DIR "${CMAKE_SOURCE_DIR}/3rdparty/TBB/build/tbb_${lower_build}")
else()
set(TBB_LIB_DIR "${CMAKE_SOURCE_DIR}/3rdparty/TBB/build/tbb_debug")
endif()

# Create a custom target to copy TBB runtime libraries
add_custom_target(copy_tbb_runtime ALL
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/bin"
COMMAND ${CMAKE_COMMAND} -E copy_if_different
Expand Down
Loading
Loading