假设我有一些代码的慢速版本和快速版本,并想报告比较两者的加速值。我运行慢速版本次,快速版本m次,产生时间(s 1,… ,s n)和(f 1,… ,f m)。产生加速的最简单方法是平均的手段: ˉ 小号 然而,这并未考虑离群值。
问题:报告加速数字时使用的最佳统计数据是什么?
3
标准偏差与平均值相比有多大?无论您做什么,都应该报告所做的事情,并且如果错误条很大,则可能要放置错误条。如果它们确实很大,则应调查源。除非程序本身包含随机组件,或者您正在与其他人共享计算机资源(这可能是网络或磁盘,而不仅仅是群集节点),否则大多数计算机代码应在时间上确定性地运行。如果存在争用磁盘资源的问题,则可以考虑在禁用I / O(非常常见)的情况下报告性能-请务必注意。
—
比尔·巴特
在爱迪生(Cray超级计算机)上,两个样本之间有2%的差异。在我的笔记本电脑上,我看到10个样品测得的标准偏差为6-8%。两者都仅用于计算内核,没有I / O。
—
2014年
为了弄清楚为什么在方差已经相当低的情况下为什么要提及离群值:这是一个足够基本的统计量,我想知道理想的报告方法,即使在这种情况下我也可以采用非理想的方法。
—
Geoffrey Irving
问题是,您在尝试交流什么,而公式可以最好地交流?我认为我从来没有看过一篇报道加速运行间差异的论文,除非原因是论文的核心。假设我们在运行时间和处理器/任务/线程数之间建立了线性关系,那么使用均值的比率可能很好,但是在误差范围内使用最大值/最小值和最小值/最大值的比率如果您认为显示范围很重要。另外,您可能应该查看频率缩放比例和任务固定选项,以减少可变性。:)
—
Bill Barth
消除IO可能有很多技巧。在编译器优化与“写时复制”技巧之间,可能存在真正的非显而易见的联系。我通常遵循d1 = loadData()的原型;d2 =复制(d1); r1 =算法(d2); r2 = algo(d1),并且仅考虑第二次运行的时间。
—
meawoppl 2014年