License: Creative Commons Attribution 4.0 International license (CC BY 4.0)
When quoting this document, please refer to the following
DOI: 10.4230/LIPIcs.ECOOP.2022.1
URN: urn:nbn:de:0030-drops-162290
URL: http://dagstuhl.sunsite.rwth-aachen.de/volltexte/2022/16229/
Becker, Heiko ;
Rabe, Robert ;
Darulova, Eva ;
Myreen, Magnus O. ;
Tatlock, Zachary ;
Kumar, Ramana ;
Tan, Yong Kiam ;
Fox, Anthony
Verified Compilation and Optimization of Floating-Point Programs in CakeML
Abstract
Verified compilers such as CompCert and CakeML have become increasingly realistic over the last few years, but their support for floating-point arithmetic has thus far been limited. In particular, they lack the "fast-math-style" optimizations that unverified mainstream compilers perform. Supporting such optimizations in the setting of verified compilers is challenging because these optimizations, for the most part, do not preserve the IEEE-754 floating-point semantics. However, IEEE-754 floating-point numbers are finite approximations of the real numbers, and we argue that any compiler correctness result for fast-math optimizations should appeal to a real-valued semantics rather than the rigid IEEE-754 floating-point numbers.
This paper presents RealCake, an extension of CakeML that achieves end-to-end correctness results for fast-math-style optimized compilation of floating-point arithmetic. This result is achieved by giving CakeML a flexible floating-point semantics and integrating an external proof-producing accuracy analysis. RealCake’s end-to-end theorems relate the I/O behavior of the original source program under real-number semantics to the observable I/O behavior of the compiler generated and fast-math-optimized machine code.
BibTeX - Entry
@InProceedings{becker_et_al:LIPIcs.ECOOP.2022.1,
author = {Becker, Heiko and Rabe, Robert and Darulova, Eva and Myreen, Magnus O. and Tatlock, Zachary and Kumar, Ramana and Tan, Yong Kiam and Fox, Anthony},
title = {{Verified Compilation and Optimization of Floating-Point Programs in CakeML}},
booktitle = {36th European Conference on Object-Oriented Programming (ECOOP 2022)},
pages = {1:1--1:28},
series = {Leibniz International Proceedings in Informatics (LIPIcs)},
ISBN = {978-3-95977-225-9},
ISSN = {1868-8969},
year = {2022},
volume = {222},
editor = {Ali, Karim and Vitek, Jan},
publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
address = {Dagstuhl, Germany},
URL = {https://drops.dagstuhl.de/opus/volltexte/2022/16229},
URN = {urn:nbn:de:0030-drops-162290},
doi = {10.4230/LIPIcs.ECOOP.2022.1},
annote = {Keywords: compiler verification, compiler optimization, floating-point arithmetic}
}
Keywords: |
|
compiler verification, compiler optimization, floating-point arithmetic |
Collection: |
|
36th European Conference on Object-Oriented Programming (ECOOP 2022) |
Issue Date: |
|
2022 |
Date of publication: |
|
23.06.2022 |
Supplementary Material: |
|
Software (ECOOP 2022 Artifact Evaluation approved artifact): https://doi.org/10.4230/DARTS.8.2.10 |