Wed Sep 9 17:01:39 CEST 2009
IP - staged image processing
I'm getting closer to making this a reality. The most important part
is building a collection of _parametric_ grid folds. This allows to
separate correctness (express programs in terms of abstract folds with
higher level semantics) from optimization (pick the parameters that
steer the code generation, i.e. loop unroll, order, tiling, ...
It seems that this is a significant design decision: don't put the
intelligence in the system (optimizing compiler), especially not
locally, but make alternatives explicit and bring them outside. This
allows for manual configuration and automated global optimization
(i.e. a single week-long exhaustive search for an efficient
implementation once the application is correct). It also makes it
possible to map the configuration parameters to resource use.
The bottom line is quite simple really: make _all_ design choices
explicit, and write a specializer for those.