-
Notifications
You must be signed in to change notification settings - Fork 2
Add SYCL support #284
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
Open
allnes
wants to merge
135
commits into
embedded-dev-research:main
Choose a base branch
from
allnes:an/sycl-integration
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Add SYCL support #284
Changes from all commits
Commits
Show all changes
135 commits
Select commit
Hold shift + click to select a range
941831a
Add Intel SYCL x86 CI smoke test
allnes 131da29
Fix SYCL CI x86 setup and concurrency
allnes 69e8aff
Enable SYCL CI fail-fast matrix
allnes 8494713
Fix SYCL CI toolchain detection
allnes 2718191
Fix Windows SYCL compiler paths
allnes 479595a
Trim OpenCV from SYCL CI
allnes 9cca983
Use prebuilt oneTBB in SYCL CI
allnes 4a8aa93
Use clang-cl for Windows SYCL CI
allnes b0b5218
Use OpenCV 4.6 binaries in SYCL CI
allnes 8da4eff
Use latest Windows OpenCV in SYCL CI
allnes 8357129
Restore default oneDNN TBB ordering
allnes d5471e4
Fix SYCL CI and macOS arm64 path
allnes e0b875b
Run macOS SYCL job in parallel
allnes b01990c
Enable ccache and full test runs in SYCL CI
allnes def2327
Fix Windows SYCL tests with clang-cl
allnes 2326b9f
Fix Windows googletest targets with clang-cl
allnes 83ba14c
Fix native_cpu SYCL builds on Windows
allnes 5fc4d9f
Fix x86 SYCL OpenCL runtime setup
allnes b50cf5b
Fix SYCL example warnings with Clang
allnes 1cca4ed
Isolate SYCL kernel compilation
allnes ab1fc95
Use x86_64 AOT SYCL target in CI
allnes 49d9dbd
Fix Linux SYCL debug runtime path
allnes 416f09c
Use Intel OpenCL runtime in Linux SYCL CI
allnes 5e9ad6c
Use a named SYCL kernel in example
allnes a5c6a90
Build SYCL example kernel in executable target
allnes a3d557a
Keep iostream out of SYCL kernel translation unit
allnes 3383ba2
Move SYCL queue setup to host example
allnes 946dc47
Expose SYCL headers to host example sources
allnes 0832580
Fix SYCL host includes and static analysis scope
allnes ba1c422
Suppress host-only SYCL header warnings
allnes 1ecf41b
Fix Windows SYCL target selection
allnes f849fb8
Prefer Intel SYCL Windows drivers
allnes ba9932b
Disable Windows SYCL compiler launcher
allnes 2f57a79
Fix Windows warning flags for icpx
allnes 429a36b
Handle GNU-style Windows clang warnings
allnes 5f82816
Extract SYCL CI scripts
allnes 6a07c7c
Fix Windows test getenv warnings
allnes a15aaf7
Keep OpenMP enabled in SYCL CI
allnes f4105ac
Drop custom HAS_OPENMP define
allnes 0b7930d
Simplify OpenMP integration
allnes 012441d
Apply SYCL review feedback
allnes cce72cd
Move vendored OpenCV build to ExternalProject
allnes 1f86f16
Fix Linux SYCL OpenMP detection
allnes 4b8b3de
Fix PR CI regressions
allnes cb4a446
Fix CI regressions in static analysis and SYCL
allnes b3b3233
Limit clang-format CI to changed files
allnes e3fb4f2
Fix PR clang-format ref handling
allnes e8b2cf4
Fix Windows OpenCV build ordering
allnes fd9e87f
Fix OpenCV include layout across platforms
allnes f014ced
Disable OpenMP in external OpenCV build
allnes 3bc43bc
Convert CI helper scripts to Python
allnes b9f30a0
Use libiomp5 for Linux SYCL OpenMP
allnes 037ccad
Pass OpenMP include dir to Linux SYCL builds
allnes 9b8897f
Scope OpenMP to consuming targets
allnes 804e8e4
Use package-based SYCL integration
allnes 349d964
Restore clang-format action
allnes 2980a81
Add AdaptiveCpp Linux arm SYCL job
allnes bfb79bf
Use compiler-driven Intel SYCL flow
allnes a30f6bb
Fix macOS AdaptiveCpp OpenMP detection
allnes 6fed73a
Pin Linux SYCL builds to GCC 13
allnes 3a17b13
Use explicit GCC install dir for Intel SYCL
allnes 2d3b237
Fix SYCL review issues and Linux PSTL build
allnes 413b0c6
Avoid cstdint in Intel SYCL headers
allnes 5c4e997
Format integer-header changes and fix OpenMP include order
allnes 17cd8f3
Fix integer include order before TBB
allnes 600c5de
Preserve integer includes before OpenMP and TBB
allnes 3322b4f
Use compiler OpenMP headers in SYCL CI
allnes 1dbf531
Use Intel OpenMP headers in SYCL CI
allnes 8ea46d1
Use oneAPI compiler for Linux SYCL CI
allnes 365432d
Treat Kokkos headers as system includes
allnes ca552f8
Expose Intel SYCL runtime in Linux CI
allnes 9ebb925
Use native CPU backend for Linux SYCL CI
allnes 7be71bf
Let Linux SYCL CI use default device selection
allnes fb25aee
Skip empty SYCL device selector in CI
allnes a936835
Align Linux Intel SYCL target and device
allnes 5ad553c
Disable libspirv for native CPU SYCL
allnes 67b9aa2
Use PoCL for Linux Intel SYCL CI
allnes c3cdc22
Restore Intel OpenCL runtime for Linux SYCL
allnes cd8e24e
Broaden Linux OpenCL SYCL selector
allnes 2e21875
Use Intel OpenCL ICD for Linux SYCL
allnes 17e57cf
Skip unsupported Linux SYCL example device
allnes 55a85b0
Restore mandatory SYCL test execution
allnes e7741bc
Use Intel native CPU container for Linux SYCL
allnes c9f83fe
Use oneAPI compiler for Linux native CPU CI
allnes abff6a6
Build cached Intel native CPU toolchain in CI
allnes e41e34f
Fix Intel native CPU cache and Windows SYCL sources
allnes 466c3c1
Use build tree for cached Intel SYCL toolchain
allnes 338d0db
Detect OpenMP runtime from Intel SYCL toolchain
allnes 94eb6fb
Align Linux SYCL toolchain build with intel llvm
allnes 107e543
Build OpenMP runtime into Intel SYCL toolchain
allnes 4c8d7be
Install OpenMP from LLVM runtimes build
allnes e3591f6
Install LLVM runtimes with cmake install
allnes 71dcbb6
Use Intel SYCL build tree directly in CI
allnes 3e207f0
Relax Intel build-tree OpenMP assumptions
allnes 2bd0e06
Use GCC OpenMP with source-built Intel SYCL
allnes f188dde
Fix Intel SYCL CI toolchain wiring
allnes e0609d0
Merge branch 'main' into an/sycl-integration
allnes 335cc4c
Align x86 SYCL CI targets and OpenMP headers
allnes c1a326e
Fix Intel SYCL example builds on x86 CI
allnes 9d3bbab
Isolate SYCL kernel from OpenMP compile flags
allnes 58167bb
Restore SYCL host includes for example
allnes 3461caa
Link Intel SYCL example runtime
allnes fca6f3b
Fix Windows SYCL linking and ccache
allnes 4dc2b1b
Fail fast on SYCL example build
allnes 1cdb8ed
Revert "Fail fast on SYCL example build"
allnes e734855
Compile Windows SYCL host source in SYCL mode
allnes d45abf3
Compile Windows SYCL host source as host-only
allnes 8b9e230
Cache Windows SYCL toolchain assets
allnes cf03b4e
Remove unused algorithm include from SYCL example
allnes 27068fe
Use compiler-driven SYCL link on Windows
allnes ed824e1
Link Windows SYCL example with clang driver
allnes 4fbeba4
Fix Windows SYCL link command template
allnes 5290a27
Use clang-cl driver for Windows SYCL link
allnes 695eb66
Revert broken Windows SYCL link override
allnes 5ad3e54
Wrap Windows SYCL example link step
allnes 9cfb858
Fix Windows SYCL link wrapper invocation
allnes eb7f804
Fix Windows SYCL wrapper Python command
allnes 80d2a60
Handle Windows linker args in SYCL wrapper
allnes 9222ecd
Add Intel SYCL lib path on Windows
allnes 3623bb4
Expose Intel SYCL lib dir on Windows PATH
allnes 563bed2
Wire Windows OpenCL CPU runtime paths
allnes 00b4d78
Patch Windows OpenCL runtime TBB config
allnes ab6426b
Use absolute TBB path for Windows OpenCL
allnes ddedd0c
Use full TBB runtime dir for Windows OpenCL
allnes 360bade
Stage Intel OpenCL runtime for Windows SYCL
allnes 2d84fb1
Isolate Windows SYCL example test
allnes e8ac777
Compile Windows SYCL host TU in host-only mode
allnes fa80486
Skip SYCL example runtime test in CI
allnes 7b4a625
Trim unrelated changes from SYCL PR
allnes 6c2ff29
Fix Windows host-only SYCL example compile
allnes 88046f2
Stop compiling Windows SYCL example as SYCL TU
allnes 221376e
Address remaining SYCL review comments
allnes 3c39b37
Restore global OpenMP linking
allnes 659dfa3
Revert "Restore global OpenMP linking"
allnes c5560ab
Revert "Address remaining SYCL review comments"
allnes File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,224 @@ | ||
| 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_VERSION: 2025.3.1.762 | ||
| 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/build | ||
| key: intel-nativecpu-toolchain-${{ env.INTEL_LLVM_TAG }}-v4 | ||
|
|
||
| - 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/build | ||
| key: intel-nativecpu-toolchain-${{ env.INTEL_LLVM_TAG }}-v4 | ||
|
|
||
| - 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 -E '^SYCL\.Example$' --parallel | ||
| else | ||
| ctest --test-dir build --output-on-failure -E '^SYCL\.Example$' --parallel | ||
| fi | ||
|
|
||
| prepare-sycl-windows-x86-toolchain: | ||
| name: prepare-windows-x86_64-toolchain | ||
| runs-on: windows-2025 | ||
| timeout-minutes: 360 | ||
|
|
||
| defaults: | ||
| run: | ||
| shell: bash | ||
|
|
||
| steps: | ||
| - uses: actions/checkout@v4 | ||
|
|
||
| - name: Restore Intel toolchain cache | ||
| uses: actions/cache@v4 | ||
| with: | ||
| path: | | ||
| ${{ runner.temp }}/intel-sycl | ||
| ${{ runner.temp }}/intel-opencl-runtime | ||
| ${{ runner.temp }}/intel-opencl-runtime.exe | ||
| key: intel-windows-sycl-assets-${{ env.INTEL_LLVM_TAG }}-${{ env.INTEL_OPENCL_CPU_RUNTIME_VERSION }}-v1 | ||
|
|
||
| - name: Prepare Intel Windows SYCL assets | ||
| env: | ||
| ITLABAI_PREPARE_ONLY: "1" | ||
| run: python3 ./scripts/ci/sycl_x86_setup.py windows-x86_64 | ||
|
|
||
| build-sycl-windows-x86: | ||
| name: windows-x86_64 / ${{ matrix.build_type }} | ||
| runs-on: windows-2025 | ||
| needs: prepare-sycl-windows-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: Setup MSVC environment | ||
| uses: ilammy/msvc-dev-cmd@v1 | ||
|
|
||
| - name: Restore Intel toolchain cache | ||
| uses: actions/cache@v4 | ||
| with: | ||
| path: | | ||
| ${{ runner.temp }}/intel-sycl | ||
| ${{ runner.temp }}/intel-opencl-runtime | ||
| ${{ runner.temp }}/intel-opencl-runtime.exe | ||
| key: intel-windows-sycl-assets-${{ env.INTEL_LLVM_TAG }}-${{ env.INTEL_OPENCL_CPU_RUNTIME_VERSION }}-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: python3 ./scripts/ci/sycl_test.py | ||
|
|
||
| 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 | ||
| -E '^SYCL\.Example$' |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Still not addressed