Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
f965404
Initial plan
Copilot Feb 20, 2026
a5f1fa3
Add SYCL kernels for t/pipelines/kernel: Feature, FillInLinearSystem,…
Copilot Feb 20, 2026
f547842
Fix RGBDOdometryImpl.h: source_normal_map -> target_normal_map in SYC…
Copilot Feb 20, 2026
83aa8d9
Fix ubuntu-sycl CI: use open3d_sycl_target_sources to add -fsycl flag…
Copilot Feb 23, 2026
7b846bb
style fix
ssheorey Mar 6, 2026
c103f32
Merge branch 'main' of github.com:isl-org/Open3D into copilot/add-syc…
ssheorey Mar 6, 2026
5c3b28c
Update t/pipelines tests to use PermuteDevicesWithSYCL for SYCL devic…
Copilot Mar 13, 2026
4cbdf15
Optimize SYCL pipeline kernels: use nd_range + reduce_over_group inst…
Copilot Mar 13, 2026
27ccd45
Apply automatic code formatting
github-actions[bot] Mar 13, 2026
3569d35
Merge branch 'main' into copilot/add-sycl-kernels-for-cuda
ssheorey Mar 13, 2026
8375368
Initial plan
Copilot Mar 14, 2026
4018268
Add SYCL nearest-neighbor search support
Copilot Mar 14, 2026
26e0697
Polish SYCL nearest-neighbor messages
Copilot Mar 14, 2026
e10955f
Optimized implementation with tiles.
ssheorey Mar 16, 2026
058c09f
Apply automatic code formatting
github-actions[bot] Mar 16, 2026
ef3f5a1
Merge branch 'copilot/port-cuda-kdtree-to-sycl' of github.com:isl-org…
ssheorey Mar 16, 2026
283039b
Add SYCL support for Transform kernel: TransformPoints, TransformNorm…
Copilot Mar 16, 2026
2af54c3
Merge branch 'main' of github.com:isl-org/Open3D into copilot/add-syc…
ssheorey Jun 18, 2026
2e888fa
fix tests
ssheorey Jun 19, 2026
1f78cca
Add SYCL support for image and point cloud processing
ssheorey Jun 21, 2026
4114b4f
Add SYCL tensor backend parity for TriangleMesh and VoxelBlockGrid ke…
ssheorey Jun 21, 2026
79946d4
SYCL hashmap implementation to enable VixelBlockGrid on SYCL devices.
ssheorey Jun 23, 2026
6d26e4e
In order SYCL queue
ssheorey Jun 25, 2026
eabb97a
Remove ParallelForSYCL implementation and related tests; refactor SYC…
ssheorey Jun 26, 2026
23e53a7
format
ssheorey Jun 26, 2026
5014fd0
Improve SYCL NNS tiling, hash table layout, and SYCL-only build hygiene
ssheorey Jun 29, 2026
e264f6e
All bugs fixed. HashMap and KNNIndex are now correct for all C++ tests.
ssheorey Jun 30, 2026
6d19031
Optimized Direct Knn distance path (no AddMM). 2 orders of magnitude …
ssheorey Jun 30, 2026
62f98f0
Optimize SYCL kernels with nd_range/SLM launches; harden SYCLContext
ssheorey Jul 6, 2026
00572f0
Run SYCL tests on CPU on CI; skip unsupported tests
ssheorey Jul 6, 2026
5743a85
HyperParam Tuning for SYCL KNN and HashMap
ssheorey Jul 7, 2026
d0ccea2
Merge branch 'main' into copilot/add-sycl-kernels-for-cuda
ssheorey Jul 7, 2026
1773ff0
Fix unused-function build error in VoxelBlockGrid test and apply styl…
ssheorey Jul 7, 2026
d2354ce
Fix SYCL CPU fallback, CUDA/MSVC compile errors, and build/test issues
ssheorey Jul 9, 2026
e951197
Fix ParallelFor CPU fallback, optimize TensorIterator contiguity, and…
ssheorey Jul 9, 2026
8e81cbd
Revert unnecessary style-formatting changes to fix style-check failures
ssheorey Jul 9, 2026
a48a444
Simplify, improve commants.
ssheorey Jul 12, 2026
3300770
Port CUDA uniform-grid fixed-radius search to SYCL for FixedRadius/Hy…
ssheorey Jul 12, 2026
4de10aa
Apply clang-format/yapf style fixes; add CUDA vs SYCL NNS/hashmap des…
ssheorey Jul 13, 2026
854e34d
Fix SYCL hashmap Insert buffer-slot leak via bulk heap reservation
ssheorey Jul 15, 2026
ff88967
Add L1, L infty fixed radius search + cleanup
ssheorey Jul 17, 2026
a593133
Fix SYCL raycasting intersection undercount and ParallelFor CPU crash
ssheorey Jul 18, 2026
cbc4f6d
Merge branch 'main' of github.com:isl-org/Open3D into copilot/add-syc…
ssheorey Jul 18, 2026
6e72924
remaining parity items for sycl vs cuda. enabled some tests and one b…
ssheorey Jul 19, 2026
14768a9
delete cruft
ssheorey Jul 19, 2026
fafdf09
fix google test error
ssheorey Jul 19, 2026
90fc33e
Refactor SYCL kernels for CUDA parity and expand hash/NNS design docs.
ssheorey Jul 20, 2026
521a5f8
Fix CI: style, unused Registration helper, and targeted test skips.
ssheorey Jul 21, 2026
9cd4695
Apply style to VoxelBlockGrid tests.
ssheorey Jul 21, 2026
7fa9063
simpplify docs.
ssheorey Jul 21, 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
5 changes: 2 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@
# Docker build artifacts (wheel, dev package, ccache)
docker/*.tar.gz
docker/*.tar.xz
open3d-artifacts/*.tar.xz
open3d-artifacts/*.deb
open3d-artifacts/*.whl

# Windows build temp cmake file
CMakeSettings.json
Expand Down Expand Up @@ -41,6 +38,8 @@ _vimrc_local.vim
.vscode/
.clangd/
.ccls-cache/
AGENTS.local.md
CLAUDE.local.md

# Build artifacts
**/package-lock.json
Expand Down
2 changes: 2 additions & 0 deletions 3rdparty/curl/curl.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ endif()

