Open3D使用指南 (v1.4.1)

更新时间:
复制为 MD 格式

在安装某些 3D 检测框架(例如 mmdetection3d)时会自动安装open3d,而pip install open3d安装的预编译包含有GPU binary,在PPU上无法使用,需要按以下步骤重新编译。以下步骤以Open3D目前最新的v0.18.0版本为例,在torch 2.4 cuda 12.3 docker中验证通过。

编译步骤

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+
# 若使用 cuda 12.4 及以上版本,需要打上社区 patch,升级 stdgpu 版本
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"

UT测试结果

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 中存在 cusolverDnSgesvd_bufferSize / cusolverDnDgesvd_bufferSize 不支持导致的错误

  • ml_ops 目录下少数 case 运行出现 core dumped

  • 当前 pass rate = 8193 /8213 = 99.7%

已知问题

  • UT 运行问题

    • test_linalg.py::test_svd

      • cusolverDnSgesvd_bufferSize / cusolverDnDgesvd_bufferSize不支持导致open3d.core.svd运行失败。

    • test_invert_neighbors_list.py

      • 传入wrong shape测试ml.ops.invert_neighbors_list时出现Segmentation fault (core dumped) 而非预期的Exception。

    • test_ragged_tensor.py

      • 遍历RaggedTensor中的元素出现Segmentation fault (core dumped)。