Optimizing strategies for telescoping languages: procedure strength reduction and procedure vectorization
At Rice University, we have undertaken a project to construct a framework for generating high-level problem solving languages that can achieve high performance on a variety of platforms.The underlying strategy, called telescoping languages, builds problem-solving systems from domain-specific libraries and scripting langauges. To accomplish this it extensively preanalyzes and transforms the library to produce a scripting language precompiler that optimizes library calls within the scripts as if they were primitives in the underlying language.
A major technical issue is how to preoptimize a library for use in applications that are yet to be seen. To address this issue, we have conducted a study of applications written in Matlab by the signal processing group at Rice University. This has identified a collection of old and new optimizations that show promise for this particular domain. Two promising new optimizations are procedure vectorization and procedure strength reduction.The latter of these is particularly useful in this problem domain and we expect it to be just as applicable in other contexts as well.
We report on the results of an exploration of the effectiveness of procedure strength reduction on three real Digital Signal Processing (DSP) applications. By transforming these programs according to the strategies described in this paper, we were able to achieve speedups ranging from 10 to 40 percent over the entire application — speedups for individual functions were even more dramatic.