if (APPLE) # homebrew does not package libidn2
set(curl_cmake_extra_args -DUSE_APPLE_IDN=ON -DUSE_LIBIDN2=OFF -DUSE_NGHTTP2=OFF)
else()
set(curl_cmake_extra_args -DUSE_NGHTTP2=OFF)
endif()

ExternalProject_Add(
Expand Down
24 changes: 17 additions & 7 deletions 3rdparty/find_dependencies.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -960,17 +960,27 @@ endif()
# flattened by CMake (e.g. when Open3D itself is a shared library and must
# fully resolve all symbols at build time), they can end up in an order where
# ld's single left-to-right archive scan fails to resolve symbols. Wrap them
# in --start-group and --end-group on UNIX (non-Apple) to ensure GNU ld
# rescans this group of libraries until all symbols resolve, regardless of
# order. We avoid CMake's modern LINK_GROUP RESCAN generator expression here
# because it produces developer warnings when applied to INTERFACE library
# targets (which Open3D::3rdparty_curl/openssl are).
# in a GNU ld archive group on UNIX (non-Apple) to ensure GNU ld rescans this
# group of libraries until all symbols resolve, regardless of order. Use the
# short "-Wl,-(" / "-Wl,-)" alias rather than "-Wl,--start-group" /
# "-Wl,--end-group": the latter are also used verbatim by MKL's GROUPED
# import (see open3d_import_3rdparty_library's GROUPED option below), and
# CMake's link-line deduplication collapses repeated identical literal flag
# strings across the whole dependency graph, emptying both groups and
# stranding MKL's libraries outside their own grouping (undefined mkl_*
# symbols at link time). We avoid CMake's modern LINK_GROUP RESCAN generator
# expression here because it produces developer warnings when applied to
# INTERFACE library targets (which Open3D::3rdparty_curl/openssl are).
# The parentheses are backslash-escaped because CMake/Ninja invokes the link
# command via "/bin/sh -c" without shell-quoting raw linker flag strings, and
# bare "(" / ")" are shell metacharacters that would otherwise cause a shell
# syntax error at link time.
if(UNIX AND NOT APPLE)
list(APPEND Open3D_3RDPARTY_PRIVATE_TARGETS_FROM_CUSTOM
"-Wl,-("
"-Wl,-\\("
Open3D::3rdparty_curl
Open3D::3rdparty_openssl
"-Wl,-)")
"-Wl,-\\)")
else()
list(APPEND Open3D_3RDPARTY_PRIVATE_TARGETS_FROM_CUSTOM Open3D::3rdparty_curl Open3D::3rdparty_openssl)
endif()
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
## Main
- Add SYCL tensor backends for HashMap, nearest-neighbor search (KNN, fixed-radius, hybrid), geometry transforms, and registration / odometry / feature pipelines (parity with CUDA paths where applicable).
- Add compressed SPZ file I/O for tensor-based Gaussian splats, with zstd dependency integration, round-trip tests, and notebook samples.
- Add Windows shared-library CUDA and SYCL Python wheels (`open3d-cuda`, `open3d-xpu`) built against the installed devel package; ship NVIDIA CUDA 12.6 runtime pip dependencies (`python/requirements_win_cuda.txt`) since CUDA is linked dynamically on Windows
- Fix WebRTC prebuilt packaging and CI workflow across Linux, macOS arm64, and Windows runtime variants (PR #7515)
Expand Down
3 changes: 3 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,9 @@ if(BUILD_SYCL_MODULE)
endif()
option(GLIBCXX_USE_CXX11_ABI "Set -D_GLIBCXX_USE_CXX11_ABI=1" ON )
option(ENABLE_SYCL_UNIFIED_SHARED_MEMORY "Enable SYCL unified shared memory" OFF)
set(ENABLE_SANITIZER OFF CACHE STRING "Enable sanitizer.")
set_property(CACHE ENABLE_SANITIZER PROPERTY STRINGS
"OFF" "address" "memory" "thread" "undefined")
if(BUILD_GUI AND (WIN32 OR UNIX AND NOT LINUX_AARCH64 AND NOT APPLE_AARCH64))
option(BUILD_WEBRTC "Build WebRTC visualizer" ON )
else()
Expand Down
4 changes: 2 additions & 2 deletions cmake/Open3DAddEncodedShader.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,11 @@ endfunction()
if (NOT TARGET ShaderEncoder)
add_executable(ShaderEncoder EXCLUDE_FROM_ALL)
target_sources(ShaderEncoder PRIVATE ${CMAKE_CURRENT_LIST_DIR}/ShaderEncoder.cpp)
target_compile_features(ShaderEncoder PRIVATE cxx_std_14)
open3d_set_global_properties(ShaderEncoder)
endif()

if (NOT TARGET ShaderLinker)
add_executable(ShaderLinker EXCLUDE_FROM_ALL)
target_sources(ShaderLinker PRIVATE ${CMAKE_CURRENT_LIST_DIR}/ShaderLinker.cpp)
target_compile_features(ShaderLinker PRIVATE cxx_std_14)
open3d_set_global_properties(ShaderLinker)
endif()
11 changes: 7 additions & 4 deletions cmake/Open3DSetGlobalProperties.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,10 @@ function(open3d_set_global_properties target)
target_compile_definitions(${target} PRIVATE OPEN3D_CXX_STANDARD="${CMAKE_CXX_STANDARD}")
target_compile_definitions(${target} PRIVATE OPEN3D_CXX_COMPILER_ID="${CMAKE_CXX_COMPILER_ID}")
target_compile_definitions(${target} PRIVATE OPEN3D_CXX_COMPILER_VERSION="${CMAKE_CXX_COMPILER_VERSION}")
target_compile_definitions(${target} PRIVATE OPEN3D_CUDA_COMPILER_ID="${CMAKE_CUDA_COMPILER_ID}")
target_compile_definitions(${target} PRIVATE OPEN3D_CUDA_COMPILER_VERSION="${CMAKE_CUDA_COMPILER_VERSION}")
if (BUILD_CUDA_MODULE)
target_compile_definitions(${target} PRIVATE OPEN3D_CUDA_COMPILER_ID="${CMAKE_CUDA_COMPILER_ID}")
target_compile_definitions(${target} PRIVATE OPEN3D_CUDA_COMPILER_VERSION="${CMAKE_CUDA_COMPILER_VERSION}")
endif()

# std::filesystem (C++17) or std::experimental::filesystem (C++14)
#
Expand Down Expand Up @@ -187,7 +189,7 @@ function(open3d_set_global_properties target)
endif()

# IEEE-compliant FP for IntelLLVM / icx (SYCL on Windows and Linux).
# -fno-fast-math: preserve NaN handling. -no-ftz / -mno-daz-ftz: icx
# -fno-fast-math: preserve NaN handling. -no-ftz : icx
# enables FTZ/DAZ at -O1+, which zeroes denormals (e.g. RGB packed into a
# float in PCD). Windows icx is clang-cl; prefix with /clang: so the
# GNU-style flags take effect.
Expand All @@ -199,7 +201,8 @@ function(open3d_set_global_properties target)
target_compile_options(${target} PRIVATE
$<$<AND:$<CXX_COMPILER_ID:IntelLLVM>,$<NOT:$<COMPILE_LANGUAGE:ISPC>>>:${opt-prefix}-fno-fast-math>
$<$<AND:$<CXX_COMPILER_ID:IntelLLVM>,$<NOT:$<COMPILE_LANGUAGE:ISPC>>>:${opt-prefix}-no-ftz>
$<$<AND:$<CXX_COMPILER_ID:IntelLLVM>,$<NOT:$<COMPILE_LANGUAGE:ISPC>>>:${opt-prefix}-mno-daz-ftz>)
)
# should be /Qftz- for WIN32?

