Jason Eckhardt, a student of Keith Cooper, had an interesting COMP 600 talk about StencilDSL and simplifying writing certain stencil-based array operations:
Automatic Generation of Optimized Domain-Specific Operations
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.
I wonder how this would fit into Mint, especially since we used one of those stencil-based operations, a simple Gaussian blur, as benchmark example. Using eta-expansion as “the trick”, the staged generator might look exactly like the unstaged program.
But I definitely don’t have time to look at this right now.