Open3D使用指南 (v1.5)
When you install certain 3D detection frameworks, such as mmdetection3d, Open3D is automatically installed. However, the pre-compiled package installed via pip install open3d contains a GPU binary that is incompatible with the PPU. You must recompile it from source by following the steps below.
These steps use Open3D v0.18.0 as an example and were verified in a Docker container 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 are using 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 contains errors caused by unsupported cusolverDnSgesvd_bufferSize / cusolverDnDgesvd_bufferSize operations.
A few test cases in the ml_ops directory resulted in a core dump.
Current pass rate: 8193 / 8213 = 99.7%
Known issues
Unit test runtime issues
test_linalg.py::test_svd
The open3d.core.svd function fails because cusolverDnSgesvd_bufferSize and cusolverDnDgesvd_bufferSize are not supported.
test_invert_neighbors_list.py
Providing an incorrect shape as input to ml.ops.invert_neighbors_list causes a segmentation fault (core dumped) instead of the expected exception.
test_ragged_tensor.py
Iterating through the elements of a RaggedTensor causes a segmentation fault (core dumped).