定点与浮点和性能

Posted

技术标签:

【中文标题】定点与浮点和性能【英文标题】:Fixed-Point vs Floating-Point and Performance 【发布时间】:2016-07-28 16:39:12 【问题描述】:

我有一个 ios 音频应用程序,它现在正在使用浮点进行处理。在较新的 iOS 设备上,它可以完美运行。但是,在较旧的设备上,它会停止/无法处理(不会发出声音)。

我是否应该将我的算法转换为使用定点系统来解决这个问题以提高性能。或者我应该只改进我用来处理它们的算法(据我所知,我使用的一些算法大多是优化的)。是否值得尝试在 iOS 中做定点工作?

谢谢!

编辑

我开始认为这是处理器速度问题,现在我认为我必须优化/改进我的算法。我应该采用这种方法吗?

【问题讨论】:

这个问题似乎太宽泛了。你具体做什么音频处理?您是如何确定该应用程序由于浮点性能而不是其他原因而无法在旧设备上运行的?您使用的是最快的浮点仿真吗? @njuffa 我正在合成波形,做数字音频效果等。当我尝试合成音频时,它会在我合成一个波形时起作用。但是,当我尝试合成 2 个或 3 个或 4 个波形时,它会停止播放。你什么都听不见。更像是中断时的一个小信号,我假设这只是音频流的突然中断 【参考方案1】:

在任何支持 iOS 9 的 iOS 设备上,对大多数 DSP 算法使用短浮点数进行 DSP 计算(乘法累加)与使用 32 位缩放整数一样快或更快。如果您可以保持管道馈送,NEON 向量单元每个周期可以调度 4 个。

【讨论】:

谢谢你!知道这很有用。但是,我认为这与旧设备的处理器速度有关......我在运行它时检查内存,当我开始合成两个波形(以及其他所有波形)时,它会从 20% 上升到 90% !这太疯狂了。我绝对需要重新考虑我是如何重新进行信号处理算法的。 iPhone 6s 上的单个 CPU 内核在通用 FP 数学吞吐量上比旧 iPhone 4s 快 5 倍。

以上是关于定点与浮点和性能的主要内容,如果未能解决你的问题,请参考以下文章

[0,1]上的定点表示与浮点表示

1定点数与浮点数

基于C66x+国产FPGA高速数据处理板架构

FFT 使用 C++ 定点优化 ARM 设备的性能

DSP定点与浮点计算

定点浮点以及数的机器码