Cannot import open3d.cuda on ARM platform - Jetson ORIN
Checklist
- [X] I have searched for similar issues.
- [X] For Python issues, I have tested with the latest development wheel.
- [X] I have checked the release documentation and the latest documentation (for
masterbranch).
Steps to reproduce the issue
I first cloned Open3D by:
git clone https://github.com/isl-org/Open3D.git
cd Open3D
Then, I build Open3D (on Ubuntu 20.04, with CUDA 11.5) with:
conda activate your-virtual-env
cd Open3D && mkdir build && cd build
cmake -DBUILD_CUDA_MODULE=ON -DBUILD_GUI=ON ..
# Build
make -j$(nproc)
make install-pip-package -j$(nproc)
Error message
No import error or warning was shown. But after looking into package I found that the open3d is reaching the warning below while initializing
Open3D was built with CUDA support, but an error ocurred while loading the Open3D CUDA Python bindings. This is usually because the CUDA libraries could not be found. Check your CUDA installation. Falling back to the CPU pybind library. Reported error: {os_error}.',
Open3D, Python and System information
- Operating system: Ubuntu 20.04 ARM 64
- Python version: Python 3.8.16
- Open3D version: output from python: 0.17.0+6370a58b9
- System architecture: jetson ORIN AGX 32GB
- Is this a remote workstation?: no
- How did you install Open3D?: build from source
- Compiler version (if built from source): gcc 9.4
Additional information
Clearly Open3d is not albe to identify the GPU on jetson. CUDA 11.8 is installed on jetson and pytorch is able to detect GPU on the system but I don't understand why open3d is not able to identify the gpu.
Am I missing any additional drivers to make this work or is this a bug?
also there is no docker version with cuda for arm. this is a major oversight. jetson devices are the main edge devices that would use open3d and must be cuda enabled. how can we do it?
As it stands I don't think anyone has been able to successfully build against the Nvidia Orin, I believe it's due to a memory conflict as a result of the Tegra unified memory architecture.
o wow that's pretty crazy since pytorch with cuda and opencv with cuda work fine. what are the dependencies that cause the headache?
The issue is (as I understand it) in order to build open3d for CUDA you must build once for GPU, and build again for CPU; however, on Tegra systems the memory for CPU and GPU is the same silicon (This is how it was explained to me, I haven't gone in there and looked for myself)
I built manually with cuda and ran into the following error during install stage.
cmake -DBUILD_CUDA_MODULE=ON -DBUILD_GUI=ON .. make -j$(nproc) make install-pip-package -j$(nproc)
Error: removing build/bdist.linux-aarch64/wheel pip wheel created at /home/nvidia/wsp/clawbot/open3dV2/Open3D/build/lib/python_package/pip_package [100%] Built target pip-package WARNING: Skipping open3d as it is not installed. WARNING: Skipping open3d-cpu as it is not installed. ERROR: open3d-0.17.0+3ddc69b81-cp38-cp38-manylinux_2_31_aarch64.whl is not a supported wheel on this platform.
Platform: Jetson agx xavier uname -a : Linux nvidia-desktop 5.10.120-tegra #1 SMP PREEMPT Tue Aug 1 12:32:50 PDT 2023 aarch64 aarch64 aarch64 GNU/Linux
Let me know if there is a fix.
it builds including ubuntu 24.04 jp7: https://github.com/isl-org/Open3D/pull/7240