I am doing some research to confirm that we can use Myriad X VPUs for our developments.
We would like to use some OpenCV functions such as BRIEF or SIFT descriptors, corner detection algorithms and so on. By looking at the documentation of Myriad X it seems like it supports this functionality on them. However, when I am looking at the cpp code examples, it is not clear to me if this code runs on the CPU hosting of the NCS2 or in the Myriad VPU itself. I cannot see any flag on the OpenCV C++ functions which points to the Myriad platform.
How do we know that the code is running in the VPU? Which part of the code is running on the CPU and which part of code is running on the VPU?
Neural networks it is clear that they are running on the VPU since you can define it by using "setPreferableTarget".
I tried to do some research before asking but I cannot find a clear answer. All code is focus mainly on neural networks, but very little is for using OpenCV. Myriad X claims it has Enhanced Vision Accelerators and it is integrated with OpenCV, but it not clear how to use it and which functions actually run there.
Another question is it possible to write code for each one of the SHAVE cores? in a similar fashion as it can be done with the GPUs with CUDA.
Currently OpenCV can not use VPU for regular functions, it can only infer DL networks via InferenceEngine backend of dnn module. Although there exists an OpenCL compiler for VPU (since OpenVINO 2019R2) which, in theory, can be used to run custom functions on SHAVE cores.