比较信号处理算法所需的计算资源的正确方法是什么?
我所说的是信号处理算法,它具有错误界限与资源与响应延迟的妥协。
在使用算法实现实现错误限制和响应延迟之后,我试图比较它的效率。
目前,我正在使用相同的信号对不同的算法进行基准测试,并使用perf
来获取amd64上使用的 task-clocks / mseg ,但这不是架构无关的。< / p>
行业使用MFLOPS / Hz来比较处理器,但如何为特定实现包含内存(以及可能的线程)开销?
能够说出正确的学术衡量标准是什么:
算法X比Y更好N倍,以达到具有Q界限的P。
编辑:对于上下文,我正在处理的信号处理算法是迭代的,其步进函数可以由O(1)约束。所以BigO在这里似乎毫无用处。
答案 0 :(得分:1)
这有多个正确的答案。你应该考虑至少这两个:
原则上,平台应该只是一个不变因素。但在实践中,不变因素可能是相关的。
答案 1 :(得分:1)
准确的性能指标不是架构或实现不可知的。不同的DSP计算平台不仅具有不同的绝对性能数(MHz / GHz),而且MAC或翻转延迟与调度比和内存延迟与带宽比的不同比率,以及许多其他性能危险(缓存替换与流策略)等等)和效率(SMP或矢量调度等)
在古代(VAX,FP系统,56000或更早),原始乘法或MAC计数占主导地位超过所有其他性能限制,因此成为事实上的成本指标。这已不再是现代流水线短矢量FPU多处理器的主导因素,现在甚至在玩具中都很常见。
一种可能性是猜测您的算法最有可能定位的平台,并对其进行测量(更可能类似于基于ARM的移动电话或Raspberry Pi系统而不是AMD桌面恕我直言,甚至可能是OpenCL GPU )。
另一种可能性是在学术CPU模拟器(RISC V?)上运行,您可以在其中打开详细的性能计数器(每种类型的操作,内存流量,寄存器重用危险等)。这将更加准确比任何操作系统任务切换,TLB / MMU未命中以及缓存初始化和流量变化的AMD桌面都可能导致任何性能测量中出现各种未知变化。