【问题标题】:Correct way to compare algorithm cost比较算法成本的正确方法
【发布时间】:2016-04-28 17:40:09
【问题描述】:

比较信号处理算法所需的计算资源的正确方法是什么?

我说的是具有错误界限、资源和响应延迟折衷的信号处理算法。

在通过算法实现实现错误界限和响应延迟后,我正在尝试比较它的效率。

目前,我正在对不同的算法进行基准测试,方法是向它们提供相同的信号并使用 perf 来获取 amd64 上使用的 task-clocks / mseg,但这与架构无关。

行业使用 MFLOPS/Hz 来比较处理器,但我如何为特定实现包含内存(可能还有线程)开销?

可以说的正确学术衡量标准是什么:

算法 X 比 Y 好 N 倍,以在 Q 范围内实现 P。


编辑:对于上下文,我正在处理的信号处理算法是迭代算法,其阶跃函数可以由 O(1) 绑定。所以BigO在这里似乎没有用。

【问题讨论】:

    标签: algorithm compare signal-processing real-time computer-science


    【解决方案1】:

    准确的性能度量与架构或实现无关。不同的 DSP 计算平台不仅具有不同的绝对性能数 (MHz/GHz),而且 MAC 或触发器延迟与调度比率和内存延迟与带宽比率的比率不同,以及许多其他性能危害(缓存替换与流策略)等)和效率(SMP 或向量调度等)

    在古代(VAX、FP 系统、56000 或更早版本)原始乘法或 MAC 计数超过了所有其他性能限制,因此成为事实上的成本指标。这不再是现代流水线短向量 FPU 多处理器的主导因素,现在甚至在玩具中也很常见。

    一种可能性是猜测您的算法最有可能针对的平台,并在此基础上进行测量(更可能类似于基于 ARM 的手机或 Raspberry Pi 系统,而不是 AMD 桌面恕我直言,甚至可能是 OpenCL GPU )。

    另一种可能性是在学术 CPU 模拟器 (RISC V?) 上运行,您可以在其中打开详细的性能计数器(调度的每种类型的操作、内存流量、寄存器重用危险等),这将更加准确与任何 AMD 桌面相比,操作系统任务切换、TLB/MMU 未命中以及缓存初始化和流量的变化都会导致任何性能测量中的各种未知变化。

    【讨论】:

    • 谢谢。这就是我所担心的。考虑使用 AMD,因为它可以更容易地重现测试。我正在研究的算法的出版物上从未展示过计算性能,我想知道它通常是如何传达的。
    【解决方案2】:

    对此有多个正确答案。您至少应该考虑以下两个:

    • 计算机科学使用 O notation - 通常用于衡量处理要求,但它只是数学运算,也可以应用于内存。
    • 正如您所做的那样,基准测试是测试实施的正确方法。但是您想要进行多变量分析(即在不同的平台、输入大小等上对其进行测试)。

    原则上,平台应该只是一个常数因素。但在实践中,常数因素可能是相关的。

    【讨论】:

    • Big O 似乎没什么用。我对我的算法如何渐近缩放不感兴趣,但它对我的特定实现的表现如何。输入大小变化将显示特定于架构的优化,而我正在寻找的是学术社区共享的基准测试参考。
    猜你喜欢
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-19
    • 2015-02-22
    • 2012-10-28
    • 2013-07-05
    • 2011-09-01
    相关资源
    最近更新 更多