比较算法成本的正确方法

时间:2016-04-28 17:40:09

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

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

我所说的是信号处理算法,它具有错误界限与资源与响应延迟的妥协。

在使用算法实现实现错误限制和响应延迟之后,我试图比较它的效率。

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

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

能够说出正确的学术衡量标准是什么:

  

算法X比Y更好N倍,以达到具有Q界限的P。

编辑:对于上下文,我正在处理的信号处理算法是迭代的,其步进函数可以由O(1)约束。所以BigO在这里似乎毫无用处。

2 个答案:

答案 0 :(得分:1)

这有多个正确的答案。你应该考虑至少这两个:

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

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

答案 1 :(得分:1)

准确的性能指标不是架构或实现不可知的。不同的DSP计算平台不仅具有不同的绝对性能数(MHz / GHz),而且MAC或翻转延迟与调度比和内存延迟与带宽比的不同比率,以及许多其他性能危险(缓存替换与流策略)等等)和效率(SMP或矢量调度等)

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

一种可能性是猜测您的算法最有可能定位的平台,并对其进行测量(更可能类似于基于ARM的移动电话或Raspberry Pi系统而不是AMD桌面恕我直言,甚至可能是OpenCL GPU )。

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