Whether data tunneling is possible within nodes in OpenVx graph ?

Hi Sir,

I have the OpenVx graph as A->B->C .Let us assume all nodes are executing on DSP and the control code is in CPU . So traditionally A,B,C will be executed frame by frame basis by bringing the data to and from CPU <-> DSP each and every time the nodes are getting executed. This will cause a significant overhead as we need to access the external memory and also frequent context switches. Can this be overcome using OpenVx frame work. can A output be accesed by B without control coming to CPU. Can this be made possible by means of data tunneling ( processing in lines ). I understand there is OpenVx Tiling extension . The whole idea here what I wanted to understand is whether output of one node be accessed by another node in the same target without control switch to the CPU ?

Can you please give your inputs?



Yes, the situation you presented should be an optimization that an OpenVX implementation may be able to implement. This is the kind of optimizations that the working group had in mind when defining OpenVX specification. By specifying a graph API, the entire workload is known up front, so the implementation should be able to make all the optimizations you have mentioned in your post. For your reference, there is a paper which describes some of the optimization potential at the system level that OpenVX spec should enable : http://people.csail.mit.edu/kapu/papers/openvx_optimization_2014.pdf . I should note that Khronos specifies the OpenVX API. A given implementation of OpenVX may or may not choose to implement the kind of optimizations you refer to, so you should check with the vendor of the OpenVX implementation you are using to make sure. If you plan to make your own implementation, then the specification should provide enough information to the implementation for you to make these kind of optimizations.

Thanks for your question,