Open3D使用指南 (v1.4.1)
在安装某些 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)。