Incorrectly defined user constraints can cause mapper failure. Some of these can be
caught by the mapper pre-checker. However, the pre-check phase does not catch all
failures. In such cases, check for the following conditions.
- If there are many absolute location or co-location constraints
in the graph, check that they do not give conflicting directives to the mapper.
This can occur because of the checkerboard nature of the AI Engine array as shown in the following
figure.
In this figure, kernels (red) have absolute location constraints. The window buffer (green) between them has a co-location constraint with the first kernel. This results in mapper failure.
Figure 1. Conflicting Absolute Location/Co-location Constraints
- If you have absolute location constraints for kernels that are
part of a cascade chain, check that these constraints are compatible with the
architecture. In AI Engine architecture, the
direction of the cascade changes in each row. If you have absolute constraints
and cascades as shown in the following diagram, it causes mapper failure.Figure 2. Conflicting Cascade Direction
- Constraining buffer size to a single tile can exceed the tile’s memory capacity, which is 32 KB in AI Engine architecture.
- Each tile in the AI Engine architecture has two input and two output DMA channels. If you have constrained buffers such that a particular tile needs more than this number of DMA channels, it results in mapper failure.