Automatic Generation of Optimized Domain-Specific Operations, Jason Eckhardt

In previous work, we introduced a compiler-based algorithm for eliminating inter-iteration redundancies in array-based loop computations. This algorithm detects and transforms loops from ordinary programs using sophisticated analysis techniques. From that work we discovered that many of the codes amenable to our technique were concentrated in a few application-specific domains such as PDE solvers and image processing. Moreover, the loops in these particular codes exhibit a regularity or simplicity which can simplify the task of analyzing and optimizing them. We also discovered that these computations are often specified in the domain literature not as elaborate loop nests, but rather with simple matrices or other compact forms. In this talk, we discuss a prototype automatic program generation tool which allows the domain expert to specify computations in a simple and familiar way, while letting the tool generate the actual source code. By utilizing domain knowledge encoded in the specification, the tool generates optimized code by suppressing as many inter-iteration redundancies as possible. The result is a highly efficient program with little effort from the domain expert, and with no need for a programming or computer architecture expert to optimize the code.