Open3D使用指南 (v1.4.1)
Certain 3D detection frameworks, such as mmdetection3d, automatically install Open3D. However, the pre-compiled package installed using pip install open3d contains GPU binaries that are incompatible with PPU environments. To use Open3D on a PPU, you must recompile it from the source. This guide explains how to compile Open3D v0.18.0. These steps have been verified in a Docker container with Torch 2.4 and CUDA 12.3.
Procedure
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, you must apply a 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"UT 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 |
The test
core/test_linalg.pyfails with an error becausecusolverDnSgesvd_bufferSizeandcusolverDnDgesvd_bufferSizeare not supported.Several test cases in the
ml_opsdirectory result in acore dumpederror.The current pass rate is 99.7% (8193 out of 8213).
Known issues
Unit test runtime issues
test_linalg.py::test_svd
The
open3d.core.svdfunction fails becausecusolverDnSgesvd_bufferSizeandcusolverDnDgesvd_bufferSizeare not supported.
test_invert_neighbors_list.py
The
ml.ops.invert_neighbors_listfunction does not throw the expected exception for inputs with thewrong shape. Instead, the process terminates with asegmentation fault (core dumped)error.
test_ragged_tensor.py
Iterating through the elements of a RaggedTensor causes a
segmentation fault (core dumped)error.