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 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: The API
resume()
is used to resume execution from the point it was stopped after
the first timeout. resume
only resets the timer and
enables the AI Engines. Calling resume
after the AI Engine execution has already terminated has no effect.