next up previous contents
Next: Related Work Up: Thesis: Selecting better performing Previous: Matrix Manipulations

Conclusions

In this thesis, I first briefly described the concept of quasistatic computing and how it can manifest itself in a clever or smart compiler. The underlying assumption behind the utility of a smart compiler is that a compiler can make profitable use of profiling information of a program's actual end-use to guide (drastic, in this case) transformations of programs to improve average performance. Not only is it unlikely that this decades-old hypothesis will ever be conclusively ``proven'' true or false --- there being too great a variety of programs for any such sweeping statements to be true --- but it has never even been adequately tested. My goal, then, was implement a system which would allow programmers to pragmatically explore whether the hypothesis was usually true or not on the kinds of programs which they are writing. By defining some extensions to the C programming language (quasistatic variables and the qif-qelse statement, quasistatic parameters and the qinfluence statement), and implementing a compiler system based on the SUIF compiler and the GNU gcc compiler that accepts source code with such constructs and emits instrumented executables which periodically call the compiler on themselves, I've demonstrated that it is quite feasible to implement at least a clever compiler, if not a smart one. Finally, by modifying the SPECint92 benchmark eqntott and writing some simple matrix manipulation examples, I've demonstrated that these particular constructs, even if imperfect, can change how a programmer goes about optimizing a program, as well as serve as an aid to a programmer performing more traditional forms of profile-driven hand-optimization.





Reinventing Computing, MIT AI Lab. Author: pshuang@ai.mit.edu (Ping Huang)