|
CMU-CS-03-195
Computer Science Department
School of Computer Science, Carnegie Mellon University
CMU-CS-03-195
The Effect of Profile Choice and Profile
Gathering Methods on Profile-Driven Optimization Systems>
Geoff Langdale
October 2003
Ph.D. Thesis
CMU-CS-03-195.ps
CMU-CS-03-195.pdf
Keywords: Compilers, optimization, performance of systems, modeling
techniques
Profile-driven optimization can produce substantial improvements in the
quality of code produced by a compiler or link-time optimizer. In this work,
we analyze several important aspects of profile-driven optimization. We
examine the effectiveness of profile-driven optimization in two
commercial-quality optimizers (Digital s GEM compiler and the link-time
optimizer alto ). We perform analyses to determine how much variability
in profile-driven optimization performance results from choosing
different training profiles, and to determine how much op-timization
benefit results from choosing more accurate profiles (that is, profiles
that better predict the way that a program is actually run). We examine
low-overhead profiling methods such as static estimation (estimating
profiles using static heuristics) and statistical sampling (gathering
profiles by sampling only a small number of basic block executions).
We analyze some profile-driven optimization results in great detail,
and show a methodology for accounting for the profile-driven optimization
effects of profile data associated with individual functions.
Our results show that profile-driven optimization is effective on average,
but unreliable when considering any individual benchmark. Using more
accurate pro-files is only weakly connected to improved profile-driven
optimization performance for most benchmarks. However, low-overhead
profiling techniques result in substantial degradations in the
reliability and average performance of profile-driven optimization,
often to the point of rendering the entire profile-driven optimization
process useless. Our analysis also shows that the effects of
profile-driven optimization are highly concentrated in the profile
data associated with a few functions. Whether profile data improves
or worsens the performance of optimized code, it is often possible
to attribute the vast majority of this effect to the profile data
associated with just a few functions.
138 pages
|