An AI Engine program consists of a
Data Flow Graph Specification written in C++. An
ADF graph is a network with a single AI Engine kernel
or multiple AI Engine kernels connected by data
streams. The graph can interact with the programmable logic (PL), global memory, and/or
the host processor using specific constructs. input_plio
and
output_plio
port objects can be used to establish stream
connections to or from the programmable logic, input_gmio
and
output_gmio
port objects can be used to establish memory-mapped
connections to or from the global memory, and RTP (Runtime Parameter) objects can be
used to setup and control parameters required by the kernels during graph execution.
A graph can have multiple kernels, input and output ports. The graph connectivity, which is equivalent to the nets in a data flow graph is either between the kernels, between kernel and input ports, or between kernel and output ports, and can be configured as a connection. A graph runs for an iteration when it consumes data samples equal to the window or stream of data expected by the kernels in the graph, and produces data samples equal to the window or stream of data expected at the output of all the kernels in the graph.
As described in C++ Template Support you can use template classes or functions for writing the AI Engine graph or kernels. The application can be compiled and executed using the AI Engine tool chain. This chapter provides an introduction to writing an AI Engine program.
A complete class reference guide is shown in Adaptive Data Flow Graph Specification Reference. The example that is used in this chapter can be found as a template example in the Vitis™ environment when creating a new AI Engine project.