浮点精度是否存在摩尔定律,它意味着什么?

计算科学 浮点
2021-12-17 15:50:47

摩尔定律指出,集成电路上的晶体管数量呈指数增长,大约在 20 个月内翻一番。这会影响可用内存量和计算速度,以相同的速度大致翻倍。

如果精度是固定的,这也会影响浮点计算的速度。但我想知道是否可以观察到可用精度的类似增长(用于科学计算)。

作为后续,这种增长对科学计算意味着什么?例如,如果我们考虑一个线性方程组,那么矩阵的小数位,的影响程度。条件数越大,变化越大,计算越差。在相反的方向上,精度的任何提高自然会导致解决方案的准确性提高,其速率与条件数成正比,这是一件好事。这怎么解释?Ax=bAxbx

PS:我发现工程文献同样警告读者,例如,数值方法中的高收敛速度,即与大,另一方面,如果增加,则意味着强烈的扭曲,其中表示通常情况下的步长或网格大小。这类似于我对条件数的观点(但可能同样错误)。O(ht)thh

2个回答

老实说,我不认为这里有一个非常强烈的类比:双精度自 1985 年以来一直是标准(IEEE 754-1985),并且有些库可以以任意精度计算,例如GMP,尽管在每秒可以计算的浮点运算数(触发器)。如果要尝试与摩尔定律进行类比,则必须仅限于基于硬件的浮点精度,而翻倍的时间框架至少是 25 年。

我非常赞成高效的高精度计算变得更加标准,但更高的精度只会减少错误来源之一;例如,右手边形成过程中的小扰动仍然可能是灾难性的。

就科学计算的观点而言,我不清楚浮点计算中的额外精度是否会超出某个点。通过测量对物理常数的最精确计算往往精确到 10 或 11 个有效数字,最多 14 个有效数字。通常,即使是科学工作也不需要这种精度,除非您在 NIST 或欧洲核子研究中心,或物理学的某些分支学科。可以使用双精度算法在输入中表示该精度级别;之后,计算的准确性取决于多种因素。但是,我认为牢记应用程序很重要。如果你不能衡量你的东西,那么关注精确到小数点后 10 位是没有意义的

正如@JackPoulson 指出的那样,提高精度水平所做的就是减少单位舍入,这是影响误差边界结果的一个因素,就像Nick Higham在数值算法的准确性和稳定性(第二版)中发现的那样。它不能替代数值分析中的良好实践,例如模型的适当缩放、良好的预处理器、算法的良好选择(例如对最小二乘问题使用 QR 分解而不是求解正规方程)。上面指向 Higham 的书第 17 页的链接提供了关于提高精度在准确性方面给您带来的更全面的讨论;他展示了一个例子,其中提高精度根本不会产生任何额外的精度。