【问题标题】:Fixed Point Cholesky Algorithm Advantages定点 Cholesky 算法的优势
【发布时间】:2016-11-24 08:08:49
【问题描述】:

我正在开发一些代码,可以从硬件中获取浮点或定点数据。目前我们将其作为浮点数。

底层 API 都是定点的。所以我们必须将数据作为固定点传回。我们使用的算法是 Cholesky。我想知道为什么我们必须对 Cholesky 使用浮点,而不仅仅是将数据作为定点。这样做有什么好处吗?

我原以为使用浮点会导致更多的舍入误差。

【问题讨论】:

  • 出于好奇,您为什么认为浮点数会导致更多错误?
  • @SimonByrne 我认为浮点数容易出现舍入错误。在定点我们知道舍入误差,因此可以补偿。

标签: algorithm floating-point precision fixed-point


【解决方案1】:

定点相对于浮点的主要优点是

  1. 在硬件中实现要简单得多,

  2. 某些运算是精确的(即不会产生舍入误差):即整数的加法、减法和乘法,假设结果不会溢出。

  3. 如果所有数字的大小相同,则无需存储指数即可在相同宽度内获得一些额外的精度:例如binary32 single precision 中的 32 位与 24 位。

特别是,第 3 点不太可能适用于整个计算阶段的所有数字,尤其是对于线性代数运算,例如 Cholesky 因式分解。

另一方面,浮点还有许多其他优点。

  1. 您可以存储范围更广、数量级范围更广的数字(例如,对于 binary32,~10-38 到 10+38

  2. 在处理较小的数字时不会损失准确性:这对于在整个 Cholesky 计算中使用的乘法/除法尤为重要。

  3. 下溢和溢出问题不大:它们都不太可能发生(由于 1),但在确实发生时也可以通过Inf 和次正常与异常或错误结果进行更优雅的处理.

  4. 浮点格式包含稍小的定点格式:即 binary32 包含 24 位定点格式的所有数字,但具有上述所有优点。

【讨论】:

    【解决方案2】:

    浮点优于定点的一个优点是可以表示的数字范围。我不熟悉 Cholesky 算法,但如果它必须在内部处理非常大和非常小的数字,浮点将提供更准确的结果。

    如果您使用定点算法,您需要确保输入不会导致算法内部饱和或溢出,并将其限制在特定范围内。此外,定义此范围可能很困难,尤其是当您有多个输入时。

    【讨论】:

    • 这可能是原因之一。但是当我们转换回定点时,我们不会失去那个精度吗?我们必须将答案写回给 HW。
    • 我假设您的输入/输出具有特定的定点格式。如果您也以定点实现算法,则可能是所选定点格式没有足够的整数位(溢出/饱和)或没有足够的小数位(精度损失)。我不是在这里谈论输入/输出值,而是算法内部的中间结果。在浮点中不会出现这个问题。
    猜你喜欢
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 2014-03-06
    • 2023-03-28
    • 2017-10-22
    相关资源
    最近更新 更多