Abstract
Inspecting floating-point errors is essential to floating-point operations. In this paper, we present floating-point error detector (FPED), an inspector of floating-point errors for arithmetic expressions. FPED can pick a suitable benchmark generation approach by analyzing the distribution of the expression of a floating-point operation, thereby minimizing the possibilities of underreporting floating-point errors. FPED is also able to determine the significant sources of errors in a floating-point operation according to the frequencies of computation building blocks that contribute most to the floating-point errors, benefiting the follow-up optimizations of computation accuracies. We validate the correctness and functionalities of FPED by conducting experiments on the FPBench benchmark suite. The experimental results demonstrate that FPED can obtain more accurate detection results than the random detecting approach with respect to floating-point error detection. We also compare FPED with the existing dynamic error detection tools. The experimental results show that in most of the 33 test benchmarks, the maximum error results of FPED are greater than Herbgrind and the detection performance is higher than Herbgrind.
We’re sorry, something doesn't seem to be working properly.
Please try refreshing the page. If that doesn't work, please contact support so we can address the problem.
References
Darulova E, Izycheva A, Nasir F, Ritter F, Becker H, Bastian R (2018) Daisy—framework for analysis and optimization of numerical programs (tool paper). In: Beyer D, Huisman M (eds) Tools and Algorithms for the Construction and Analysis of Systems. TACAS 2018. Lecture Notes in Computer Science, vol 10805. Springer, Cham. https://doi.org/10.1007/978-3-319-89960-2_15
Goubault E (2013) Static analysis by abstract interpretation of numerical programs and systems, and FLUCTUAT. In: Logozzo F, Fähndrich M (eds) Static Analysis. SAS 2013. Lecture Notes in Computer Science. https://doi.org/10.1007/978-3-642-38856-9_1
de Dinechin F, Lauter C, Melquiond G (2011) Certifying the floating-point implementation of an elementary function using Gappa. IEEE Trans Comput 60(2):242–253. https://doi.org/10.1109/TC.2010.128
Darulova E, Kuncak V (2017) Towards a compiler for reals. ACM Trans Program Lang Syst 39(2):1–28. https://doi.org/10.1145/3014426
Solovyev A, Jacobsen C, Rakamarić Z, Gopalakrishnan G (2015) Rigorous Estimation of Floating-Point Round-off Errors with Symbolic Taylor Expansions. In: Bjørner N, de Boer F (eds) FM 2015: Formal Methods. FM 2015. Lecture Notes in Computer Science, vol 9109. Springer, Cham. https://doi.org/10.1145/3230733
Cherubin S, Agosta G (2020) Tools for reduced precision computation: a survey. ACM Comput Surv 53(2):35. https://doi.org/10.1145/3381039 (Article 33)
Alex S, Pavel P, Sorin L, Zachary T (2018) Finding root causes of floating point error. In: Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2018). Association for Computing Machinery, New York, NY, USA, vol 53. pp 256–269. https://doi.org/10.1145/3296979.3192411
Florian B, Andreas H, Sebastian H (2012) A dynamic program analysis to find floating-point accuracy problems. In: Proceedings of the 33rd ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’12). Association for Computing Machinery, New York, NY, USA, vol 47. pp 453–462 https://doi.org/10.1145/2254064.2254118
Eric S, Rahul S, Alex A (2014) Stochastic optimization of floating-point programs with tunable precision. In: Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’14). Association for Computing Machinery, New York, NY, USA, vol 49. pp 53–64. https://doi.org/10.1145/2666356.2594302
Michael OL, Barry LR (2016) Floating-point shadow value analysis. In: Proceedings of the 5th Workshop on Extreme-Scale Programming Tools (ESPT ’16). IEEE Press, pp 18–25. https://doi.org/10.1109/ESPT.2016.007
Févotte F, Lathuilière B (2017) Studying the numerical quality of an industrial computing code: a case study on Code\_aster. In: Abate A, Boldo S (eds) Numerical Software Verification. NSV 2017. Lecture Notes in Computer Science, vol 10381. Springer, Cham, pp 61–80. https://doi.org/10.1007/978-3-319-63501-9_5
Damouche N, Martel M, Panchekha P, Qiu C, Sanchez-Stern A, Tatlock Z (2017) Toward a standard benchmark format and suite for floating-point analysis. Lect Notes Comput Sci 10152:63–77. https://doi.org/10.1007/978-3-319-54292-8_6
Laurent F, Guillaume H, Vincent L, Patrick P, Paul Z (2007) MPFR: A multiple-precision binary floating-point library with correct rounding. ACM Trans Math Softw 33:13. https://doi.org/10.1145/1236463.1236468
Nicholas N, Julian S (2007) Valgrind: A framework for heavyweight dynamic binary instrumentation. Sigplan Not SIGPLAN 42:89–100. https://doi.org/10.1145/1273442.1250746
Acknowledgements
This work was supported by the National Natural Science Foundation of China—Precision analysis and optimization of basic mathematical functions on domestic processors (No. 61802434).
Author information
Authors and Affiliations
Corresponding author
Additional information
Publisher's Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Rights and permissions
About this article
Cite this article
Xia, Y., Guo, S., Hao, J. et al. Error detection of arithmetic expressions. J Supercomput 77, 5492–5509 (2021). https://doi.org/10.1007/s11227-020-03469-7
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11227-020-03469-7