Generally, there are two methods to transfer data between kernels–buffer or stream. When using the buffer, data transfers can be realized as ping-pong buffers or optionally, using a single buffer. AI Engine-ML tools handle buffer synchronization between the kernels. You need to decide the buffer size and location between kernels through application partition. If you require an overlap between different buffers of the data, AI Engine-ML tools provide options for setting a margin for the buffer. That is, to copy the overlap of data automatically.
When using the stream, the data movement involves the following:
- One input stream port.
- One output stream port.
- One dedicated cascade stream input port (selectable between north and west).
- Output port (selectable between east and south).
Stream ports can move 32 bits per cycle. Stream interfaces are bidirectional and can read or write neighboring or non-neighboring AI Engines by stream ports. However, cascade stream ports are unidirectional and only provide a one-way access between the neighboring AI Engines.