并行算法运行时测量的统计分析 问题介绍测量运行时间:基本思想测量运行时间:统计分析问题

问题描述

问题介绍

假设我们有一个f(<params>) 核上运行的并行算法 P

  • <params>:算法参数
  • P:运行的内核数(即线程、内核、处理器)

我们进一步假设 out 实现实际上由三部分组成:

  • A - 分配:我们将输入分配给所有处理器
  • B - 运行算法:我们运行 f(<params>)(“在每个处理器上”)
  • C - 收集:我们收集所有处理器的计算数据

在修正 <params>P(例如输入大小、处理器数量等)后,算法本身是确定性的,即我们可以为它写下一个精确的 cDAG。

我现在试图回答这个问题:“对于给定的参数集,给定系统的执行时间是多少?”

对于“给定系统”,我的意思是例如“我的电脑”或“大学超级计算机”,因为显然,运行时确实取决于它运行的系统,而且显然系统本身确实引入了不确定性,因为您永远不会真正了解系统的状态。

简而言之:虽然算法可能是确定性的,但运行时测量不是。 (但例如通信测量将是确定性的。)因此我们需要进行适当的统计分析。这就是我不确定的地方。

测量运行时间:基本思想

我们对“B - 运行算法”部分需要多长时间感兴趣。由于该算法实际上在 P 核上运行,我们将对每个核进行测量,从而获得 P 值,我们将这些 P 值称为 P_measurements。一些内核可能会先于其他内核完成,那么哪个值确实代表了整个算法的运行时间?我认为一个不错的选择是简单地获取花费时间最长的核心的价值,即 max(P_measurements)

现在有两件事需要考虑:

  1. 我们必须重复测量 n 次,因为它是一个不确定的值
  2. 获得这些 n*P 值后,我们需要知道如何正确总结它们。

(另外一个问题是最终如何传达这些结果,但这不是这个问题的一部分。)

测量运行时间:统计分析

所以这就是我要做的,这也是我非常不确定的部分。

  1. 我们在每个 f(<params>) 内核上测量 P 的运行时间。我们得到 P_measurements
  2. 我们接受max(P_measurements)
  3. 我们重复 1. & 2. n 次,最终得到 maxes。而 maxesn 值的列表 max(P_measurements)
  4. 我们使用 Q-Q-Plot 检查 maxes 是否正态分布。如果没有,我们将其标准化。我们确实希望它是右偏的。
  5. 现在我们取 maxes 的中位数。 (如果我们归一化,我们使用归一化的值)
  6. 我们计算标准差、总体均值和 95% 置信区间。
  7. 我们可能想说所有值都是错误的,例如5% 所以我们检查所有值是否都在总体平均值的 +-5% 之间,即置信区间应该相当“薄”。
  8. 我们得到了一些不错的运行时测量。

说明: 第 4 步是必要的,因为在第 6 步中计算 CI 使用了 t 分布,并且因为稍后我想测量相同算法的不同实现。所以我必须比较两个值,为此我需要做例如t 检验。因此,我需要确保满足 t 检验的先决条件,即:iid 和正态分布。假设 Iid。

问题

我不确定我所做的在统计上是否合理。特别是第 1-3 步。我不确定我是否可以在这里做那种总结(只取最大值)。我知道我们可能有一个“特别”高的局外人价值,但由于我们只在超级计算机上进行测量,我们可以假设噪声很低,而且由于我们最终采用了中位数,因此任何大纲都不应该有太大影响。

我希望得到好的意见,因为这是一个相当复杂的话题,我很想把它做对。我主要遵循以下论文,我可以推荐:http://spcl.inf.ethz.ch/Teaching/2020-dphpc/hoefler-scientific-benchmarking.pdf

但即使有论文,我也不习惯使用统计分析,因此只想从真正了解这些东西的人那里得到一些意见。 :)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)