Presentation
Performance Exploration Through Optimistic Static Program Annotations
Event Type
Research Paper

Compilers
Resiliency
System Software & Runtime Systems
TimeTuesday, June 18th2:15pm - 2:45pm CEST
LocationAnalog 1, 2
DescriptionCompilers are limited by the static information directly or indirectly encoded
in the program. Low-level languages, such as C/C++, are
considered problematic as their weak type system and relaxed memory semantic
allows for various, sometimes non-obvious, behaviors. Since compilers have to
preserve the program semantics for all program executions, the existence of
exceptional behavior can prevent optimizations that the developer would
consider valid and might expect. Analyses to guarantee the absence of
disruptive and unlikely situations are consequently an indispensable part of an
optimizing compiler. However, such analyses have to be approximative and
limited in scope as global and exact solutions are infeasible for any
non-trivial program.
In this paper, we present an automated tool to measure the effect missing
static information has on the optimizations applied to a given program. The
approach generates an optimistically optimized program version which, compared
to the original, defines a performance gap that can be closed by better
compiler analyses and selective static program annotations.
Our evaluation on six already tuned proxy applications for high-performance
codes shows speedups of up to 20.6%. This clearly indicates that static
uncertainty limits performance. At the same time, we observed that compilers
are often unable to utilize additional static information. Thus, manual
annotation of all correct static information is therefore not only error prone
but also mostly redundant.
in the program. Low-level languages, such as C/C++, are
considered problematic as their weak type system and relaxed memory semantic
allows for various, sometimes non-obvious, behaviors. Since compilers have to
preserve the program semantics for all program executions, the existence of
exceptional behavior can prevent optimizations that the developer would
consider valid and might expect. Analyses to guarantee the absence of
disruptive and unlikely situations are consequently an indispensable part of an
optimizing compiler. However, such analyses have to be approximative and
limited in scope as global and exact solutions are infeasible for any
non-trivial program.
In this paper, we present an automated tool to measure the effect missing
static information has on the optimizations applied to a given program. The
approach generates an optimistically optimized program version which, compared
to the original, defines a performance gap that can be closed by better
compiler analyses and selective static program annotations.
Our evaluation on six already tuned proxy applications for high-performance
codes shows speedups of up to 20.6%. This clearly indicates that static
uncertainty limits performance. At the same time, we observed that compilers
are often unable to utilize additional static information. Thus, manual
annotation of all correct static information is therefore not only error prone
but also mostly redundant.