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 core-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. See Graph Objects for more details on the use of these
APIs.#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;
}