Open3D (v1.6)
Installing a 3D detection framework, such as mmdetection3d, often installs Open3D automatically. However, the pre-compiled package from pip install open3d contains a GPU binary that is incompatible with PPUs. You must recompile Open3D from source.
The following steps use Open3D v0.18.0 (the latest version at the time of writing) as an example and have been verified in a docker container with PyTorch 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, you must 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 |
Tests in
core/test_linalg.pyfailed becausecusolverDnSgesvd_bufferSizeandcusolverDnDgesvd_bufferSizeare not supported.A few test cases in the
ml_opsdirectory caused acore dumpederror.Current pass rate: 8,193 / 8,213 = 99.7%
Known issues
Unit test execution issues
test_linalg.py::test_svdopen3d.core.svdfails becausecusolverDnSgesvd_bufferSizeandcusolverDnDgesvd_bufferSizeare not supported.
test_invert_neighbors_list.pyTesting
ml.ops.invert_neighbors_listwith an incorrect input shape causes asegmentation fault (core dumped)error instead of the expected exception.
test_ragged_tensor.pyIterating through elements in a
RaggedTensorcauses asegmentation fault (core dumped)error.