| Abstract:
Reducing energy consumption, improving performance, and tolerating
failures are important goals in modern computing systems. We present
two techniques for satisfying these goals. The first technique, loop
perforation, finds the most time-consuming loops, then transforms the
loops to execute fewer iterations. Our results show that this
technique can reduce the computational resources required to execute
the application by a factor of two to three (enabling corresponding
improvements in energy consumption, performance, and fault tolerance)
while delivering good quality of service. The second technique,
goal-directed parallelization, executes the most time-consuming loops
in parallel, then (guided by memory profiling information) adds
synchronization and replication as necessary to eliminate bottlenecks
and enable the application to produce accurate output. Our results
show that this approach makes it possible to effectively parallelize
challenging applications without the use of complex static analysis.
Because traditional program transformations operate in the absence of
any specification of acceptable program behavior, the transformed
program must produce the identical result as the original program. In
contrast, the two techniques presented in this talk exploit the
availability of quality of service specifications to apply much more
aggressive transformations that may change the result that the program
produces (as long as the result satisfies the specified quality of
service requirements). The success of these two techniques
demonstrates the advantages of this approach.
Please contact carsten@itu.dk to set up an appointment to talk to
Martin.
|