Is there any plan to add a custom accelerator device support to OpenCV?
Some operations e.g. matrix multiplication or convolution can be done faster on some custom accelerators. It would be good if such support can be done in general, so that users would be able just to switch a device and get the advantage of acceleration. Is there any plan for that?
adding an example of a "custom accelerator" might be helpful here ;)
We plan to make an SOC, which will do the job. Another case may be some FPGAs. I suppose we are not the only company working on it :) So that may be beneficial for the community.
There are already some accelerator devices supported in OpenCV: Myriad (Intel Movidius) and GPU in general with OpenCL (the kernels seem to be tuned for Intel iGPU) and Vulkan (first additions have been done very recently).
There is also something call HAL (Hardware Acceleration Layer) in the core module to replace some basic functions. See also.
Probably you should look in these two directions.
Thank you, Eduardo. I was talking about a general solution like a "plug in". Adding a device in the way for example HAL added requires a lot of changes in common code.
I have no experience on this topic but I hardly see how a plug and play solution would work out of the box without either lots of efforts from the OpenCV side or the vendor side, in the code. I mean you probably will need to ship your own version of OpenCV, to ship your own customized OpenCL kernel or something like that.
Maybe try to see how it is done for some vendors:
maybe openVX is far easier to adapt to hardware like yours
Thank you, guys. I will take a look at OpenVX and custom OpenCV libraries.
late, but have a look here, too : https://github.com/opencv/opencv/pull...
thank you for the link!
things are definitely on the move here ;)