ros-industrial / yak

A library for integrating depth images into Truncated Signed Distance Fields.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Convert to use OpenCL instead of CUDA

mpowelson opened this issue · comments

Has any thought been put into this? I have no experience with OpenCL but from what I know it would have several advantages primarily allowing yak to run on multiple brands of GPU as well as at least Intel CPUs.

I know I have read that it may not perform as well as NVIDIA specific code for some problems but allowing us to build yak to run on the CPU seems worth a small performance hit. If we ran it on a CPU we could presumably then use regular RAM for the volume. This would also allow us to unit test on Travis easily

I think this is definitely a desirable direction for future development. It would require a ground-up rewrite of most of this package, but I'd like to do that anyway at some point and this is a good opportunity.

I'm not sure what this is, but this might be another alternative
https://software.intel.com/en-us/oneapi

Came up in the last developer meeting: apparently OpenCV contains an implementation of Kinfu in its contribs package that is OpenCL based (or at least: the keyword opencl is mentioned): cv::kinfu::KinFu Class Reference.

Could be used as inspiration / a starting point.

Probably also worthwhile to take a look at SYCL, which provides C++-style abstraction layer on top of OpenCL.

@schornakj You might look into ArrayFire as well. We looked into it for TrajOpt, and it seems pretty nice. It might not be as efficient as well written custom CUDA code, but having everything in the form of matrix math would probably help maintainability. They have backends for CUDA, OpenCL (GPU or CPU), or custom CPU

Hello there, Now, I want to convert from opencv cuda to opencl. But I don't have any mentions. So Could you help me how I can convert it?

You might have better luck with Open3d.