Parametric Tiling with Inter-Tile Data Reuse
Résumé
Loop tiling is a loop transformation widely used to improve spatial and temporal data locality, increase computation granularity, and enable blocking algorithms, which are particularly useful when offloading kernels on platforms with small memories. When hardware caches are not available, data transfers must be software-managed: they can be reduced by exploiting data reuse between tiles and, this way, avoid some useless external communications. An important parameter of loop tiling is the sizes of the tiles, which impact the size of the necessary local memory. However, for most analyzes that involve more than one tile, which is the case for inter-tile data reuse, the tile sizes induce non-linear constraints, unless they are numerical constants. This complicates or prevents a parametric analysis. In this paper, we show that, actually, parametric inter-tile data reuse is nevertheless possible and that, consequently, it is possible to determine, at compile-time, the size of the induced local memories, without the need to recompile for all tile sizes.