[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/2254064.2254118acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
research-article

A dynamic program analysis to find floating-point accuracy problems

Published: 11 June 2012 Publication History

Abstract

Programs using floating-point arithmetic are prone to accuracy problems caused by rounding and catastrophic cancellation. These phenomena provoke bugs that are notoriously hard to track down: the program does not necessarily crash and the results are not necessarily obviously wrong, but often subtly inaccurate. Further use of these values can lead to catastrophic errors.
In this paper, we present a dynamic program analysis that supports the programmer in finding accuracy problems. Our analysis uses binary translation to perform every floating-point computation side by side in higher precision. Furthermore, we use a lightweight slicing approach to track the evolution of errors.
We evaluate our analysis by demonstrating that it catches wellknown floating-point accuracy problems and by analyzing the Spec CFP2006 floating-point benchmark. In the latter, we show how our tool tracks down a catastrophic cancellation that causes a complete loss of accuracy leading to a meaningless program result. Finally, we apply our program to a complex, real-world bioinformatics application in which our program detected a serious cancellation. Correcting the instability led not only to improved quality of the result, but also to an improvement of the program's run time.In this paper, we present a dynamic program analysis that supports the programmer in finding accuracy problems. Our analysis uses binary translation to perform every floating-point computation side by side in higher precision. Furthermore, we use a lightweight slicing approach to track the evolution of errors. We evaluate our analysis by demonstrating that it catches wellknown floating-point accuracy problems and by analyzing the SpecfiCFP2006 floating-point benchmark. In the latter, we show how our tool tracks down a catastrophic cancellation that causes a complete loss of accuracy leading to a meaningless program result. Finally, we apply our program to a complex, real-world bioinformatics application in which our program detected a serious cancellation. Correcting the instability led not only to improved quality of the result, but also to an improvement of the program's run time.

References

[1]
D. An, R. Blue, M. Lam, S. Piper, and G. Stoker. FPInst: Floating point error analysis using dyninst, 2008. http://www.freearrow.com/downloads/files/fpinst.pdf.
[2]
A. W. Brown, P. H. J. Kelly, and W. Luk. Profiling floating point value ranges for reconfigurable implementation. In Proceedings of the 1st HiPEAC Workshop on Reconfigurable Computing, pages 6--16, 2007.
[3]
S. P. E. Corporation. SPEC CPU2006 benchmarks. http://www.spec.org/cpu2006/.
[4]
T. J. Dekker. A floating-point technique for extending the available precision. Numerische Mathematik, 18:224--242, 1971. 10.1007/BF01397083.
[5]
D. Delmas, E. Goubault, S. Putot, J. Souyris, K. Tekkal, and F. Védrine. Towards an industrial use of FLUCTUAT on safety-critical avionics software. In FMICS '09, pages 53--69. Springer-Verlag, 2009.
[6]
S. Gal. An accurate elementary mathematical library for the IEEE floating point standard. ACM Trans. Math. Softw., 17:26--45, March 1991.
[7]
GNU Linear Programming Kit, ver. 4.47. http://www.gnu.org/software/glpk/.
[8]
D. Goldberg. What every computer scientist should know about floating-point arithmetic. ACM Comput. Surv., 23:5--48, 1991.
[9]
E. Goubault and S. Putot. Static analysis of finite precision computations. In VMCAI'11, pages 232--247, Berlin, Heidelberg, 2011. Springer-Verlag.
[10]
N. J. Higham. Accuracy and Stability of Numerical Algorithms. Society for Industrial and Applied Mathematics, Philadelphia, PA, USA, second edition edition, 2002.
[11]
A. Hildebrandt, A. K. Dehof, A. Rurainski, A. Bertsch, M. Schumann, N. Toussaint, A. Moll, D. Stockel, S. Nickels, S. Mueller, H.-P. Lenhof, and O. Kohlbacher. BALL - biochemical algorithms library 1.3. BMC Bioinformatics, 11(1):531, 2010.
[12]
W. Kahan. How futile are mindless assessments of roundoff in floating-point computation?, 2006. http://www.cs.berkeley.edu/wkahan/Mindless.pdf.
[13]
M. O. Lam, J. K. Hollingsworth, and G. W. Stewart. Dynamic floating-point cancellation detection. In WHIST 11, 2011.
[14]
P. Langlois. Automatic linear correction of rounding errors. BIT Numerical Mathematics, 41:515--539, 2001.
[15]
J.-M. Muller, N. Brisebarre, F. de Dinechin, C.-P. Jeannerod, V. Lefèvre, G. Melquiond, N. Revol, D. Stehlé, and S. Torres. Handbook of Floating-Point Arithmetic. Birkhäuser Boston, 2010.
[16]
N. Nethercote and J. Seward. Valgrind: a framework for heavyweight dynamic binary instrumentation. In PLDI '07, pages 89--100. ACM, 2007.
[17]
A. Neumaier and O. Shcherbina. Safe bounds in linear and mixed-integer linear programming. Mathematical Programming, 99:283--296, 2004. 10.1007/s10107-003-0433-3.
[18]
U. G. A. Office. Patriot missile defense: Software problem led to system failure at Dhahran, Saudi Arabia, GAO report IMTEC 92--26, 1992. http://www.gao.gov/products/IMTEC-92-26/.
[19]
J. Walker. Floating-point benchmarks. http://www.fourmilab.ch/fbench/, retrieved on 2011-03-03.
[20]
The Wall Street Journal November 8, 1983, p.37.
[21]
V. Weaver. SPEC CPU2006 problems of Valgrind. http://thread.gmane.org/gmane.comp.debugging.valgrind.devel/1488/, retrieved on 2011-03-03.

Cited By

View all
  • (2024)FPCC: Detecting Floating-Point Errors via Chain ConditionsProceedings of the ACM on Programming Languages10.1145/36897648:OOPSLA2(1504-1531)Online publication date: 8-Oct-2024
  • (2024)Floating-Point TVPI Abstract DomainProceedings of the ACM on Programming Languages10.1145/36563958:PLDI(442-466)Online publication date: 20-Jun-2024
  • (2024)Arfa: An Agile Regime-Based Floating-Point Optimization Approach for Rounding ErrorsProceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3650212.3680378(1516-1528)Online publication date: 11-Sep-2024
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
PLDI '12: Proceedings of the 33rd ACM SIGPLAN Conference on Programming Language Design and Implementation
June 2012
572 pages
ISBN:9781450312059
DOI:10.1145/2254064
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 47, Issue 6
    PLDI '12
    June 2012
    534 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/2345156
    Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 11 June 2012

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. dynamic program analysis
  2. floating-point accuracy
  3. program instrumentation

Qualifiers

  • Research-article

Conference

PLDI '12
Sponsor:

Acceptance Rates

PLDI '12 Paper Acceptance Rate 48 of 255 submissions, 19%;
Overall Acceptance Rate 406 of 2,067 submissions, 20%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)67
  • Downloads (Last 6 weeks)9
