Search NASA⌕ Search

DOE OSTI · 1574771

Performance Exploration Through Optimistic Static Program Annotations

Abstract

Compilers 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 effectmissing 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.

Explore related subjects

Keep this discovery

Explore connections, maps & timelines

BibTeXRIS

Doerfert, Johannes, Homerding, Brian, Finkel, Hal. 2019-01-01. Performance Exploration Through Optimistic Static Program Annotations. https://doi.org/10.1007/978-3-030-20656-7_13

Cite the original work for its findings. Save a collection to share your selection of sources.