next up previous contents
Next: Compiler Selection Details Up: Conclusions Previous: Practicality Issues

Future Work

Bug Fixes

Multiple source code files support.

The snoot pass should be further modified to support the qvar construct, and support use of the extern type modifier so as to permit qvar and qint declarations and not just definitions. Once that is done, then the implemented clever compiler could in theory support multiple source code files. However, the SUIF compiler system itself at the current time only has limited support for multiple source files. In particular, version 1.0.1 does not have a supported, functional linksuif pass which would make the global symbol tables of multiple SUIF files consistent, among other things making declarations which ought to be globally visible available in all global symbol tables.

Default scope for qint parameters.

Chapter gif specifies that if there are no qinfluence statements referencing a particular qint parameter, then that qint parameter should be associated with the performance of all parts of the program where the definition is visible. This has not yet been implemented. However, this is not a major problem but rather a minor convenience for the programmer.


Smarter searching.

The select_alternatives pass currently does not perform any kind of smart searching of program version space, and simply searches the entire space. It needs to incorporate both standard space searching techniques and domain-specific heuristics enabled by the information gathered by integrate. The current integrate pass only finds and records relationships between qif variables which are used in the same qif statement and qint parameters which are referenced in nested qinfluence statements. A more sophisticated integrate would record relationships between sets of quasistatic variables and sets of quasistatic parameters resulting from qinfluence statements nested inside qif clauses and qif statements nested in qinfluence statements as well as other qif statements. In addition, integrate should record dynamic interactions such as in Figure gif.

Program context.

A given run of the program has a great deal of context which can be detected by instrumentation code in the program --- a few examples of such context items include time of day, identity of person using the program, exactly which machine is being used, load of machine during the program run, network bandwidth and latency, command-line parameters. Some of these context items may be worth storing with more standard forms of profiling data during each run, to give the clever compiler more information upon which to base program version selection. Determination of whether this would be worthwhile is a matter for pragmatic exploration.

Cross-platform implementation, extending support to other profiling mechanisms.

Cross-platform availability is especially desireable because one potential benefit of the quasistatic computing model is to optimize programs differently on different machine platforms. Porting the clever compiler implementation will allow actual evaluation of how much benefit can be obtained. Related to porting, the clever compiler's reliance on real-time stopwatch profiling should be eliminated since many platforms will not support such a mechanism; the clever compiler should be able to make use of prof/gprof-like mechanisms which are widely supported. A clever compiler should be able to use program performance information from any of the supported mechanisms on a platform.

Additional Research

Real-time profiling.

Combining real-time profiling techniques with CPU-time profiling techniques potentially gives additional synergistic insight into a program's performance characteristics. This may be worth exploring independently of the clever compiler implementation.


A clever compiler, which requires extending the C language with new syntax and constructs, may or may not be the best stepping stone toward a smart compiler. However, even in developing the examples in Chapter gif, several times the syntax and constructs defined in Chapter gif proved to not be sufficiently expressive to conveniently encode the code alternatives. Perhaps a few simple extensions would suffice; however, perhaps entirely different mechanisms of encoding code alternatives in source code should be considered and evaluated.


It will be desireable to eventually integrate work on this clever compiler implementation with other manifestations of quasistatic computing ideas, such as feedback-directed specialization of C []. Integration might entail coordinating profiling efforts (i.e., standardizing data collection) and preventing different modules which wish to conduct experiments on different program versions from interfering with each other. Work on such integration would be a step toward a quasistatic computing ``environment'' [,].

next up previous contents
Next: Compiler Selection Details Up: Conclusions Previous: Practicality Issues

Reinventing Computing, MIT AI Lab. Author: (Ping Huang)