This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

How to Integrate Arm Compute Library with OpenCV?

Hi,

Is there a standard way to interface OpenCV with ACL? 

I understand that the work done on ACL is very new and the OpenCV community may not have started working on interfacing ACL with OpenCV.

I'm trying to understand if there was any effort from ARM side on interfacing OpenCV with ACL. 

Thank you.

Regards,

San

   

Parents
  • Sure, I'd recommend having a look at the Library Architecture section of the documentation (https://arm-software.github.io/ComputeLibrary/v18.05/architecture.xhtml)

    Are you interested in NEON or OpenCL ?

    In both cases the biggest problem to solve is going to be the padding: ACL requires padding to work properly, and in order to be able to calculate padding accurately you need to know where a buffer will be used next which isn't possible with OpenCV as you don't have the concept of pipeline or graph.

    If you're interested in OpenCL the other issue is that ACL is oriented towards deferred execution whereas OpenCV relies on immediate execution, which is very inefficient for GPUs. Once again this is hard to work around without a concept of graph or pipeline.

    These are the main reasons why people tend to move away from OpenCV when performance is important and use something like OpenVX or TensorFlow / Caffe for ML where you do have graph level execution.

    I haven't followed recent development in OpenCV so it might be that some of these things have been addressed.

    As mentioned above the ACL team monitors the issues section of the Github project so feel free to ask more questions there.

Reply
  • Sure, I'd recommend having a look at the Library Architecture section of the documentation (https://arm-software.github.io/ComputeLibrary/v18.05/architecture.xhtml)

    Are you interested in NEON or OpenCL ?

    In both cases the biggest problem to solve is going to be the padding: ACL requires padding to work properly, and in order to be able to calculate padding accurately you need to know where a buffer will be used next which isn't possible with OpenCV as you don't have the concept of pipeline or graph.

    If you're interested in OpenCL the other issue is that ACL is oriented towards deferred execution whereas OpenCV relies on immediate execution, which is very inefficient for GPUs. Once again this is hard to work around without a concept of graph or pipeline.

    These are the main reasons why people tend to move away from OpenCV when performance is important and use something like OpenVX or TensorFlow / Caffe for ML where you do have graph level execution.

    I haven't followed recent development in OpenCV so it might be that some of these things have been addressed.

    As mentioned above the ACL team monitors the issues section of the Github project so feel free to ask more questions there.

Children
No data