Open3D (v1.7)

Updated at:
Copy as MD

When you install certain 3D detection frameworks, such as mmdetection3d, Open3D is often installed automatically. However, pip install open3d installs a pre-compiled version that includes a GPU binary incompatible with PPU. You must rebuild it from source using the steps below.

The following steps use Open3D v0.18.0 as an example and have been tested and verified in a Docker environment with Torch 2.4 and CUDA 12.3.

Build steps

git clone -b v0.18.0 https://github.com/isl-org/Open3D
cd Open3D

apt update
apt install -y xorg-dev libxcb-shm0 libglu1-mesa-dev libc++-dev libc++abi-dev

# for cuda 12.4+
# If you use CUDA 12.4 or later, apply the community patch to upgrade the stdgpu version
git cherry-pick -X theirs b7e5f163e47213fb59eb93148ebd133360cbab26
# for cuda 11.x
touch /usr/local/PPU_SDK/CUDA_SDK/lib64/liblapack_static.a
# for torch 2.x
sed -i 's/CMAKE_CXX_STANDARD 14/CMAKE_CXX_STANDARD 17/g' CMakeLists.txt

mkdir build
cd build
cmake -DBUILD_CUDA_MODULE=ON \
      -DBUILD_PYTORCH_OPS=ON \
      -DCMAKE_BUILD_TYPE=RelWithDebInfo \
      ..
make -j$(nproc)
make install
pip install yapf
make pip-package

pip install lib/python_package/pip_package/*.whl

python -c "import open3d"

Unit test results

dir

file

.

test_color_map_optimization.py

1 passed

test_flags.py

1 passed

test_octree.py

9 passed

test_open3d_eigen.py

39 passed

core

test_core.py

552 passed

test_hashmap.py

16 passed

test_linalg.py

2 failed, 82 passed

test_nn.py

12 passed

test_size_vector.py

3 passed

test_sycl_utils.py

1 skipped

test_tensor_function.py

40 passed

test_torch_integration.py

5 passed

data

test_data.py

31 passed, 4 skipped

io

test_io.py

rpc/test_remote_functions.py

rpc/test_serialization.py

3 passed, 1 skipped

ml

test_contrib_iou.py

4 passed

test_contrib_subsample.py

2 passed

ml_ops

test_cconv.py

8 passed, 3 skipped

test_fixed_radius_search.py

3842 passed

test_general_sparseconv.py

8 passed

test_invert_neighbors_list.py

2 failed, 42 passed

test_ragged_tensor.py

16 failed, 10 passed

test_voxelize.py

2688 passed

...

682 passed, 12 skipped

t

geometry/test_image.py

6 passed

geometry/test_lineset.py

4 passed

geometry/test_pointcloud.py

12 passed

geometry/test_raycasting_scene.py

18 passed

geometry/test_tensormap.py

9 passed

geometry/test_trianglemesh.py

43 passed

io/test_noise.py

1 passed

io/test_realsense.py

2 skipped

registration/test_registration.py

12 passed

registration/test_transformation_estimation.py

8 passed

visualization

test_cpu_rendering.py

1 skipped

test_tensorboard_plugin.py

4 skipped

  • core/test_linalg.py fails because it uses the unsupported cusolverDnSgesvd_bufferSize and cusolverDnDgesvd_bufferSize functions.

  • A few test cases in the ml_ops directory result in a core dumped error at runtime.

  • The current pass rate is 99.7% (8193/8213).

Known issues

  • Unit test runtime issues

    • test_linalg.py::test_svd

      • The open3d.core.svd operation fails because it uses the unsupported cusolverDnSgesvd_bufferSize and cusolverDnDgesvd_bufferSize functions.

    • test_invert_neighbors_list.py

      • Passing an incorrectly shaped input to ml.ops.invert_neighbors_list causes a segmentation fault (core dumped) error instead of the expected Exception.

    • test_ragged_tensor.py

      • Iterating through the elements of a RaggedTensor causes a segmentation fault (core dumped) error.