没有序列分数加速

时间:2018-05-20 13:09:36

标签: parallel-processing mpi performance-testing parallelism-amdahl

我在并行程序包上运行了一组实验,比如superlu-dist,使用不同的处理器编号,例如: 4, 16, 32, 64

我得到了每个实验的挂钟时间,比如说: 53.17s, 32.65s, 24.30s, 16.03s

加速的公式是:

                  serial time
  Speedup = ----------------------
                parallel time

但是没有关于序列分数的信息。

我可以简单地采用挂钟时间的倒数吗?

2 个答案:

答案 0 :(得分:1)

  

我可以简单地采用挂钟时间的倒数吗?

不,真正的加速数据需要将苹果与苹果进行比较:

这意味着,原始,纯 [SERIAL] 流程调度应与任何其他方案进行比较,其中部分可能会被修改,因此使用某种并行性(并行分数可以重新组织,以便在 N CPU /计算资源上运行,而序列分数保持原样。) / p>

这显然意味着,原始[SERIAL] - 代码已扩展(均代码(#pragma - 装饰器,OpenCL修改,CUDA -{ host_to_dev | dev_to_host }) - 工具等),并及时(执行这些添加的功能,原始的[SERIAL] - 代码中没有,以进行基准测试),以便添加一些新的部分,其中(可能{{1 }})处理的其他部分将会发生。

这是成本 - 附加开销成本(设置和终止以及从[PARALLEL] - 部分到[SERIAL] - 部分和后面)的数据通信 - 所有这些都是添加额外的[PARALLEL] - 部分工作负载(以及执行时间+延迟)。

有关详细信息,请随意read section Criticism in article on re-formulated Amdahl's Law.

enter image description here

[SERIAL] - 部分似乎很有趣,但加速主体上限位于原始的[PARALLEL] - 部分持续时间 [SERIAL]

enter image description here

附加持续时间和增加的延迟成本需要添加,与原始的纯粹( s = 1 - p )的工作“组织”一起累积到希望的 - to-have [SERIAL] - 代码执行流程安排,如果要实现真实的评估

  

在单个处理器上运行测试并将其设置为串行时间,...

正如@VictorSong提出的声音很容易,但基准测试是一个不连贯的系统(不是纯粹的[PARALLEL]原始系统)和记录一个偏斜的尺度来进行比较。

这就是为什么应该设计公平方法的原因。纯 [SERIAL]原始代码执行可以加上时间戳,以便显示未更改部分的实际持续时间,但是附加开销时间必须合并到现在并行化测试的序列部分的附加扩展。

重新阐明的Amdahl减少收益的法则explains这一点,加上额外开销和处理原子性的影响,不允许进一步虚拟加速增长,因为有更多的计算资源但是,由于某种形式的内部处理原子性,处理的并行部分不允许进一步拆分任务工作负载,尽管有可用的处理器,但仍无法进一步划分。

两个重新制定的表达式的简化如下:

[SERIAL]

用于进一步可视化附加开销成本的一些交互式GUI工具available for interactive parametric simulations here - just move the p-slider朝向 1 S = __________________________; where s, ( 1 - s ), N were defined above ( 1 - s ) pSO:= [PAR]-Setup-Overhead add-on s + pSO + _________ + pTO pTO:= [PAR]-Terminate-Overhead add-on N 的实际值〜具有非零的非零分数{ {1}} - 原始代码的一部分

live-GUI for interactive simulations

答案 1 :(得分:0)

当你说“连续分数”时,你是什么意思?根据谷歌搜索显然superlu-dist是C,所以我猜你可以使用ctime或chrono并按照通常的方式花时间,它适用于我手动std :: threads和omp。

我只是在单个处理器上运行测试并将其设置为串行时间,然后使用更多处理器再次进行测试(就像你说的那样)。