On fusing recursive traversals of K-d trees
Résumé
Loop fusion is a key program transformation for data locality
optimization that is implemented in production compilers. But
optimizing compilers for imperative languages currently cannot exploit
fusion opportunities across a set of recursive tree traversal
computations with producer-consumer relationships. In this paper, we
develop a compile-time approach to dependence characterization and
program transformation to enable fusion across recursively specified
traversals over k-d trees. We present the FuseT source-to-source
code transformation framework to automatically generate fused
composite recursive operators from an input program containing a
sequence of primitive recursive operators. We use our framework to
implement fused operators for MADNESS, Multiresolution Adaptive
Numerical Environment for Scientific Simulation. We show that locality
optimization through fusion can offer significant
performance improvement.