skip to main content
survey

Tools for Reduced Precision Computation: A Survey

Published:17 April 2020Publication History
Skip Abstract Section

Abstract

The use of reduced precision to improve performance metrics such as computation latency and power consumption is a common practice in the embedded systems field. This practice is emerging as a new trend in High Performance Computing (HPC), especially when new error-tolerant applications are considered. However, standard compiler frameworks do not support automated precision customization, and manual tuning and code transformation is the approach usually adopted in most domains. In recent years, research have been studying ways to improve the automation of this process. This article surveys this body of work, identifying the critical steps of this process, the most advanced tools available, and the open challenges in this research area. We conclude that, while several mature tools exist, there is still a gap to close, especially for tools based on static analysis rather than profiling, as well as for integration within mainstream, industry-strength compiler frameworks.

References

  1. 2018. BFLOAT16—Hardware Numerics Definitions. Technical Report. Intel Corporation. Retrieved from https://software.intel.com/sites/default/files/managed/40/8b/bf16-hardware-numerics-definition-white-paper.pdf.Google ScholarGoogle Scholar
  2. Jean-Marc Alliot, Nicolas Durand, David Gianazza, and Jean-Baptiste Gotteland. 2012. Finding and proving the optimum: Cooperative stochastic and deterministic search. In Proceedings of the 20th European Conference on Artificial Intelligence (ECAI’12). 55--60. DOI:https://doi.org/10.3233/978-1-61499-098-7-55Google ScholarGoogle Scholar
  3. Alexandra Angerd, Erik Sintorn, and Per Stenström. 2017. A framework for automated and controlled floating-point accuracy reduction in graphics applications on GPUs. ACM Trans. Archit. Code Optim. 14, 4, Article 46 (Dec. 2017), 25 pages. DOI:https://doi.org/10.1145/3151032Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Jason Ansel, Yee L. Wong, Cy Chan, Marek Olszewski, Alan Edelman, and Saman Amarasinghe. 2011. Language and compiler support for auto-tuning variable-accuracy algorithms. In Proceedings of the International Symposium on Code Generation and Optimization (CGO’11). 85--96. DOI:https://doi.org/10.1109/CGO.2011.5764677Google ScholarGoogle ScholarCross RefCross Ref
  5. David H. Bailey. 2017. A Thread-safe Arbitrary Precision Computation Package (Full Documentation). Technical Report.Google ScholarGoogle Scholar
  6. David H. Bailey, Hida Yozo, Xiaoye S. Li, and Brandon Thompson. 2002. ARPREC: An Arbitrary Precision Computation Package. Technical Report.Google ScholarGoogle ScholarCross RefCross Ref
  7. Sylvie Boldo and Cesar Munoz. 2006. A High-Level Formalization of Floating-Point Number in PVS. Technical Report. NASA Langley Research Center.Google ScholarGoogle Scholar
  8. David Brumley, Tzi-cker Chiueh, Robert Johnson, Huijia Lin, and Dawn Song. 2007. RICH: Automatically protecting against integer-based vulnerabilities. (1 2007). DOI:https://doi.org/10.1184/R1/6469253.v1Google ScholarGoogle Scholar
  9. Bryan Buck and Jeffrey K. Hollingsworth. 2000. An API for runtime code patching. Int. J. High Perf. Comput. Appl. 14, 4 (2000), 317--329. DOI:https://doi.org/10.1177/109434200001400404Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Daniele Cattaneo, Antonio Di Bello, Stefano Cherubin, Federico Terraneo, and Giovanni Agosta. 2018. Embedded operating system optimization through floating to fixed point compiler transformation. In Proceedings of the Euromicro Conference on Digital System Design (DSD’18).Google ScholarGoogle ScholarCross RefCross Ref
  11. Stefano Cherubin, Giovanni Agosta, Imane Lasri, Erven Rohou, and Olivier Sentieys. 2017. Implications of reduced-precision computations in HPC: Performance, energy and error. In Proceedings of the International Conference on Parallel Computing (ParCo’17).Google ScholarGoogle Scholar
  12. Stefano Cherubin, Daniele Cattaneo, Michele Chiari, Antonio Di Bello, and Giovanni Agosta. 2020. TAFFO: Tuning assistant for floating to fixed point optimization. IEEE Embed. Syst. Lett. 12, 1 (2020), 5--8. DOI:https://doi.org/10.1109/LES.2019.2913774Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Wei-Fan Chiang, Mark Baranowski, Ian Briggs, Alexey Solovyev, Ganesh Gopalakrishnan, and Zvonimir Rakamarić. 2017. Rigorous floating-point mixed-precision tuning. In Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages (POPL’17). 300--315. DOI:https://doi.org/10.1145/3009837.3009846Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Patrick Cousot, Radhia Cousot, Jerôme Feret, Laurent Mauborgne, Antoine Miné, David Monniaux, and Xavier Rival. 2005. The ASTRÉE analyzer. In Proceedings of the 14th European Conference on Programming Languages and Systems (ESOP’05). 21--30. DOI:https://doi.org/10.1007/978-3-540-31987-0_3Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Nasrine Damouche and Matthieu Martel. 2017. Salsa: An automatic tool to improve the numerical accuracy of programs. In Automated Formal Methods (AFM’17), Vol. 5. 63--76. DOI:https://doi.org/10.29007/j2fdGoogle ScholarGoogle Scholar
  16. Eva Darulova, Einar Horn, and Saksham Sharma. 2018. Sound mixed-precision optimization with rewriting. In Proceedings of the 9th ACM/IEEE International Conference on Cyber-Physical Systems (ICCPS’18). 208--219. DOI:https://doi.org/10.1109/ICCPS.2018.00028Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Eva Darulova and Viktor Kuncak. 2014. Sound compilation of reals. In Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL’14). 235--248. DOI:https://doi.org/10.1145/2535838.2535874Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Eva Darulova and Viktor Kuncak. 2017. Towards a compiler for reals. ACM Trans. Program. Lang. Syst. 39, 2, Article 8 (Mar. 2017), 28 pages. DOI:https://doi.org/10.1145/3014426Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Eva Darulova, Viktor Kuncak, Rupak Majumdar, and Indranil Saha. 2013. Synthesis of fixed-point programs. In Proceedings of the 11th ACM International Conference on Embedded Software (EMSOFT’13). Article 22, 10 pages. DOI:https://doi.org/10.1109/EMSOFT.2013.6658600Google ScholarGoogle ScholarCross RefCross Ref
  20. Marc Daumas and Guillaume Melquiond. 2010. Certification of bounds on expressions involving rounded operators. ACM Trans. Math. Softw. 37, 1, Article 2 (Jan. 2010), 20 pages. DOI:https://doi.org/10.1145/1644001.1644003Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Florent de Dinechin and Bogdan Pasca. 2011. Designing custom arithmetic data paths with FloPoCo. IEEE Des. Test Comput. 28, 4 (Jul. 2011), 18--27. DOI:https://doi.org/10.1109/MDT.2011.44Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Leonardo De Moura and Nikolaj Bjørner. 2008. Z3: An efficient SMT solver. In Proceedings of the Theory and Practice of Software and 14th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS’08/ETAPS’08). 337--340.Google ScholarGoogle ScholarCross RefCross Ref
  23. Christophe Denis, Pablo de Oliveira Castro, and Eric Petit. 2016. Verificarlo: Checking floating point accuracy through Monte Carlo arithmetic. In Proceedings of the 2016 IEEE 23nd Symposium on Computer Arithmetic (ARITH’16). 55--62. DOI:https://doi.org/10.1109/ARITH.2016.31Google ScholarGoogle ScholarCross RefCross Ref
  24. Will Dietz, Peng Li, John Regehr, and Vikram Adve. 2015. Understanding integer overflow in C/C++. ACM Trans. Softw. Eng. Methodol. 25, 1, Article 2 (dec 2015), 29 pages. DOI:https://doi.org/10.1145/2743019Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. François Févotte and Bruno Lathuilière. 2017. Studying the numerical quality of an industrial computing code: A case study on Code_aster. In Numerical Software Verification. 61--80. DOI:https://doi.org/10.1007/978-3-319-63501-9_5Google ScholarGoogle Scholar
  26. Antoine Floc’h, Tomofumi Yuki, Ali El-Moussawi, Antoine Morvan, Kevin Martin, Maxime Naullet, Mythri Alle, Ludovic L’Hours, Nicolas Simon, Steven Derrien, François Charot, Christophe Wolinski, and Olivier Sentieys. 2013. GeCoS: A framework for prototyping custom hardware design flows. In Proceedings of the International Working Conference on Source Code Analysis and Manipulation (SCAM’13). 100--105.Google ScholarGoogle ScholarCross RefCross Ref
  27. Laurent Fousse, Guillaume Hanrot, Vincent Lefèvre, Patrick Pélissier, and Paul Zimmermann. 2007. MPFR: A multiple-precision binary floating-point library with correct rounding. ACM Trans. Math. Softw. 33, 2, Article 13 (June 2007). DOI:https://doi.org/10.1145/1236463.1236468Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Altaf Abdul Gaffar, Oskar Mencer, and Wayne Luk. 2004. Unifying bit-width optimisation for fixed-point and floating-point designs. In Proceedings of the 12th Annual IEEE Symposium on Field-Programmable Custom Computing Machines. 79--88. DOI:https://doi.org/10.1109/FCCM.2004.59Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Sicun Gao, Soonho Kong, and Edmund M. Clarke. 2013. dReal: An SMT solver for nonlinear theories over the reals. In Proceedings of the Conference on Automated Deduction (CADE-24). 208--214.Google ScholarGoogle Scholar
  30. Carlo Ghezzi, Mehdi Jazayeri, and Dino Mandrioli. 2002. Fundamentals of Software Engineering (2nd ed.). Prentice Hall PTR, Upper Saddle River, NJ.Google ScholarGoogle Scholar
  31. David Goldberg. 1991. What every computer scientist should know about floating-point arithmetic. ACM Comput. Surv. 23, 1 (Mar. 1991), 5--48. DOI:https://doi.org/10.1145/103162.103163Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Frédéric Goualard. 2001. GAOL (Not Just Another Interval Library). Retrieved August 26, 2018 from http://frederic.goualard.net/#research-software.Google ScholarGoogle Scholar
  33. Eric Goubault and Sylvie Putot. 2006. Static analysis of numerical algorithms. In Static Analysis, Kwangkeun Yi (Ed.). Springer, Berlin, 18--34.Google ScholarGoogle Scholar
  34. Stef Graillat, Fabienne Jézéquel, Romain Picot, François Févotte, and Bruno Lathuilière. 2016. Auto-tuning for Floating-point Precision with Discrete Stochastic Arithmetic. Technical Report.Google ScholarGoogle Scholar
  35. Stef Graillat, Fabienne Jézéquel, Romain Picot, François Févotte, and Bruno Lathuilière. 2018. Numerical Validation in Quadruple Precision using Stochastic Arithmetic. Retrieved April 2018 from https://hal.archives-ouvertes.fr/hal-01777397.Google ScholarGoogle Scholar
  36. Hui Guo and Cindy Rubio-González. 2018. Exploiting community structure for floating-point precision tuning. In Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA’18). 333--343. DOI:https://doi.org/10.1145/3213846.3213862Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Gurobi Company. 2018. Gurobi Optimization. Retrieved August 26, 2018 from http://www.gurobi.com.Google ScholarGoogle Scholar
  38. John Harrison. 1999. A machine-checked theory of floating point arithmetic. In Theorem Proving in Higher Order Logics. 113--130. DOI:https://doi.org/10.1007/3-540-48256-3_9Google ScholarGoogle Scholar
  39. IEEE Computer Society Standards Committee. Floating-Point Working group of the Microprocessor Standards Subcommittee. 2008a. IEEE standard for floating-point arithmetic. IEEE Std 754-2008 (Aug 2008), 1--70. DOI:https://doi.org/10.1109/IEEESTD.2008.4610935Google ScholarGoogle Scholar
  40. IEEE Computer Society Standards Committee. Floating-Point Working group of the Microprocessor Standards Subcommittee. 1985b. IEEE standard for binary floating-point arithmetic. ANSI/IEEE Std 754-1985 (1985), 1--14. DOI:https://doi.org/10.1109/IEEESTD.1985.82928Google ScholarGoogle Scholar
  41. Intel Corporation. 2018. Intel 64 and IA-32 Architectures Software Developer’s Manual. Vol. 1.Google ScholarGoogle Scholar
  42. Fabienne Jézéquel and Jean-Marie Chesneaux. 2008. CADNA: A library for estimating round-off error propagation. Comput. Phys. Commun. 178, 12 (2008), 933--955. DOI:https://doi.org/10.1016/j.cpc.2008.02.003Google ScholarGoogle ScholarCross RefCross Ref
  43. H. Keding, M. Willems, M. Coors, and H. Meyr. 1998. FRIDGE: A fixed-point design and simulation environment. In Proceedings of the Conference on Design, Automation and Test in Europe (DATE’98). 429--435.Google ScholarGoogle Scholar
  44. Seehyun Kim, Ki-Il Kum, and Wonyong Sung. 1998. Fixed-point optimization utility for C and C++ based digital signal processing programs. IEEE Trans. Circ. Syst. II: Analog Dig. Sign. Process. 45, 11 (Nov. 1998), 1455--1464. DOI:https://doi.org/10.1109/82.735357Google ScholarGoogle Scholar
  45. Adam B. Kinsman and Nicola Nicolici. 2009. Finite precision bit-width allocation using SAT-Modulo theory. In Proceedings of the 2009 Design, Automation Test in Europe Conference Exhibition. 1106--1111. DOI:https://doi.org/10.1109/DATE.2009.5090829Google ScholarGoogle Scholar
  46. Pradeep V. Kotipalli, Ranvijay Singh, Paul Wood, Ignacio Laguna, and Saurabh Bagchi. 2019. AMPT-GA: Automatic mixed precision floating point tuning for GPU applications. In Proceedings of the ACM International Conference on Supercomputing (ICS’19). 160--170. DOI:https://doi.org/10.1145/3330345.3330360Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. Ki-Il Kum, Jiyang Kang, and Wonyong Sung. 2000. AUTOSCALER for C: An optimizing floating-point to integer C program converter for fixed-point digital signal processors. IEEE Trans. Circ. Syst. II: Analog Dig. Sign. Process. 47, 9 (Sep. 2000), 840--848. DOI:https://doi.org/10.1109/82.868453Google ScholarGoogle Scholar
  48. Ignacio Laguna, Paul C. Wood, Ranvijay Singh, and Saurabh Bagchi. 2019. GPUMixer: Performance-driven floating-point tuning for GPU scientific applications. In High Performance Computing. 227--246. DOI:https://doi.org/10.1007/978-3-030-20656-7_12Google ScholarGoogle Scholar
  49. Michael O. Lam and Jeffrey K. Hollingsworth. 2016. Fine-grained floating-point precision analysis. Int. J. High Perf. Comput. Appl. 32, 2 (2016), 231--245. DOI:https://doi.org/10.1177/1094342016652462Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. Michael O. Lam, Jeffrey K. Hollingsworth, Bronis R. de Supinski, and Matthew P. Legendre. 2013b. Automatically adapting programs for mixed-precision floating-point computation. In Proceedings of the 27th International Conference on Supercomputing (ICS’13). 369--378. DOI:https://doi.org/10.1145/2464996.2465018Google ScholarGoogle Scholar
  51. Michael O. Lam, Jeffrey K. Hollingsworth, and G. W. Stewart. 2013a. Dynamic floating-point cancellation detection. Parallel Comput. 39, 3 (Mar. 2013), 146--155. DOI:https://doi.org/10.1016/j.parco.2012.08.002Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. Michael O. Lam and Barry L. Rountree. 2016. Floating-point shadow value analysis. In Proceedings of the 5th Workshop on Extreme-Scale Programming Tools (ESPT’16). 18--25. DOI:https://doi.org/10.1109/ESPT.2016.10Google ScholarGoogle Scholar
  53. Michael O. Lam, Tristan Vanderbruggen, Harshitha Menon, and Markus Shordan. 2019. Tool integration for source-level mixed precision. In Proceedings of the 2019 IEEE/ACM 3rd International Workshop on Software Correctness for HPC Applications (Correctness’19).Google ScholarGoogle ScholarCross RefCross Ref
  54. Chris Lattner and Vikram Adve. 2004. LLVM: A compilation framework for lifelong program analysis 8 transformation. In Proceedings of the International Symposium on Code Generation and Optimization: Feedback-directed and Runtime Optimization (CGO’04). 75--.Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. Hong Q. Le, J. A. Van Norstrand, B. W. Thompto, J. E. Moreira, D. Q. Nguyen, D. Hrusecky, M. J. Genden, and M. Kroener. 2018. IBM POWER9 processor core. IBM J. Res. Dev. 62, 4/5 (2018), 2:1--2:12. DOI:https://doi.org/10.1147/JRD.2018.2854039Google ScholarGoogle ScholarDigital LibraryDigital Library
  56. Dong-U. Lee, Altaf Abdul Gaffar, Ray C. C. Cheung, Oskar Mencer, Wayne Luk, and George A. Constantinides. 2006. Accuracy-guaranteed bit-width optimization. IEEE Trans. Comput.-Aid. Des. Integr. Circ. Syst. 25, 10 (Oct. 2006), 1990--2000. DOI:https://doi.org/10.1109/TCAD.2006.873887Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. JunKyu Lee, Hans Vandierendonck, Mahwish Arif, Gregory D. Peterson, and Dimitrios S. Nikolopoulos. 2018. Energy-efficient iterative refinement using dynamic precision. IEEE J. Emerg. Select. Top. Circ. Syst. (Jun. 2018), 1--14. DOI:https://doi.org/10.1109/JETCAS.2018.2850665Google ScholarGoogle Scholar
  58. Alberto Leva, Martina Maggio, Alessandro V. Papadopoulos, and Federico Terraneo. 2013. Control-Based Operating System Design. Institution of Engineering and Technology.Google ScholarGoogle Scholar
  59. Cedric Lichtenau, Steven Carlough, and Silvia M. Mueller. 2016. Quad precision floating point on the IBM z13. In Proceedings of the 2016 IEEE 23nd Symposium on Computer Arithmetic (ARITH’16). 87--94. DOI:https://doi.org/10.1109/ARITH.2016.26Google ScholarGoogle ScholarCross RefCross Ref
  60. Chi-Keung Luk, Robert Cohn, Robert Muth, Harish Patil, Artur Klauser, Geoff Lowney, Steven Wallace, Vijay Janapa Reddi, and Kim Hazelwood. 2005. Pin: Building customized program analysis tools with dynamic instrumentation. In Proceedings of the 2005 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’05). 190--200. DOI:https://doi.org/10.1145/1065010.1065034Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. Victor Magron, George Constantinides, and Alastair Donaldson. 2017. Certified roundoff error bounds using semidefinite programming. ACM Trans. Math. Softw. 43, 4, Article 34 (Jan. 2017), 31 pages. DOI:https://doi.org/10.1145/3015465Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. Ramy Medhat, Michael O. Lam, Barry L. Rountree, Borzoo Bonakdarpour, and Sebastian Fischmeister. 2017. Managing the performance/error tradeoff of floating-point intensive applications. ACM Trans. Embed. Comput. Syst. 16, 5s, Article 184 (Oct. 2017), 19 pages. DOI:https://doi.org/10.1145/3126519Google ScholarGoogle ScholarDigital LibraryDigital Library
  63. Guillaume Melquiond. 2018. Retreived Octobe 16, 2018 from https://gforge.inria.fr/projects/gappa/.Google ScholarGoogle Scholar
  64. Daniel Menard, Daniel Chillet, François Charot, and Olivier Sentieys. 2002. Automatic floating-point to fixed-point conversion for DSP code generation. In Proceedings of the 2002 International Conference on Compilers, Architecture, and Synthesis for Embedded Systems (CASES’02). 270--276. DOI:https://doi.org/10.1145/581630.581674Google ScholarGoogle ScholarDigital LibraryDigital Library
  65. Harshitha Menon, Michael O. Lam, Daniel Osei-Kuffuor, Markus Schordan, Scott Lloyd, Kathryn Mohror, and Jeffrey Hittinger. 2018. ADAPT: Algorithmic differentiation applied to floating-point precision tuning. In Proceedings of the International Conference for High Performance Computing, Networking, Storage, and Analysis (SC’18). Article 48, 13 pages. DOI:https://doi.org/10.1109/SC.2018.00051Google ScholarGoogle ScholarDigital LibraryDigital Library
  66. Paul S. Miner. 1995. Defining the IEEE-854 Floating-Point Standard in PVS. Technical Report. NASA Langley Research Center.Google ScholarGoogle Scholar
  67. Asit K. Mishra, Rajkishore Barik, and Somnath Paul. 2014. iACT: A software-hardware framework for understanding the scope of approximate computing. In Proceedings of the Workshop on Approximate Computing Across the System Stack (WACAS’14).Google ScholarGoogle Scholar
  68. David Monniaux. 2008. The pitfalls of verifying floating-point computations. ACM Trans. Program. Lang. Syst. 30, 3, Article 12 (May 2008), 41 pages. DOI:https://doi.org/10.1145/1353445.1353446Google ScholarGoogle ScholarDigital LibraryDigital Library
  69. Ramon E. Moore. 1966. Interval Analysis. Vol. 4. Prentice-Hall, Englewood Cliffs, NJ.Google ScholarGoogle Scholar
  70. Mariano Moscato, Laura Titolo, Aaron Dutle, and César A. Muñoz. 2017. Automatic estimation of verified floating-point round-off errors via static analysis. In Computer Safety, Reliability, and Security. Springer International Publishing, 213--229.Google ScholarGoogle Scholar
  71. Mariano M. Moscato, Laura Titolo, Marco A. Feliú, and César A. Muñoz. 2019. Provably correct floating-point implementation of a point-in-polygon algorithm. In Formal Methods—The Next 30 Years. 21--37.Google ScholarGoogle Scholar
  72. Jean-Michel Muller, Nicolas Brunie, Florent de Dinechin, Claude-Pierre Jeannerod, Mioara Joldes, Vincent Lefèvre, Guillaume Melquiond, Nathalie Revol, and Serge Torres. 2018. Definitions and Basic Notions. 15--45. DOI:https://doi.org/10.1007/978-3-319-76526-6_2Google ScholarGoogle Scholar
  73. Ralph Nathan, Helia Naeimi, Daniel J. Sorin, and Xiaobai Sun. 2016. Profile-Driven Automated Mixed Precision. CoRR abs/1606.00251.Google ScholarGoogle Scholar
  74. Uwe Naumann. 2012. The Art of Differentiating Computer Programs: An Introduction to Algorithmic Differentiation. Society for Industrial and Applied Mathematics, Philadelphia, PA.Google ScholarGoogle ScholarDigital LibraryDigital Library
  75. Nicholas Nethercote and Julian Seward. 2007. Valgrind: A framework for heavyweight dynamic binary instrumentation. In Proceedings of the 28th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’07). 89--100. DOI:https://doi.org/10.1145/1250734.1250746Google ScholarGoogle ScholarDigital LibraryDigital Library
  76. Ricardo Nobre, Luís Reis, João Bispo, Tiago Carvalho, João M. P. Cardoso, Stefano Cherubin, and Giovanni Agosta. 2018. Aspect-driven mixed-precision tuning targeting GPUs. In Proceedings of the 9th Workshop on Parallel Programming and Run-Time Management Techniques for Many-core Architectures and the 7th Workshop on Design Tools and Architectures For Multicore Embedded Computing Platforms (PARMA-DITAM’18). 26--31. DOI:https://doi.org/10.1145/3183767.3183776Google ScholarGoogle Scholar
  77. William G. Osborne, Ray C. C. Cheung, José G. F. Coutinho, Wayne Luk, and Oskar Mencer. 2007. Automatic accuracy-guaranteed bit-width optimization for fixed and floating-point systems. In Proceedings of the 2007 International Conference on Field Programmable Logic and Applications. 617--620. DOI:https://doi.org/10.1109/FPL.2007.4380730Google ScholarGoogle ScholarCross RefCross Ref
  78. Sam Owre, John M. Rushby, and Natarajan Shankar. 1992. PVS: A prototype verification system. In Proceedings of the International Conference on Automated Deduction (CADE-11). 748--752.Google ScholarGoogle ScholarCross RefCross Ref
  79. Pavel Panchekha, Alex Sanchez-Stern, James R. Wilcox, and Zachary Tatlock. 2015a. Automatically improving accuracy for floating point expressions. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’15). 1--11. DOI:https://doi.org/10.1145/2737924.2737959Google ScholarGoogle ScholarDigital LibraryDigital Library
  80. Pavel Panchekha, Alex Sanchez-Stern, James R. Wilcox, and Zachary Tatlock. 2015b. Automatically improving accuracy for floating point expressions. SIGPLAN Not. 50, 6 (Jun. 2015), 1--11. DOI:https://doi.org/10.1145/2813885.2737959Google ScholarGoogle ScholarDigital LibraryDigital Library
  81. Yu Pang and Katarzyna Radecka. 2008. Optimizing imprecise fixed-point arithmetic circuits specified by taylor series through arithmetic transform. In Proceedings of the 2008 45th ACM/IEEE Design Automation Conference. 397--402. DOI:https://doi.org/10.1145/1391469.1391574Google ScholarGoogle ScholarDigital LibraryDigital Library
  82. Yu Pang, Katarzyna Radecka, and Zeljko Zilic. 2011. An efficient hybrid engine to perform range analysis and allocate integer bit-widths for arithmetic circuits. In Proceedings of the 16th Asia and South Pacific Design Automation Conference (ASPDAC’11). 455--460. DOI:https://doi.org/10.1109/ASPDAC.2011.5722233Google ScholarGoogle ScholarDigital LibraryDigital Library
  83. Heejoung Park, Yuki Yamanashi, Kazuhiro Taketomi, Nobuyuki Yoshikawa, Masamitsu Tanaka, Koji Obata, Yuki Ito, Akira Fujimaki, Naofumi Takagi, Kazuyoshi Takagi, and Shuichi Nagasawa. 2009. Design and implementation and on-chip high-speed test of SFQ half-precision floating-point adders. IEEE Trans. Appl. Superconduct. 19, 3 (Jun. 2009), 634--639. DOI:https://doi.org/10.1109/TASC.2009.2019070Google ScholarGoogle Scholar
  84. Douglass Stott Parker. 1997. Monte Carlo Arithmetic: Exploiting Randomness in Floating-point Arithmetic. Technical Report. University of California (Los Angeles). Computer Science Department.Google ScholarGoogle Scholar
  85. Pedro Pinto, Tiago Carvalho, João Bispo, and João M. P. Cardoso. 2017. LARA as a language-independent aspect-oriented programming approach. In Proceedings of the Symposium on Applied Computing (SAC’17). 1623--1630. DOI:https://doi.org/10.1145/3019612.3019749Google ScholarGoogle Scholar
  86. Dan Quinlan. 2000. ROSE: Compiler support for object-oriented frameworks. Parallel Process. Lett. 10, 02n03 (2000), 215--226. DOI:https://doi.org/10.1142/S0129626400000214Google ScholarGoogle ScholarCross RefCross Ref
  87. Manuel Richey and Hossein Saiedian. 2009. A new class of floating-point data formats with applications to 16-bit digital-signal processing systems. IEEE Commun. Mag. 47, 7 (Jul. 2009), 94--101. DOI:https://doi.org/10.1109/MCOM.2009.5183478Google ScholarGoogle ScholarDigital LibraryDigital Library
  88. Victor Hugo Rodrigues, Raphael Ernani andSperle Campos and Fernando Magno Quintão Pereira. 2013. A fast and low-overhead technique to secure programs against integer overflows. In Proceedings of the 2013 IEEE/ACM International Symposium on Code Generation and Optimization (CGO’13). 1--11. DOI:https://doi.org/10.1109/CGO.2013.6494996Google ScholarGoogle ScholarDigital LibraryDigital Library
  89. Krzysztof Rojek. 2018. Machine learning method for energy reduction by utilizing dynamic mixed precision on GPU-based supercomputers. Concurr. Comput.: Pract. Exper. 31, 6 (Apr. 2018), e4644. DOI:https://doi.org/10.1002/cpe.4644Google ScholarGoogle Scholar
  90. Pooja Roy, Rajarshi Ray, Chundong Wang, and Weng Fai Wong. 2014. ASAC: Automatic sensitivity analysis for approximate computing. In Proceedings of the 2014 SIGPLAN/SIGBED Conference on Languages, Compilers and Tools for Embedded Systems (LCTES’14). 95--104. DOI:https://doi.org/10.1145/2597809.2597812Google ScholarGoogle ScholarDigital LibraryDigital Library
  91. Cindy Rubio-González, Cuong Nguyen, Benjamin Mehne, Koushik Sen, James Demmel, William Kahan, Costin Iancu, Wim Lavrijsen, David H. Bailey, and David Hough. 2016. Floating-point precision tuning using blame analysis. In Proceedings of the 38th International Conference on Software Engineering (ICSE’16). 1074--1085. DOI:https://doi.org/10.1145/2884781.2884850Google ScholarGoogle ScholarDigital LibraryDigital Library
  92. Cindy Rubio-González, Cuong Nguyen, Hong Diep Nguyen, James Demmel, William Kahan, Koushik Sen, David H. Bailey, Costin Iancu, and David Hough. 2013. Precimonious: Tuning assistant for floating-point precision. In Proceedings of the International Conference on High Performance Computing, Networking, Storage and Analysis (SC’13). Article 27, 12 pages. DOI:https://doi.org/10.1145/2503210.2503296Google ScholarGoogle ScholarDigital LibraryDigital Library
  93. Alex Sanchez-Stern, Pavel Panchekha, Sorin Lerner, and Zachary Tatlock. 2018. Finding root causes of floating point error. In Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’18). 256--269. DOI:https://doi.org/10.1145/3192366.3192411Google ScholarGoogle ScholarDigital LibraryDigital Library
  94. Markus Schordan. 2019. Typeforge. Retrieved April 1, 2019 from https://github.com/rose-compiler/rose-develop/tree/master/projects/typeforge.Google ScholarGoogle Scholar
  95. Alexey Solovyev, Charles Jacobsen, Zvonimir Rakamarić, and Ganesh Gopalakrishnan. 2015. Rigorous estimation of floating-point round-off errors with symbolic taylor expansions. In Proceedings of the Annual Conference on Formal Methods (FM’15), Nikolaj Bjørner and Frank de Boer (Eds.). 532--550.Google ScholarGoogle ScholarCross RefCross Ref
  96. Jorge Stolfi and Luiz Henrique de Figueiredo. 2003. An introduction to affine arithmetic. Trends Appl. Comput. Math. 4, 3 (2003), 297--312. DOI:https://doi.org/10.5540/tema.2003.04.03.0297Google ScholarGoogle Scholar
  97. Giuseppe Tagliavini, Stefan Mach, Davide Rossi, Andrea Marongiu, and Luca Benini. 2018. A transprecision floating-point platform for ultra-low power computing. In Proceedings of the 2018 Design, Automation Test in Europe Conference Exhibition (DATE’18). 1051--1056. DOI:https://doi.org/10.23919/DATE.2018.8342167Google ScholarGoogle ScholarCross RefCross Ref
  98. Laura Titolo, Marco A. Feliú, Mariano Moscato, and César A. Muñoz. 2018. An abstract interpretation framework for the round-off error analysis of floating-point programs. In Verification, Model Checking, and Abstract Interpretation. Springer International Publishing, 516--537.Google ScholarGoogle Scholar
  99. Laura Titolo, César A. Muñoz, Marco A. Feliú, and Mariano M. Moscato. 2019. Eliminating unstable tests in floating-point programs. In Logic-Based Program Synthesis and Transformation. 169--183. DOI:https://doi.org/10.1007/978-3-030-13838-7_10Google ScholarGoogle Scholar
  100. Jean Vignes. 2004. Discrete stochastic arithmetic for validating results of numerical software. Numer. Algor. 37, 1 (01 Dec. 2004), 377--390. DOI:https://doi.org/10.1023/B:NUMA.0000049483.75679.ceGoogle ScholarGoogle Scholar
  101. Robert P. Wilson, Robert S. French, Christopher S. Wilson, Saman P. Amarasinghe, Jennifer M. Anderson, Steve W. K. Tjiang, Shih-Wei Liao, Chau-Wen Tseng, Mary W. Hall, Monica S. Lam, and John L. Hennessy. 1994. SUIF: An infrastructure for research on parallelizing and optimizing compilers. ACM SIGPLAN Not. 29, 12 (Dec. 1994), 31--37. DOI:https://doi.org/10.1145/193209.193217Google ScholarGoogle ScholarDigital LibraryDigital Library
  102. Serif Yesil, Ismail Akturk, and Ulya R. Karpuzcu. 2018. Toward dynamic precision scaling. IEEE Micro 38, 4 (Jul. 2018), 30--39. DOI:https://doi.org/10.1109/MM.2018.043191123Google ScholarGoogle ScholarCross RefCross Ref
  103. Andreas Zeller and Ralf Hildebrandt. 2002. Simplifying and isolating failure-inducing input. IEEE Trans. Softw. Eng. 28, 2 (Feb. 2002), 183--200. DOI:https://doi.org/10.1109/32.988498Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Tools for Reduced Precision Computation: A Survey

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in

        Full Access

        • Published in

          cover image ACM Computing Surveys
          ACM Computing Surveys  Volume 53, Issue 2
          March 2021
          848 pages
          ISSN:0360-0300
          EISSN:1557-7341
          DOI:10.1145/3388460
          Issue’s Table of Contents

          Copyright © 2020 ACM

          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 the author(s) 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].

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 17 April 2020
          • Revised: 1 January 2020
          • Accepted: 1 January 2020
          • Received: 1 November 2018
          Published in csur Volume 53, Issue 2

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • survey
          • Research
          • Refereed

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader

        HTML Format

        View this article in HTML Format .

        View HTML Format