For finite graph execution, the graph state is maintained across the
graph.run(n)
. The AI Engine is not reinitialized and memory contents are not cleared
after graph.run(n)
. In the following code example,
after the first run of three invocations, the AI Engine main()
wrapper code is left in a state where the kernel will start with
the pong buffer in the next run (of ten iterations). The ping-pong buffer selector state
is left as-is. graph.end()
does not clean up the graph
state (specifically, does not re-initialize global variables), nor clean up stream
switch configurations. It merely exits the core-main. To re-run the graph, you must
reload the PDI/XCLBIN.Important: A
graph.wait()
must be followed by either a graph.run()
or graph.resume()
prior to a graph.end()
. Failing to do so means that a graph could wait forever, and
graph.end()
never
executes.#include "project.h"
simpleGraph mygraph;
int main(void) {
mygraph.init();
mygraph.run(3); // run 3 iterations
mygraph.wait(); // wait for 3 iterations to finish
mygraph.run(10); // run 10 iterations
mygraph.end(); // wait for 10 iterations to finish
return 0;
}