Performance Exploration Through Optimistic Static Program Annotations

Compilers are limited by the static information directly or indirectly encoded in the program. Low-level languages, such as Open image in new window , 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.

[1]  Amer Diwan,et al.  Type-based alias analysis , 1998, PLDI.

[2]  Vikram S. Adve,et al.  Making context-sensitive points-to analysis with heap cloning practical for the real world , 2007, PLDI '07.

[3]  Mehdi Amini,et al.  ThinLTO: Scalable and incremental LTO , 2017, 2017 IEEE/ACM International Symposium on Code Generation and Optimization (CGO).

[4]  Michael Stepp,et al.  Equality saturation: a new approach to optimization , 2009, POPL '09.

[5]  Christian Lengauer,et al.  Polly - Performing Polyhedral Optimizations on a Low-Level Intermediate Representation , 2012, Parallel Process. Lett..

[6]  John Regehr,et al.  Provably correct peephole optimizations with alive , 2015, PLDI.

[7]  G. Ramalingam,et al.  The undecidability of aliasing , 1994, TOPL.

[8]  Susan Horwitz,et al.  Fast and accurate flow-insensitive points-to analysis , 1997, POPL '97.

[9]  Jan Hubicka,et al.  Optimizing real world applications with GCC Link Time Optimization , 2010, ArXiv.

[10]  Hakjoo Oh,et al.  Data-driven context-sensitivity for points-to analysis , 2017, Proc. ACM Program. Lang..

[11]  Paul Feautrier,et al.  Dataflow analysis of array and scalar references , 1991, International Journal of Parallel Programming.

[12]  Bjarne Steensgaard,et al.  Points-to analysis in almost linear time , 1996, POPL '96.

[13]  William Pugh,et al.  The Omega test: A fast and practical integer programming algorithm for dependence analysis , 1991, Proceedings of the 1991 ACM/IEEE Conference on Supercomputing (Supercomputing '91).

[14]  Dave Ahmad The Rising Threat of Vulnerabilities Due to Integer Errors , 2003, IEEE Secur. Priv..

[15]  Hal Finkel,et al.  Compiler Optimizations for OpenMP , 2018, IWOMP.

[16]  Ken Kennedy,et al.  Conversion of control dependence to data dependence , 1983, POPL '83.

[17]  Péricles Rafael Oliveira Alves,et al.  Runtime pointer disambiguation , 2015, OOPSLA.

[18]  John Regehr,et al.  Souper: A Synthesizing Superoptimizer , 2017, ArXiv.

[19]  Michael Stepp,et al.  Generating compiler optimizations from proofs , 2010, POPL '10.

[20]  Paul Feautrier,et al.  Fuzzy array dataflow analysis , 1995, PPOPP '95.

[21]  Sebastian Hack,et al.  Optimistic loop optimization , 2017, 2017 IEEE/ACM International Symposium on Code Generation and Optimization (CGO).

[22]  Laurie J. Hendren,et al.  Context-sensitive interprocedural points-to analysis in the presence of function pointers , 1994, PLDI '94.

[23]  Shoaib Kamil,et al.  OpenTuner: An extensible framework for program autotuning , 2014, 2014 23rd International Conference on Parallel Architecture and Compilation (PACT).

[24]  Valentin Dalibard,et al.  BOAT: Building Auto-Tuners with Structured Bayesian Optimization , 2017, WWW.

[25]  Vikram S. Adve,et al.  LLVM: a compilation framework for lifelong program analysis & transformation , 2004, International Symposium on Code Generation and Optimization, 2004. CGO 2004..