Skip to content

Add full SYCL support for Windows builds#7513

Open
Copilot wants to merge 14 commits into
mainfrom
copilot/add-full-sycl-support-windows
Open

Add full SYCL support for Windows builds#7513
Copilot wants to merge 14 commits into
mainfrom
copilot/add-full-sycl-support-windows

Conversation

Copilot AI commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Type

  • New feature (non-breaking change which adds functionality)

Motivation and Context

Adds full Windows SYCL support to align with PyTorch 2025.3.1 (oneAPI 2025.3.1). Migrates the Windows CI matrix from CUDA ON/OFF to target cpu, cuda, and xpu (SYCL), enabling open3d_xpu Python wheels and C++ binary distributions with SYCL acceleration on Windows.

Checklist:

  • I have run python util/check_style.py --apply to apply Open3D code style to my code.
  • This PR changes Open3D behavior or adds new functionality.
    • Both C++ (Doxygen) and Python (Sphinx / Google style) documentation is updated accordingly.
    • I have added or updated C++ and / or Python unit tests OR included test results here.
  • I will follow up and update the code if CI fails.

Description

CMake & Build Infrastructure

  • Relaxed Platform Checks: Lifted the Linux-only restriction on BUILD_SYCL_MODULE in CMakeLists.txt to support Windows builds.
  • Packaging Names: Appended -sycl to the packaged distribution name in cmake/Open3DPackaging.cmake when built with SYCL.
  • XPU Python Pathing: Routed compiled SYCL bindings to open3d/xpu in cpp/pybind/CMakeLists.txt and updated cpp/pybind/make_python_package.cmake to bundle the xpu directory structure.

Python Runtime & DLL Loading

  • Dynamic DLL Resolution: Configured Windows Python initialization in python/open3d/__init__.py to locate and load Intel compiler, oneMKL, and oneTBB redistributable DLL directories. Resolves the runtime directories dynamically using ONEAPI_ROOT (or default paths) with os.add_dll_directory to prevent DLL loading errors on Python 3.8+.
  • Subpackage Routing: Updated visualization, ML, and ML contrib initializers to import symbols correctly from the xpu submodule when running on a SYCL-enabled (xpu) binary.

GHA Windows CI / CD Matrix

  • Matrix Migration: Changed the GHA strategy matrix in .github/workflows/windows.yml from BUILD_CUDA_MODULE: [ON, OFF] to device: [cpu, cuda, xpu].
  • oneAPI Silent Provisioning: Added a setup step to fetch, silently install, and verify the exit codes for oneMKL 2025.3.1.10 and the Intel Compiler 2025.3.1.15 on Windows GHA runners when targeting xpu.
  • Toolchain & Linker Config: Configured CMake to invoke MSBuild with -T "Intel(R) oneAPI DPC++ Compiler" and search for OpenCL dynamically.
  • Unified Wheel Tests: Configured wheel building and testing to support both CPU and XPU variants, using PowerShell pattern-matching to automatically discover and verify the built wheel.
import open3d as o3d

# Check built configuration
print("SYCL Module Compiled:", o3d._build_config["BUILD_SYCL_MODULE"])

# Verify device availability
if o3d._build_config["BUILD_SYCL_MODULE"]:
    print("SYCL Device Available:", o3d.core.sycl.is_available())

@update-docs

update-docs Bot commented Jun 12, 2026

Copy link
Copy Markdown

Thanks for submitting this pull request! The maintainers of this repository would appreciate if you could update the CHANGELOG.md based on your changes.

@ssheorey ssheorey marked this pull request as ready for review June 16, 2026 06:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants