Experimental Results
The following experimental results were obtained using an OSE prototype built by retrofitting Intel's Electron compiler. A detailed description of the experimental setup can be found in Section 4.1 of the OSE paper.
All the performance numbers reported below correspond to actual running times, measured on real hardware. Experiments have been run on unloaded HP i2000 Itanium 1 machines. Running times for a program refer to the machine cycles spent executing a program's source-code functions; time spent in system calls or system library functions is ignored.
Tuning the OSE compiler
The following results were obtained during the tuning phase of the
OSE compiler. They refer to 15 SPECcint2000
and
SPECcfp2000
benchmarks. Since this experiment's
purpose was tuning rather than evaluation, each benchmark's
training inputs were used both for profiling and for evaluating
the executable's runtime. In this graph:
- The red bar corresponds to the performance of OSE with no compile-time pruning and no static performance estimation.
- The gray bar corresponds to the performance of OSE with no compile-time pruning but with static performance estimation. Notice that performance losses due to estimator inaccuracies are small.
- The blue bar corresponds to the performance of the full OSE system; it uses both static performance estimation and compile-time pruning. Notice that compile-time pruning does not incur any noticeable performance penalties.
OSE compile times
The following graph shows the compile times incurred by the OSE prototype for the 15 benchmarks used in the previous experiment. The gray and blue bars correspond to OSE's compile times without and with compile-time pruning respectively. Static performance estimation is used in both cases. Notice that compile-time pruning allows big compile-time savings.
Performance evaluation
In the following graph, OSE is applied to 14 applications that did
not participate in the prototype's tuning phase. The application
set includes some SPECint95
benchmarks, some
Mediabench
benchmarks, and the UNIX application
yacc
. In this case, separate sets of inputs were used
for profiling and for evaluation. Notice that OSE performs much
better on these applications than on SPEC, probably because the
original Electron compiler was more carefully tuned for SPEC
benchmarks.