Source-to-Source Optimizations Validated using Separation Logic
Résumé
We present a demo of OptiTrust, an interactive framework for optimizing
general-purpose programs via series of programmer-guided, source-to-source
transformations. Optimization steps are described in transformation scripts,
expressed as OCaml programs. At every step, the programmer may interactively
visualize the effect of the transformation as the difference between two pieces of
human-readable code. The framework currently applies to C code. That said,
our internal AST is based on the imperative lambda-calculus, thus we expect it
to be straightforward to extend OptiTrust for optimizing OCaml code.
A central question is how to verify that nontrivial transformations preserve
the semantics of the code. To that end, we require the programmer to provide
Separation Logic annotations, and use them to compute resource usage throughout the code.
As we show, this information suffices to justify the correctness
of numerous essential source-to-source transformations, such as swapping of
instructions, swapping of loops, hoisting of instructions out of loops, etc.
Domaines
Informatique [cs]Origine | Fichiers produits par l'(les) auteur(s) |
---|