# Enable strip
open3d_enable_strip(${target})
Expand Down
10 changes: 6 additions & 4 deletions cpp/benchmarks/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,6 @@ if (BUILD_CUDA_MODULE)
find_package(CUDAToolkit REQUIRED)
target_link_libraries(benchmarks PRIVATE CUDA::cudart)
endif()
if (BUILD_SYCL_MODULE)
find_package(IntelSYCL REQUIRED) # requires cmake>=3.25 on Windows
add_sycl_to_target(TARGET benchmarks)
endif()

open3d_show_and_abort_on_warning(benchmarks)
open3d_set_global_properties(benchmarks)
Expand All @@ -38,3 +34,9 @@ target_sources(benchmarks PRIVATE
)
target_link_libraries(benchmarks PRIVATE benchmark::benchmark)
target_include_directories(benchmarks PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})

if (BUILD_SYCL_MODULE)
# benchmarks compiles its own SYCL device code above, so it needs the
# -fsycl link step.
target_link_libraries(benchmarks PRIVATE Open3D::3rdparty_sycl)
endif()
1 change: 1 addition & 0 deletions cpp/benchmarks/core/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
target_sources(benchmarks PRIVATE
BinaryEW.cpp
HashMap.cpp
NearestNeighborSearch.cpp
Linalg.cpp
MemoryManager.cpp
ParallelFor.cpp
Expand Down
Loading
Loading