  For most relevant computation, the energy and time needed for data movement
dominates that for performing arithmetic operations on all computing systems
today. Hence it is of critical importance to understand the minimal total data
movement achievable during the execution of an algorithm. The achieved total
data movement for different schedules of an algorithm can vary widely depending
on how efficiently the cache is used, e.g., untiled versus effectively tiled
matrix-matrix multiplication. A significant current challenge is that no
existing tool is able to meaningfully quantify the potential reduction to the
data movement of a computation that can be achieved by more effective use of
the cache through operation rescheduling. Asymptotic parametric expressions of
data movement lower bounds have previously been manually derived for a limited
number of algorithms, often without scaling constants. In this paper, we
present the first compile-time approach for deriving non-asymptotic parametric
expressions of data movement lower bounds for arbitrary affine computations.
The approach has been implemented in a fully automatic tool (IOLB) that can
generate these lower bounds for input affine programs.
  IOLB's use is demonstrated by exercising it on all the benchmarks of the
PolyBench suite. The advantages of IOLB are many: (1) IOLB enables us to derive
bounds for few dozens of algorithms for which these lower bounds have never
been derived. This reflects an increase of productivity by automation. (2)
Anyone is able to obtain these lower bounds through IOLB, no expertise is
required. (3) For some of the most well-studied algorithms, the lower bounds
obtained by \tool are higher than any previously reported manually derived
lower bounds.
