Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
1f7f537
Bundle Open3D-ML with ML ops; optional [ml] extras and Linux libc++ p…
ssheorey Aug 21, 2026
440f9e2
Fix CI failures from the wheel size reduction
ssheorey Aug 21, 2026
f97edeb
Prune unsupported GPU architectures from the static CUDA libraries
ssheorey Aug 21, 2026
83cbd31
fix `remove_radius_outlier` is not thread-safe: `std::vector<bool>` m…
ssheorey Aug 21, 2026
51fdab2
remove poisson recon n_threads=1 constraint on c++ test.
ssheorey Aug 21, 2026
568670f
Fix depth truncation for float depth images (issue #6347)
ssheorey Aug 21, 2026
8bbab4e
Stream large binary PCD writes #6607
ssheorey Aug 21, 2026
6fe3f01
Make seeded RANSAC deterministic #7475
ssheorey Aug 21, 2026
23c70b4
dix tensorboard summary test errors.
ssheorey Aug 21, 2026
ca83b1f
issue fixer agent
ssheorey Aug 21, 2026
3cda9b9
simplify agent instructions
ssheorey Aug 22, 2026
9091117
fix links for main-devel
ssheorey Aug 22, 2026
6a74f7e
Close TensorBoard writer in PyTorch test
ssheorey Aug 22, 2026
de3b8d2
Revert CUDA static library pruning
ssheorey Aug 22, 2026
eabd589
remove requirements install from cmake stub generation.
ssheorey Aug 22, 2026
f389b87
Merge branch 'ss/v0.20' of github.com:isl-org/Open3D into ss/v0.20
ssheorey Aug 22, 2026
d00b663
Fix tensor ICP convergence criteria #7367
ssheorey Aug 22, 2026
e1a966f
Clarify Jupyter visualizer setup #6979
ssheorey Aug 22, 2026
6447f0d
Avoid redundant tensor ICP metric evaluation #7367
ssheorey Aug 22, 2026
e0a44f1
Enable Jupyter visualizer on macOS ARM64 #6979
ssheorey Aug 22, 2026
cbbc9bd
Update copyright years to 2026
ssheorey Aug 22, 2026
d68a70a
Merge branch 'ss/v0.20' of https://github.com/isl-org/Open3D into ss/…
ssheorey Aug 22, 2026
0005ecb
Fix PointCloud include ordering
ssheorey Aug 23, 2026
84790f3
remove warnings from __init__.py
ssheorey Aug 23, 2026
2917469
agents: prefer quick tests
ssheorey Aug 23, 2026
8940ffc
Clarify IsContiguous/Contiguous docs as C-contiguous (row-major) matc…
ssheorey Aug 24, 2026
67e5cc9
Fix InverseTransformation/TransformIndexer to accept non-CPU tensors …
ssheorey Aug 24, 2026
961cc98
separate dev_wheels.html page for wheels to simplify install command
ssheorey Aug 24, 2026
5c2ff8e
Fix #7499: Add SFINAE constraint to VoxelPooling AddPoint templates
ssheorey Aug 24, 2026
9f4eb44
Allow choice of Open3D-ML tag/branch via OPEN3D_ML_VERSION (#7502)
ssheorey Aug 24, 2026
eda0a6b
Fix WebRTC Jupyter custom action freeze on macOS ARM64
ssheorey Aug 24, 2026
e52405f
Merge branch 'ss/v0.20' of https://github.com/isl-org/Open3D into ss/…
ssheorey Aug 24, 2026
a12b103
Enable SYCL dense reconstruction odometry (#7354)
ssheorey Aug 25, 2026
87802ea
Fix style check failures
ssheorey Aug 25, 2026
463e375
Keep compressed ccache archive out of docker image to save disk space.
ssheorey Aug 25, 2026
0b82473
Fix CI rendering in tensor point cloud notebook
ssheorey Aug 25, 2026
d9fbda9
Handle CI builds without exported artifacts
ssheorey Aug 25, 2026
060211a
fix copilot review comments
ssheorey Aug 26, 2026
41fe951
support clang 20 in ubuntu 26.04
ssheorey Aug 26, 2026
6e1a685
add resources to MANIFEST - these were silently skipped after upgradi…
ssheorey Aug 26, 2026
0bce605
restore cuda architectures removed during build-lib and build-wheel s…
ssheorey Aug 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
78 changes: 78 additions & 0 deletions .github/agents/open3d-issue-fixer.agent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
---
name: "Open3D Issue Fixer"
description: "Use when: investigating and fixing an Open3D GitHub issue from an issue number, URL, or description; validate scope, correctness, reproducibility, complexity, and expected benefit; implement and test a focused fix; then commit and push it for CI, either on the current branch or a dedicated PR branch."
argument-hint: "Issue number, URL, or description; optionally specify current branch or new PR branch"
tools: [read, search, edit, execute, todo, agent, web, mcp_github/*]
agents: ["Universal Janitor"]
user-invocable: true
disable-model-invocation: false
---
Investigate an Open3D issue, validate it, implement a justified fix, and push a
tested commit for CI. Follow `AGENTS.md` and `AGENTS.local.md`; the repository
and current worktree are authoritative.

## Goal Lock

Before editing, record the issue, user-visible goal, acceptance requirements,
smallest relevant test, risks, and implementation status in a Markdown progress
file as required by `AGENTS.md`.

## Workflow

1. **Identify.** Accept an issue number, URL, or description. For a description,
search open and closed issues for duplicates. Read the full issue, comments,
labels, state, linked PRs, and relevant history. Confirm it belongs to this
repository before editing.

2. **Validate.** Check scope and correctness against supported behavior, docs,
APIs, source, tests, configurations, and issue discussion. Capture the
baseline with the smallest deterministic reproducer. Assess affected users,
severity, compatibility, implementation and maintenance cost, cross-layer
work, and CI/platform cost. Report one evidence-based verdict: `accept`,
`needs clarification`, `duplicate`, `cannot reproduce`, `expected behavior`,
or `out of scope`. Do not implement unless the verdict supports it or the
user explicitly requests further investigation.

3. **Discriminate.** Follow the debugging process in `AGENTS.md`: enumerate
root-cause hypotheses, split them into easy and hard to fix, try the easy
candidate fixes directly, and instrument before attempting a hard one. Keep
branch, edit, test, and git-write decisions in this agent when delegating
research.

4. **Choose the branch.** Inspect the branch, active PR, remotes, and worktree.
Continue when the issue belongs to the active PR or the user selected the
branch. Otherwise ask whether to continue or create a descriptive issue
branch; do not choose implicitly. Ask before switching if unrelated changes
prevent it.

5. **Fix and verify.** Follow `AGENTS.md` for implementation, coverage, docs,
supported backends, style, and validation. Ensure the reproducer passes.

6. **Deliver.** Commit only the fix, exclude the progress file, and end the
commit subject with the issue number: e.g. (#9999). Include the verdict in a
new PR. For an existing PR, report the pushed commit and CI target instead of
opening a duplicate.

## Stop Conditions

Stop without committing a speculative fix when:

- the issue is out of scope, invalid, a duplicate, or expected behavior;
- the report cannot be reproduced after reasonable targeted investigation;
- benefit does not justify implementation or maintenance cost;
- acceptance criteria require a product or API decision;
- required credentials, permissions, hardware, or a clean branch transition are
unavailable;
- focused validation fails for reasons not caused by the proposed change.

Do not create, close, label, or comment on issues, and do not merge a PR, unless
the user explicitly requests that GitHub mutation.

## Final Report

Summarize:

- issue identity, verdict, reproduction, and effort-versus-benefit assessment;
- root cause and fix, with file links;
- tests and style checks, including unavailable configurations;
- branch, commit, push result, PR target, remaining risks, and CI checks.
54 changes: 54 additions & 0 deletions .github/prompts/fix-pr.prompt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
---
name: Fix PR CI and Review Comments
description: "Use when: triaging failing GitHub Actions checks and reviewer feedback on a pull request or branch; separate actionable failures from infrastructure flakes, judge each review comment on user benefit versus maintenance and complexity cost, fix and validate locally, then commit and push."
argument-hint: "Optional PR number, URL, or branch; otherwise use the active pull request / current branch"
agent: "agent"
tools: [read, search, edit, execute, todo, agent, web, mcp_github/*]
---
Triage and fix CI failures and review feedback for a pull request. Follow
`AGENTS.md` and `AGENTS.local.md`; this prompt only adds PR-specific triage
rules.

## Workflow

1. **Identify.** Resolve the PR from the argument, else the active PR / current
branch. Stop and ask if there is no PR, several candidates, a detached HEAD,
or a fork head you cannot push to.

2. **Collect.** Read the checks for the PR head commit and the logs of each
failing job. Flag results from an older commit as stale, and unpushed local
commits as not yet covered by CI. Read review comments and requested changes,
skipping outdated or resolved threads.

3. **Classify each failure** as actionable (code, test, build, style, docs, or
config defect), infrastructure (download, runner, timeout, quota, cancelled),
or flaky/unrelated (also fails on base, or untouched by the diff). Only fix
the first; report the rest without claiming they were fixed. Re-run a check
only when a transient cause is likely and re-running is cheap.

4. **Classify each review comment** as valid or non-actionable, with a one-line
reason weighing user benefit against maintenance and complexity cost.
Non-actionable: subjective, obsolete, unsupported by the code, or outside the
PR's scope. Ask instead of guessing when a comment implies an API, product,
or scope decision.

5. **Fix and validate.** Reproduce locally first where possible, and follow the
debugging process in `AGENTS.md`: try the easy candidate fixes directly, and
instrument before attempting a hard or complex one. Stay inside the PR's
existing scope; do not opportunistically refactor. Name the configurations
(CUDA, SYCL, macOS, Windows) you could not verify locally.

6. **Iterate** until every actionable item is fixed or a concrete blocker
remains, then commit and push.

Do not merge or close the PR, and do not post comments, reviews, or thread
resolutions unless the user explicitly asks.

## Final Report

- actionable CI failures and their root causes;
- each review comment, marked valid or non-actionable, with the reason;
- fixes made, with file links;
- validation commands actually run, their results, and unverified platforms;
- ignored infrastructure/flaky failures and remaining blockers;
- commit hash, push result, and the CI run to watch.
6 changes: 0 additions & 6 deletions .github/workflows/macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -183,9 +183,6 @@ jobs:
uses: actions/checkout@v4
with:
repository: isl-org/Open3D-ML
# TODO(ss/sycl-mlops): switch back to main once the torch 2.13
# requirements-torch.txt bump on ss/xpu is merged upstream.
ref: ss/xpu
path: ${{ env.OPEN3D_ML_ROOT }}

- name: Download build artifact
Expand Down Expand Up @@ -299,9 +296,6 @@ jobs:
uses: actions/checkout@v4
with:
repository: isl-org/Open3D-ML
# TODO(ss/sycl-mlops): switch back to main once the torch 2.13
# requirements-torch.txt bump on ss/xpu is merged upstream.
ref: ss/xpu
path: ${{ env.OPEN3D_ML_ROOT }}

- name: Download wheels
Expand Down
3 changes: 0 additions & 3 deletions .github/workflows/ubuntu-wheel.yml
Original file line number Diff line number Diff line change
Expand Up @@ -243,9 +243,6 @@ jobs:
uses: actions/checkout@v4
with:
repository: isl-org/Open3D-ML
# TODO(ss/sycl-mlops): switch back to main once the torch 2.13
# requirements-torch.txt bump on ss/xpu is merged upstream.
ref: ss/xpu
path: ${{ env.OPEN3D_ML_ROOT }}
- name: Download wheels
uses: actions/download-artifact@v4
Expand Down
10 changes: 6 additions & 4 deletions .github/workflows/ubuntu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -160,14 +160,16 @@ jobs:
name: open3d-wheel-linux-x86_64

- name: Checkout Open3D-ML
# TODO(ss/sycl-mlops): switch back to main once the torch 2.13
# requirements-torch.txt bump on ss/xpu is merged upstream.
run: git clone --depth 1 https://github.com/isl-org/Open3D-ML.git -b ss/xpu /tmp/Open3D-ML
uses: actions/checkout@v4
with:
repository: isl-org/Open3D-ML
# actions/checkout only accepts paths inside GITHUB_WORKSPACE.
path: open3d_ml

- name: Install doc dependencies
run: |
source util/ci_utils.sh
install_docs_dependencies /tmp/Open3D-ML
install_docs_dependencies "${GITHUB_WORKSPACE}/open3d_ml"

- name: Install Open3D wheel
run: python -m pip install open3d*.whl
Expand Down
28 changes: 18 additions & 10 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -119,9 +119,6 @@ jobs:
uses: actions/checkout@v4
with:
repository: isl-org/Open3D-ML
# TODO(ss/sycl-mlops): switch back to main once the torch 2.13
# requirements-torch.txt bump on ss/xpu is merged upstream.
ref: ss/xpu
path: open3d_ml

- name: Install PyTorch requirements
Expand Down Expand Up @@ -414,6 +411,8 @@ jobs:
BUILD_CUDA_MODULE: ${{ matrix.device == 'cuda' && 'ON' || 'OFF' }}
BUILD_SYCL_MODULE: ${{ matrix.device == 'xpu' && 'ON' || 'OFF' }}
BUILD_PYTORCH_OPS: ${{ matrix.device == 'cuda' && 'OFF' || 'ON' }}
# Bundles the Open3D-ML models and pipelines when ML ops are built.
OPEN3D_ML_ROOT: ${{ github.workspace }}/open3d_ml

steps:

Expand All @@ -437,9 +436,6 @@ jobs:
uses: actions/checkout@v4
with:
repository: isl-org/Open3D-ML
# TODO(ss/sycl-mlops): switch back to main once the torch 2.13
# requirements-torch.txt bump on ss/xpu is merged upstream.
ref: ss/xpu
path: open3d_ml

- name: Set up Python
Expand Down Expand Up @@ -490,6 +486,16 @@ jobs:
python -m pip install -U -r python/requirements.txt `
-r python/requirements_build.txt `
-r python/requirements_jupyter_build.txt
if ('${{ env.BUILD_CUDA_MODULE }}' -eq 'ON') {
python -m pip install -U -r python/requirements_win_cuda.txt
}
if ('${{ env.BUILD_SYCL_MODULE }}' -eq 'ON') {
python -m pip install -U -r python/requirements_sycl.txt
}
if (('${{ env.BUILD_TENSORFLOW_OPS }}' -eq 'ON') -or
('${{ env.BUILD_PYTORCH_OPS }}' -eq 'ON')) {
python -m pip install -U -r open3d_ml/requirements.txt
}
if ('${{ env.BUILD_PYTORCH_OPS }}' -eq 'ON') {
if ('${{ matrix.device }}' -eq 'xpu') {
python -m pip install -U -r open3d_ml/requirements-torch-xpu.txt
Expand Down Expand Up @@ -601,7 +607,7 @@ jobs:
if-no-files-found: error

- name: Update devel release with wheel
if: ${{ env.SKIPPED != 'true' && github.ref == 'refs/heads/main' }}
if: ${{ env.SKIPPED != 'true' && github.ref == 'refs/heads/main' && matrix.device != 'cuda' }}
env:
GH_TOKEN: ${{ github.token }}
shell: bash
Expand Down Expand Up @@ -642,9 +648,6 @@ jobs:
uses: actions/checkout@v4
with:
repository: isl-org/Open3D-ML
# TODO(ss/sycl-mlops): switch back to main once the torch 2.13
# requirements-torch.txt bump on ss/xpu is merged upstream.
ref: ss/xpu
path: open3d_ml

- name: Download wheels
Expand Down Expand Up @@ -683,6 +686,11 @@ jobs:
}
echo "Installing Open3D wheel $PIP_PKG_NAME in virtual environment..."
python -m pip install $PIP_PKG_NAME
# Wheels bundling Open3D-ML declare its Python dependencies as the
# `ml` extra, needed by the models, pipelines and datasets.
$bundlesML = python -c "import open3d; print(open3d._build_config['BUNDLE_OPEN3D_ML'])" |
Select-Object -Last 1
if ($bundlesML.Trim() -eq 'True') { python -m pip install "${PIP_PKG_NAME}[ml]" }
python -c "import open3d; print('Imported:', open3d)"
python -c "import open3d; print('CUDA enabled: ', open3d.core.cuda.is_available())"
python -c "import open3d; print('SYCL enabled: ', open3d.core.sycl.is_available() if hasattr(open3d.core, 'sycl') else False)"
Expand Down
5 changes: 5 additions & 0 deletions 3rdparty/README_SYCL.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,11 @@ with `oneapi-ci <https://github.com/oneapi-src/oneapi-ci/tree/0804a4c9281440d8a9
User:
- https://pypi.org/user/IntelAutomationEngineering/

Linux import without sourcing oneAPI: `pip install -r python/requirements_sycl.txt`
(transitive dpcpp-cpp-rt / onemkl-sycl-* DSOs land in `<venv>/lib`). With
`BUILD_SYCL_MODULE`, extension RPATH (and wheel patchelf when available) points
at `<Python prefix>/lib`.

Libraries:
- dpcpp-cpp-rt https://pypi.org/project/dpcpp-cpp-rt/#history
- mkl https://pypi.org/project/mkl/#history
Expand Down
2 changes: 2 additions & 0 deletions 3rdparty/cmake/FindPytorch.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
macro(translate_arch_string input output)
if("${input}" MATCHES "[0-9]+-real")
string(REGEX REPLACE "([1-9])([0-9])-real" "\\1.\\2" version "${input}")
elseif("${input}" MATCHES "[0-9]+-virtual")
string(REGEX REPLACE "([1-9])([0-9])-virtual" "\\1.\\2+PTX" version "${input}")
elseif("${input}" MATCHES "([0-9]+)")
string(REGEX REPLACE "([1-9])([0-9])" "\\1.\\2+PTX" version "${input}")
elseif("${input}" STREQUAL "native")
Expand Down
11 changes: 7 additions & 4 deletions 3rdparty/find_dependencies.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -1542,9 +1542,11 @@ if(BUILD_GUI)
# We first search for these paths, and then search CMake's default
# search path. LLVM version must be >= 7 to compile Filament.
if (NOT CLANG_LIBDIR)
message(STATUS "Searching /usr/lib/llvm-[7..19]/lib/ for libc++ and libc++abi")
foreach(llvm_ver RANGE 7 19)
message(STATUS "Searching /usr/lib/llvm-[7..20]/lib/ for libc++ and libc++abi")
foreach(llvm_ver RANGE 7 20)
set(llvm_lib_dir "/usr/lib/llvm-${llvm_ver}/lib")
unset(CPP_LIBRARY CACHE)
unset(CPPABI_LIBRARY CACHE)
find_library(CPP_LIBRARY c++ PATHS ${llvm_lib_dir} NO_DEFAULT_PATH)
find_library(CPPABI_LIBRARY c++abi PATHS ${llvm_lib_dir} NO_DEFAULT_PATH)
if (CPP_LIBRARY AND CPPABI_LIBRARY)
Expand All @@ -1561,6 +1563,7 @@ if(BUILD_GUI)
if (NOT CLANG_LIBDIR)
message(STATUS "Clang C++ libraries not found. Searching other paths...")
find_library(CPPABI_LIBRARY c++abi PATH_SUFFIXES
llvm-20/lib
llvm-19/lib
llvm-18/lib
llvm-17/lib
Expand Down Expand Up @@ -1592,8 +1595,8 @@ if(BUILD_GUI)

# Ensure that libstdc++ gets linked first.
target_link_libraries(3rdparty_filament INTERFACE -lstdc++
${CPP_LIBRARY}.1 ${CPPABI_LIBRARY})
message(STATUS "Filament C++ libraries: ${CPP_LIBRARY}.1 ${CPPABI_LIBRARY}")
${CPP_LIBRARY} ${CPPABI_LIBRARY})
message(STATUS "Filament C++ libraries: ${CPP_LIBRARY} ${CPPABI_LIBRARY}")
if (LIBCPP_VERSION GREATER 11)
message(WARNING "libc++ (LLVM) version ${LIBCPP_VERSION} > 11 includes libunwind that "
"interferes with the system libunwind.so.8 and may crash Python code when exceptions "
Expand Down
Loading
Loading