Incorrectly defined user constraints can cause mapper failure. Some of these will be caught by the mapper pre-checker. However, not all of them can be caught in the pre-check phase. In such cases, check for the following conditions.
- If you have a large number of absolute location or co-location constraints in
the graph, check that these constraints do not give conflicting directives to the
mapper. This might occur because of the checkerboard nature of the AI Engine array as shown in the following diagram.
In this diagram, the kernels in red have absolute location constraints while the window buffer (green) between them has a co-location constraint with the first kernel. This will result 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 will cause mapper failure.Figure 2. Conflicting Cascade Direction
- In some cases the size of the buffers being constrained to a particular tile might exceed the memory capacity of the tile (32 KB in AI Engine architecture). This will result in mapper failure.
- Each tile in the AI Engine architecture has two input and two output DMA channels. If you have constrained buffers in such a way that a particular tile needs more than this number of DMA channels, it will result in mapper failure.