Reflects downloads up to 26 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2024)FPCC: Detecting Floating-Point Errors via Chain ConditionsProceedings of the ACM on Programming Languages10.1145/36897648:OOPSLA2(1504-1531)Online publication date: 8-Oct-2024
  • (2024)Floating-Point TVPI Abstract DomainProceedings of the ACM on Programming Languages10.1145/36563958:PLDI(442-466)Online publication date: 20-Jun-2024
  • (2024)Arfa: An Agile Regime-Based Floating-Point Optimization Approach for Rounding ErrorsProceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3650212.3680378(1516-1528)Online publication date: 11-Sep-2024
  • (2024)Detecting Numerical Deviations in Deep Learning Models Introduced by the TVM Compiler2024 IEEE 35th International Symposium on Software Reliability Engineering (ISSRE)10.1109/ISSRE62328.2024.00018(73-83)Online publication date: 28-Oct-2024
  • (2024)Hierarchical search algorithm for error detection in floating-point arithmetic expressionsThe Journal of Supercomputing10.1007/s11227-023-05523-680:1(1183-1205)Online publication date: 1-Jan-2024
  • (2023)Efficient Generation of Floating-Point Inputs for Compiler-Induced Variability2023 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)10.1109/SANER56733.2023.00030(224-235)Online publication date: Mar-2023
  • (2023)Eiffel: Inferring Input Ranges of Significant Floating-Point Errors via Polynomial ExtrapolationProceedings of the 38th IEEE/ACM International Conference on Automated Software Engineering10.1109/ASE56229.2023.00139(1441-1453)Online publication date: 11-Nov-2023
  • (2023)Combining rule- and SMT-based reasoning for verifying floating-point Java programs in KeYInternational Journal on Software Tools for Technology Transfer10.1007/s10009-022-00691-x25:2(185-204)Online publication date: 8-Mar-2023
  • (2023)Scaling up Roundoff Analysis of Functional Data Structure ProgramsStatic Analysis10.1007/978-3-031-44245-2_17(371-402)Online publication date: 24-Oct-2023
  • (2022)Fast shadow execution for debugging numerical errors using error free transformationsProceedings of the ACM on Programming Languages10.1145/35633536:OOPSLA2(1845-1872)Online publication date: 31-Oct-2022
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media