Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
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
16 changes: 7 additions & 9 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 @@ -642,9 +638,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 +676,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
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
## Main
- Reduce the installed size of the Open3D wheel: Open3D-ML Python dependencies are now an optional extra (`pip install open3d[ml]`, ~335 MB smaller for core-only installs) and `open3d.ml` submodules are imported lazily. Release CUDA wheels drop Turing (sm_75) SASS and ship compute_75 PTX instead. `BUNDLE_OPEN3D_ML` now defaults to ON when ML ops are built and `OPEN3D_ML_ROOT` is set, and Windows wheels bundle Open3D-ML too (PR #7540).
- Add symmetric ICP registration to the legacy and Tensor pipelines (PR #7276).
- Replace OpenMP with oneAPI TBB for all CPU parallelism; Open3D no longer depends on OpenMP. This removes the `libomp` / `libgomp` runtime dependency and the thread oversubscription and crashes caused by loading multiple OpenMP runtimes in one process (e.g. alongside PyTorch in Python). The `WITH_OPENMP` CMake option is removed, oneTBB >= 2021.4.0 is required, and `OMP_NUM_THREADS` is replaced by `open3d.utility.set_max_threads()` (C++: `utility::SetMaxThreads()` or a `tbb::task_arena`). `utility::OMPProgressBar` is removed in favor of the thread-safe `utility::ProgressBar`; `utility::GetThreadNum()` and `utility::InParallel()` are removed (PR #6626) (issues #6196, #6544, #6750)
- Add point cloud smoothing algorithms: Moving Least Squares (MLS), Laplacian, Taubin, and bilateral smoothing. These methods provide flexible noise reduction for point clouds with different preservation characteristics (PR #7419).
Expand Down
26 changes: 24 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,21 @@ option(BUILD_AZURE_KINECT "Build support for Azure Kinect sensor" OFF
# ML library options
option(BUILD_TENSORFLOW_OPS "Build ops for TensorFlow" OFF)
option(BUILD_PYTORCH_OPS "Build ops for PyTorch" OFF)
option(BUNDLE_OPEN3D_ML "Includes the Open3D-ML repo in the wheel" OFF)
if(BUILD_TENSORFLOW_OPS OR BUILD_PYTORCH_OPS)
find_path(
OPEN3D_ML_ROOT
NAMES set_open3d_ml_root.sh
HINTS $ENV{OPEN3D_ML_ROOT}
DOC "Path to the Open3D-ML repo, bundled in the wheel when ML ops are built. May also be set as an env var."
NO_DEFAULT_PATH
)
endif()
if(OPEN3D_ML_ROOT AND (BUILD_TENSORFLOW_OPS OR BUILD_PYTORCH_OPS))
set(BUNDLE_OPEN3D_ML_DEFAULT ON)
else()
set(BUNDLE_OPEN3D_ML_DEFAULT OFF)
endif()
option(BUNDLE_OPEN3D_ML "Includes the Open3D-ML repo in the wheel. Defaults to ON when ML ops are built and OPEN3D_ML_ROOT is set." ${BUNDLE_OPEN3D_ML_DEFAULT})

# Build Python bindings (and optional ML ops) against an installed Open3D
# devel package via find_package(Open3D). Skips compiling the C++ core and
Expand Down Expand Up @@ -294,6 +308,9 @@ endif()
if(BUNDLE_OPEN3D_ML AND NOT (BUILD_TENSORFLOW_OPS OR BUILD_PYTORCH_OPS))
message(SEND_ERROR "3DML depends on TensorFlow or PyTorch Ops. Enable them with -DBUILD_TENSORFLOW_OPS=ON or -DBUILD_PYTORCH_OPS=ON")
endif()
if(BUNDLE_OPEN3D_ML AND NOT OPEN3D_ML_ROOT)
message(SEND_ERROR "BUNDLE_OPEN3D_ML=ON requires OPEN3D_ML_ROOT to point to the Open3D-ML repo. Set -DOPEN3D_ML_ROOT=<path> or the env var with the same name.")
endif()
if(BUILD_WEBRTC AND LINUX_AARCH64)
message(FATAL_ERROR "BUILD_WEBRTC=ON is not yet supported on ARM Linux")
endif()
Expand Down Expand Up @@ -501,7 +518,12 @@ if(BUILD_CUDA_MODULE)
# https://docs.nvidia.com/cuda/ampere-compatibility-guide/index.html#application-compatibility-on-ampere
# https://en.wikipedia.org/wiki/CUDA#GPUs_supported
find_package(CUDAToolkit REQUIRED)
if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL "11.8")
if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL "12.6")
# CUDA 12.6+ release wheels: SASS for Ampere..Hopper, compute_75 PTX
# so Turing (T4, RTX 20xx) still runs via JIT without shipping its
# SASS, and compute_90 PTX for forward compatibility.
set(CMAKE_CUDA_ARCHITECTURES 75-virtual 80-real 86-real 89-real 90)
elseif(CUDAToolkit_VERSION VERSION_GREATER_EQUAL "11.8")
set(CMAKE_CUDA_ARCHITECTURES 75-real 80-real 86-real 89-real 90) # Turing, Ampere, Ada Lovelace, Hopper
elseif(CUDAToolkit_VERSION VERSION_GREATER_EQUAL "11.1")
set(CMAKE_CUDA_ARCHITECTURES 70-real 75-real 80-real 86) # Volta, Turing, Ampere
Expand Down
4 changes: 4 additions & 0 deletions cmake/Open3DPrintConfigurationSummary.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ function(open3d_print_configuration_summary)
open3d_aligned_print("CUDA Support" "${BUILD_CUDA_MODULE}")
if(BUILD_CUDA_MODULE)
open3d_aligned_print("CUDA cached memory manager" "${ENABLE_CACHED_CUDA_MANAGER}")
open3d_aligned_print("BUILD_COMMON_CUDA_ARCHS" "${BUILD_COMMON_CUDA_ARCHS}")
if(CMAKE_CUDA_ARCHITECTURES)
open3d_aligned_print("CMAKE_CUDA_ARCHITECTURES" "${CMAKE_CUDA_ARCHITECTURES}")
endif()
endif()
open3d_aligned_print("SYCL Support" "${BUILD_SYCL_MODULE}")
if(ENABLE_SYCL_UNIFIED_SHARED_MEMORY)
Expand Down
22 changes: 5 additions & 17 deletions cpp/pybind/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,9 @@ if (BUILD_SHARED_LIBS)
$<TARGET_FILE:Open3D::Open3D> $<TARGET_FILE_DIR:pybind>/${_libopen3d_soname}
)
endif()
# Include additional libraries that may be absent from the user system
# eg: libc++.so, libc++abi.so (needed by filament) for Linux.
# libc++.so is a linker script including libc++.so.1 and libc++abi.so, so append 1 to libc++.so
# Include additional libraries that may be absent from the user system (TBB).
# Linux GUI wheels bundle LLVM libc++/libc++abi via ldd in
# package_linux_wheel_runtime.sh (see make_python_package.cmake).
# Prefer TBB::tbb; fall back to Open3D::tbb from an installed devel package.
if (TARGET TBB::tbb)
set(PYTHON_EXTRA_LIBRARIES $<TARGET_FILE:TBB::tbb>)
Expand All @@ -114,11 +114,6 @@ elseif (TARGET Open3D::tbb)
else()
message(FATAL_ERROR "TBB target required to package Python wheel extras")
endif()
if (BUILD_GUI AND CMAKE_SYSTEM_NAME STREQUAL "Linux")
if (CPP_LIBRARY AND CPPABI_LIBRARY)
list(APPEND PYTHON_EXTRA_LIBRARIES ${CPP_LIBRARY}.1 ${CPPABI_LIBRARY})
endif()
endif()
# Note: Open3D no longer links libomp. TBB (packaged above via
# PYTHON_EXTRA_LIBRARIES) is the only threading runtime shipped in the wheel,
# which avoids the multiple-OpenMP-runtime crashes seen when another Python
Expand Down Expand Up @@ -178,15 +173,8 @@ if (BUILD_PYTORCH_OPS)
endif()

if (BUNDLE_OPEN3D_ML)
find_path(
OPEN3D_ML_ROOT
NAMES set_open3d_ml_root.sh
HINTS $ENV{OPEN3D_ML_ROOT}
DOC "Path to the Open3D-ML repo. This should be set if BUNDLE_OPEN3D_ML is enabled. Alternatively set an env var with the same name to populate this var."
REQUIRED
NO_DEFAULT_PATH
)

# OPEN3D_ML_ROOT is located in the top level CMakeLists.txt, which also
# decides whether Open3D-ML can be bundled.
ExternalProject_Add(
open3d_ml
PREFIX "${CMAKE_BINARY_DIR}/open3d_ml"
Expand Down
30 changes: 28 additions & 2 deletions cpp/pybind/make_python_package.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ foreach(COMPILED_MODULE_PATH ${COMPILED_MODULE_PATH_LIST})
DESTINATION ${PYTHON_PACKAGE_DST_DIR}/open3d/
FOLLOW_SYMLINK_CHAIN)
endforeach()
# Include additional libraries that may be absent from the user system
# eg: libc++.so and libc++abi.so (needed by filament)
# Include additional libraries that may be absent from the user system (e.g. TBB).
# Linux LLVM libc++ for Filament is bundled separately via ldd; see below.
# The linker recognizes only library.so.MAJOR, so remove .MINOR from the filename
foreach(PYTHON_EXTRA_LIB ${PYTHON_EXTRA_LIBRARIES})
get_filename_component(PYTHON_EXTRA_LIB_REAL ${PYTHON_EXTRA_LIB} REALPATH)
Expand All @@ -37,7 +37,33 @@ foreach(PYTHON_EXTRA_LIB ${PYTHON_EXTRA_LIBRARIES})
configure_file(${PYTHON_EXTRA_LIB_REAL} ${PYTHON_PACKAGE_DST_DIR}/open3d/${SO_1_NAME} COPYONLY)
endforeach()

# Linux GUI: bundle LLVM libc++/libc++abi (and libunwind if linked) via ldd.
# Shared builds ship libOpen3D; static builds link Filament into the pybind
# extension instead, so fall back to that as the ELF to probe.
if(BUILD_GUI AND UNIX AND NOT APPLE)
file(GLOB _libopen3d_probe LIST_DIRECTORIES false
"${PYTHON_PACKAGE_DST_DIR}/open3d/libOpen3D.so.*")
if(NOT _libopen3d_probe)
file(GLOB _libopen3d_probe LIST_DIRECTORIES false
"${PYTHON_PACKAGE_DST_DIR}/open3d/pybind*.so")
endif()
if(_libopen3d_probe)
list(GET _libopen3d_probe 0 _libopen3d_probe)
execute_process(
COMMAND bash "${CMAKE_CURRENT_LIST_DIR}/package_linux_wheel_runtime.sh"
"${PYTHON_PACKAGE_DST_DIR}/open3d" "${_libopen3d_probe}"
COMMAND_ERROR_IS_FATAL ANY
)
else()
message(WARNING "No ELF found in the Python package to probe for libc++")
endif()
endif()

# 3) Configured files and supporting files
if(BUNDLE_OPEN3D_ML AND OPEN3D_ML_ROOT AND EXISTS "${OPEN3D_ML_ROOT}/requirements.txt")
configure_file("${OPEN3D_ML_ROOT}/requirements.txt"
"${PYTHON_PACKAGE_DST_DIR}/requirements_ml.txt" COPYONLY)
endif()
configure_file("${PYTHON_PACKAGE_SRC_DIR}/setup.py"
"${PYTHON_PACKAGE_DST_DIR}/setup.py")
configure_file("${PYTHON_PACKAGE_SRC_DIR}/open3d/__init__.py"
Expand Down
11 changes: 11 additions & 0 deletions cpp/pybind/package_linux_wheel_runtime.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/usr/bin/env bash
# Usage: package_linux_wheel_runtime.sh DEST_DIR PROBE_ELF (e.g. libOpen3D.so.N)
# Copies Filament's LLVM libc++ runtime into the wheel under its DT_NEEDED name,
# which is what $ORIGIN lookup uses at import time (e.g. libc++.so.1.0.20).
set -euo pipefail
dest=$1; elf=$2
export LD_LIBRARY_PATH="$dest${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
ldd "$elf" | awk '/libc\+\+|libunwind/ && $3 != "" {print $1, $3}' |
while read -r soname path; do
[ "$path" -ef "$dest/$soname" ] || cp -L "$path" "$dest/$soname"
done
13 changes: 8 additions & 5 deletions docker/Dockerfile.ci
Original file line number Diff line number Diff line change
Expand Up @@ -145,13 +145,10 @@ RUN ccache --version \
# Checkout Open3D-ML main branch
# TODO: We may add support for local Open3D-ML repo or pinned ML repo tag
# Install Open3D-ML if it is not already present in BASE_IMAGE.
# TODO(ss/sycl-mlops): switch back to main once requirements-torch-xpu.txt on
# ss/xpu is merged upstream.
ENV OPEN3D_ML_ROOT=/root/Open3D-ML
RUN if [ "${BUILD_SYCL_MODULE}" = "ON" ]; then OPEN3D_ML_REF=ss/xpu; else OPEN3D_ML_REF=main; fi \
&& if [ ! -d "${OPEN3D_ML_ROOT}/.git" ]; then \
RUN if [ ! -d "${OPEN3D_ML_ROOT}/.git" ]; then \
git clone --depth 1 https://github.com/isl-org/Open3D-ML.git \
-b "${OPEN3D_ML_REF}" ${OPEN3D_ML_ROOT}; \
${OPEN3D_ML_ROOT}; \
fi

# Open3D repo
Expand All @@ -171,6 +168,9 @@ RUN source util/ci_utils.sh \
else \
install_python_dependencies with-jupyter; \
fi \
&& if [ "${BUILD_TENSORFLOW_OPS}" = "ON" ] || [ "${BUILD_PYTORCH_OPS}" = "ON" ]; then \
install_open3d_ml_python_requirements; \
fi \
&& pip install -r python/requirements_test.txt \
&& install_nodejs_linux

Expand All @@ -185,6 +185,9 @@ RUN \
export CMAKE_C_COMPILER=gcc; \
export BUILD_ISPC_MODULE=ON; \
fi \
&& if [ "${BUILD_TENSORFLOW_OPS}" = "ON" ] || [ "${BUILD_PYTORCH_OPS}" = "ON" ]; then \
git -C "${OPEN3D_ML_ROOT}" checkout -b main || true; \
fi \
&& mkdir -p build \
&& cd build \
&& cmake --fresh -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} \
Expand Down
2 changes: 1 addition & 1 deletion docs/arm.rst
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ Compiling Open3D on ARM64 macOS

# Configure and choose build options
cd Open3D && mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TENSORFLOW_OPS=ON -DBUILD_PYTORCH_OPS=ON -DBUNDLE_OPEN3D_ML=ON ..
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TENSORFLOW_OPS=ON -DBUILD_PYTORCH_OPS=ON ..

# Build
make pip-package -j8 # Build Python wheel
Expand Down
18 changes: 12 additions & 6 deletions docs/compilation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -332,11 +332,18 @@ ML Module
The ML module consists of primitives like operators and layers as well as high
level code for models and pipelines. To build the operators and layers, set
``BUILD_PYTORCH_OPS=ON`` and/or ``BUILD_TENSORFLOW_OPS=ON``. Don't forget to also
enable ``BUILD_CUDA_MODULE=ON`` for GPU support. To include the models and
pipelines from Open3D-ML in the python package, set ``BUNDLE_OPEN3D_ML=ON`` and
``OPEN3D_ML_ROOT`` to the Open3D-ML repository. You can directly download
Open3D-ML from GitHub during the build with
``OPEN3D_ML_ROOT=https://github.com/isl-org/Open3D-ML.git``.
enable ``BUILD_CUDA_MODULE=ON`` for GPU support. Set ``OPEN3D_ML_ROOT`` to the
Open3D-ML repository to also bundle its models and pipelines into the Python
package: this is the default (``BUNDLE_OPEN3D_ML=ON``) whenever ML ops are built
and ``OPEN3D_ML_ROOT`` is available. You can directly download Open3D-ML from
GitHub during the build with
``OPEN3D_ML_ROOT=https://github.com/isl-org/Open3D-ML.git``. To build only the
ops and layers, e.g. when developing against a local Open3D-ML checkout, set
``BUNDLE_OPEN3D_ML=OFF``.

.. note:: The Python dependencies of Open3D-ML (PyYAML, scikit-learn, pandas,
matplotlib, ...) are not installed with the wheel. Users of the bundled ML
code install them with the ``ml`` extra, e.g. ``pip install open3d[ml]``.

.. warning:: Compiling PyTorch ops with PyTorch < 1.9 may have
stability issues. See `Open3D issue #3324 <https://github.com/isl-org/Open3D/issues/3324>`_
Expand All @@ -361,7 +368,6 @@ for all supported ML frameworks and bundling the high level Open3D-ML code.
-DGLIBCXX_USE_CXX11_ABI=OFF \
-DBUILD_PYTORCH_OPS=ON \
-DBUILD_TENSORFLOW_OPS=ON \
-DBUNDLE_OPEN3D_ML=ON \
-DOPEN3D_ML_ROOT=https://github.com/isl-org/Open3D-ML.git \
..
# Install the python wheel with pip
Expand Down
10 changes: 10 additions & 0 deletions docs/getting_started.in.rst
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,16 @@ Pip (PyPI)
pip install open3d # or
pip install open3d-cpu # Smaller CPU only wheel on x86_64 Linux (since v0.17+)

.. note::

The Open3D-ML models and pipelines (``open3d.ml.torch``, ``open3d.ml.tf``)
need additional Python packages, which are not installed by default. Install
them with the ``ml`` extra:

.. code-block:: bash

pip install open3d[ml] # or open3d-cpu[ml] / open3d-xpu[ml]

.. note::

On Windows, ``open3d`` is the CPU wheel; ``pip install open3d-cuda`` and
Expand Down
Loading
Loading