Input and output buffers represent a block of data that is stored contiguously on a tile’s physical memory, and that can be used by kernels in a graph. The origin of this data can be either other kernels that produce them, or they can come from the PL through AI Engine array interface. You can allocate the buffer port in the tile’s physical memory where the kernel executes, or in the physical memory of accessible adjacent tiles.
When a kernel has a buffer port on its input side, it waits for the buffer to be fully available before it starts execution. The kernel can access the contents of the buffer port either randomly or in a linear fashion. Conversely the kernel can write a block (frame) of data to the local memory. That block can be used by other kernels after it has finished execution.
When the source of a buffer is a stream, this stream is sliced into contiguous blocks. These blocks are stored one by one into buffers, as illustrated in the following figure.
The following figure shows an example of a kernel buffer port in local tile memory. Tile (10,0) contains kernel K1, and the input buffer port is allocated in the local memory of the same tile (10,0).
The following figure shows an example of a kernel buffer port that is allocated in a neighboring tile memory. The kernel k2 is in tile (11,0) and input buffer port at neighbor tile (10,0).