我可以简单地取挂钟时间的倒数吗?
不,
真正的加速数据需要比较苹果和苹果:
这意味着,原始,纯-[SERIAL]流程调度应该与任何其他可能修改部分的场景进行比较,以便使用某种并行性(并行部分可能会重新组织,以便在 N CPU/计算资源上运行,而串行部分保持原样)。
这显然意味着原始的[SERIAL]-code 被扩展(都在代码中(#pragma-decorators、OpenCL-modifications、CUDA-{ host_to_dev | dev_to_host }-tooling 等),并且及时(执行这些添加的功能,在原始[SERIAL]-code 中不存在,以进行基准测试),以便添加一些新的部分,其中(可能的[PARALLEL])处理的其他部分将采取地点。
这是有代价的——附加开销成本(设置和终止以及从那里的[SERIAL]-part 到[PARALLEL]-part 和返回的数据通信)——所有这些都增加了额外的@987654339 @-part 工作负载(和执行时间 + 延迟)。
更多详情,欢迎read section Criticism in article on re-formulated Amdahl's Law.
[PARALLEL]-portion 看起来很有趣,但 Speedup 主要上限在原版中的 [SERIAL]-portion 持续时间( s = 1 - p ),
但是需要添加附加持续时间和增加的延迟成本,随着工作的“组织”从原始的纯-[SERIAL] 到希望-有[PARALLEL]-code 执行进程调度,如果要实现现实评估
在单个处理器上运行测试并将其设置为串行时间,...,
@VictorSong 提出的建议听起来很简单,但对一个不连贯的系统(不是纯粹的[SERIAL] 原始系统)进行基准测试,并记录一个倾斜的标准以进行比较。
这就是为什么应该设计公平方法的原因。纯-[SERIAL] original 代码执行可以加时间戳,以显示未更改部分的真实持续时间,但附加开销时间必须纳入附加-关于现在并行化测试的串行部分的扩展。
重新阐述的阿姆达尔收益递减定律explains 加上附加开销和处理原子性的影响,鉴于添加了更多计算资源,这将不允许进一步假设加速增长,但处理的并行部分不允许进一步拆分任务工作负载,因为其内部处理原子性的某种形式,尽管有可用的空闲处理器,但无法进一步划分。
这两个重新表述的简化后的表达式如下所示:
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
一些用于进一步可视化附加开销成本的交互式 GUI 工具是 available for interactive parametric simulations here - just move the p-slider 接近 ( 1 - s ) 的实际值 ~ 具有非常 [SERIAL] 部分的非零部分原代码: