In multi-rate graphs, all kernels need not execute for the same number of iterations. In such situations, a timed execution model is more suitable for testing.
There are variants of the wait and
end APIs with a positive integer that specifies a
cycle timeout. This is the number of AI Engine-ML
cycles that the API call blocks before disabling the processors and returning. The
blocking condition does not depend on any graph termination event. The graph can be in
an arbitrary state at the expiration of the timeout.
#include "project.h"
simpleGraph mygraph;
int main(void) {
mygraph.init();
mygraph.run();
mygraph.wait(10000); // wait for 10000 AI Engine cycles
mygraph.resume(); // continue executing
mygraph.end(15000); // wait for another 15000 cycles and terminate
}
Note: You can use the API
resume() to resume execution from the point it was stopped
after the first timeout. resume only resets the timer
and enables the AI Engine-MLs. Calling resume after the AI Engine-ML execution has already terminated has no effect.