This paper studies two variants of tiling: iteration space tiling (or loop blocking) and cache oblivious methods that recursively split the iteration space with divide-and-conquer. The key question to answer is when we should be using one over the other. The answer to this question is complicated for modern architecture due to a number of reasons. In this paper, we present a detailed empirical study to answer this question for a range of kernels that fit the polyhedral model. Our study is based on a generalized cache oblivious code generator that support this class, which is a superset of those supported by existing tools. The conclusion is that cache oblivious code is most useful when the aim is to have reduced off-chip memory accesses, e.g., lower energy, albeit certain situations that diminish its effectiveness exist.
Ranasinghe et al. studied the difference between iteration space tiling and cache-oblivious approaches on modern architectures REF .
PCOT: Cache Oblivious Tiling of Polyhedral Programs
ArXiv
ArXiv
Computer Science