Learn More
This paper describes a technique for transforming imperfectly-nested loops to enhance locality of reference. The key idea is to embed the iteration space of every statement in the loop nest into a special iteration space called the <i>product</i> space. The product space is interpreted as a perfectly-nested loop that is transformed to enhance locality and(More)
The Dynamic Execution Layer Interface (DELl) offers the following unique capability: it provides fine-grain control over the execution of programs, by allowing its clients to observe and optionally manipulate every single instruction---at run time---just before it runs. DELl accomplishes this by opening up an interface to the layer between the execution of(More)
The contributions of this paper are the following.<list><item>We introduce a new variety of generic programming in which algorithm implementors use a different API than data structure designers, the gap between the API's being bridged by restructuring compilers. One view of this approach is that it exploits restructuring compiler technology to perform a(More)
Modern compilers restructure programs to improve their efficiency. Dependence analysis is the most widely used technique for proving the correctness of such transformations, but it suffers from the limitation that it considers only the memory locations read and written by a statement without considering what is being computed by that statement. Exploiting(More)
We present compiler technology for synthesizing sparse matrix code from (i) dense matrix code, and (ii) a description of the index structure of a sparse matrix. Our approach is to embed statement instances into a Cartesian product of statement iteration and data spaces, and to produce efficient sparse code by identifying common enumerations for multiple(More)
We h a ve recently developed a new program analysis strategy called fractal symbolic analysis that addresses some of limitations of techniques such as dependence analysis. In this paper, we s h o w h o w fractal symbolic analysis can be used to convert between left-looking and right-looking versions of three kernels of central importance in computational(More)
  • 1