Open3d: CUDA support?

Created on 26 Jun 2018  路  18Comments  路  Source: intel-isl/Open3D

Thanks for the awesome work and contribution. Are there any plans for CUDA support? such as ICP and reconstruction with CUDA, etc. Thanks!

enhancement

Most helpful comment

Just interesting if there is any update?

All 18 comments

I don't think we will have such support in the near future, as we are short handed - so we have to deprioritize many things. But if many people are requesting this feature we can prioritize it.

I think is a good feature, and more taking on count that video and data is growing in importance. Please take this into consideration.

I'm working a lot in 3d scanning and photogrammetry... CUDA support is a very big plus in this industry.

CUDA definitely offers some significant speed improvements. I've started playing with these.

https://github.com/mp3guy/ICPCUDA

https://github.com/michaelwillett/GPU-ICP-SLAM

CUDA support could be very useful to work on open3d. It will speed up many processes.

Rather than becoming specific to NVIDIA CUDA architecture, maybe a look into https://www.openacc.org/ could be beneficial.

True, we have many options each with pros and cons.
Just a few:

CUDA
OpenCL
SYCL
Halide
ISPC
OpenACC
etc.

This is an ongoing study and we appreciate any feedback and thoughts.

A bit about my opinion.

SYCL is an unexpected and solid contender.
An uncomplicated description of SYCL would be: SYCL is a single source C++ facelift of OpenCL. In theory SYCL has all the advantages of OpenCL with fewer of its disadvantages. The single source C++ makes it very friendly.

Halide is very solid as well. Single source C++ also. Halide has a very good coverage of hw architectures just like OpenCL/SYCL. In theory Halide makes it easier than OpenCL/SYCL to optimize for each one of the said hw architectures.

CUDA/OpenACC are pretty much NVIDIA only. I personally love them both with OpenACC definitely nicer than pure CUDA.

ISPC is an obscure option but probably the best (matched only by Halide) option for CPU optimizations. IMHO there's more room for optimizations on the CPU side and ISPC could do great here.

Awesome! @takanokage had volunteered for this issue. @takanokage: please take a full ownership.

Sure, thanks! ;)

Exciting!

@takanokage any specific instructions to work with the cuda_support branch?

The one requirement is to use a more recent CMake (>3.12.2) in order to make use of the native support for CUDA in CMake which simplifies configuration.

Caveat: this branch is still in very early stages. You will notice that our focus has been not on implementing kernels but rather on the infrastructure required to support GPU acceleration. As such there's little benefit at this time from using this branch.

For icp, I implement a point2plane cuda version recently, including kdtree query on gpu. Hope it helps.

We are working on full cuda support for Open3D. Stay tuned. In the meantime, I am closing this issue

@germanros1987 That's great. Do you have a tentative timeline for the release? And will that include optimizing pairwise_registration?

Just interesting if there is any update?

Was this page helpful?
0 / 5 - 0 ratings