PROMISE: floating-point precision tuning with stochastic arithmetic

PROMISE: floating-point precision tuning with stochastic arithmetic
复制标题

PROMISE:通过随机算术进行浮点精度调整

DOI:
--
复制
发表时间:
2016
期刊:
影响因子:
--
通讯作者:
B. Lathuilière
B. Lathuilière
中科院分区:
--
文献类型:
--
作者:
S. Graillat;F. Jézéquel;R. Picot;F. Févotte;B. Lathuilière

文献摘要

被引文献

相似文献

如今,在IEEE 754 Binary64 Precision(双精度)中,大多数浮点数计算都意味着相对精确度约为10-16。硬件中的最高精度是当前处理器的双重精度。 计算时间,内存转移和能量消耗[1]。 计算结果的所需精度。 不幸的是,可以以较低的精度执行。 为了克服这个困难,我们提出了一种算法和一种基于Delta调试搜索算法[2]的工具,称为Promise(Precision优化)[2],该算法提供了混合的精度配置 在最初的C或C ++程序中,具有最差的复杂性二次。 计算结果,承诺会自动修改变量的精度。 使用离散的随机算术(DSA)[3],它控制模拟程序中的圆形错误。 不关注性能限制,而是可以看作是一种工具,可以帮助开发人员降低双重精度变量的成本 并改善其代码的内存使用情况。 包括线性系统解决的算法以及解决中子传输方程的工业代码[5]。
Nowadays, most floating-point computations in numerical simulations are performed in IEEE 754 binary64 precision (double precision). This means that a relative accuracy of about 10−16 is provided for every arithmetic operation. Indeed, in practice, programmers tend to use the highest precision available in hardware which is the double precision on current processors. This approach can be costly in terms of computing time, memory transfer and energy consumption [1]. A better strategy would be to use no more precision than needed to get the desired accuracy on the computed result. The challenge of using mixed precision is to find some parts of codes (and so variables) that may be executed with lower precision. Unfortunately the amount of possible configurations is exponential in the number of variables. To overcome this difficulty, we propose an algorithm and a tool called PROMISE (PRecision OptiMISEd) based on the delta debugging search algorithm [2] that provide a mixed precision configuration with a worst-case complexity quadratic in the number of variables. From an initial C or C++ program and a required accuracy on the computed result, PROMISE automatically modifies the precision of variables. To estimate the numerical quality of results, PROMISE uses Discrete Stochastic Arithmetic (DSA) [3] which controls round-off errors in simulation programs. Unlike Precimonious [4], PROMISE does not focus on performance constraints, it can rather be seen as a tool helping developers to reduce the cost of double precision variables and improve the memory usage of their code. The PROMISE tool has been successfully tested on programs implementing several numerical algorithms including linear system solving and also on an industrial code that solves the neutron transport equations [5].