计算并行化的最大加速比

Calculating the maximum speedup with parallelization

Amdahl 定律让我们可以计算出在为我们的硬件添加越来越多的处理能力时程序的最大理论加速。这是由
T = 1 / ((1-P) + (P/N)) 表示的,其中 (1-P) 是程序的顺序部分,而 (P/N) 是可以从加速中受益的部分。 现在阿姆达尔定律遗漏的是开销因素。为了计算这一点,我们可以说
T = 1 / ((1-P) + 0(N) + (P/N)) 其中 0(N) 表示随着计算节点数量的增加而增加的同步工作量。

现在我的问题是: 如何计算程序的最大加速比并牢记 0(N)?假设我们有一个程序,顺序部分是 25%,并行部分是 75%.

让我们从一句话开始:

what Amdahl's law leaves out, is the factor of overhead.

虽然我支持当代的criticism** of the using an **overhead-naive公式,但我必须首先反对,Dr.GeneAMDAHL发表于1967年的论点直到今天仍然成立,因为他的开创性工作与流程执行领域相关,而不是 pure-[SERIAL]just-[CONCURRENT] 或 True-[= 的派生领域13=] 执行不同的代码执行技巧,伴随着 CPU/GPU/MMC/FPGA-devices 编程上下文中的调度。

考虑到这些附加成本,原始的纯 [SERIAL] 代码语法通过新的、特殊的、元#decorated 或直接语法元素的额外块进行扩展,这些元素得到解释并可能被编译成机器相关机器代码的新部分。

这些新部分通常会引入 O(1) 附加成本,而执行它们不会保持恒定的 TimeDOMAIN 和 SpaceDOMAIN 成本(通常是显性多项式 wrt SPACE,花费更多 TIME 作为此类 spawned/distributed 流程相关操作所需的移动数据的有限资源的影响(参数传输 + 结果 returned ))

如果您引入同步成本,那么到目前为止 True-[PARALLEL] 流程执行停止真正成为 [PARALLEL]-one 和 returns 来自这样的完全独立的 [PARALLEL]-process 调度到一个 pure-[SERIAL]-ordering of something semi-[PARALLEL] (if not but just-[CONCURRENT] ) 代码执行部分,从属于某种外部强制策略(无论是透明同步还是资源池限制的受控执行编排等)

Q : How can I calculate the maximum speedup of a programme with keeping 0(N) in mind?

重新阅读有关 附加开销 工作原子性 的部分,而是使用 Overhead-strict and resources-aware re-formulation原始的阿姆达尔定律。

pSO:= [PAR]-Setup-Overhead     add-on
pTO:= [PAR]-Terminate-Overhead add-on

对于小规模问题,参数传输的 pSPACE + pTIME 附加成本的总成本 -(在某种程度上取决于数据量的大小) -xfers) 加上初始 pSO + pTO 大部分时间 cTIME + cSPACE 本地主机 O/S 或(可能是异构的)新进程实例化的附加成本 配置,以满足和欢迎新进程执行它并在完成后终止它, 可以轻松超过 来自 [=25 的好处=] 并且这种情况永远不会获得一点加速,而是诉诸于支付更多的附加成本,这比以往任何时候都可以并且将会得到 Amdahl 的论证。 这绝不是 Amdahl 博士的错,是吗?

对于计算任务,即和计算-密集pSO + pTO 可以通过拆分得到合理化(很大程度上取决于 s,确定 [=62= 的其余部分]"并行部分" 是 ( 1 - s ) ) [PARALLEL] 努力可能会达到一些令人愉快的加速:

在这些大而密集的案例中,主要变量并没有太大破坏,但cTIME + cSPACE的相对微不足道的部分数据相关初始参数 + return 值传输。

对于 ( 1 - s ) = 75%,加速主要是 小于 4,即使是无限多个 CPU。

通过最好的基准测试,所有附加开销和给定一些已知的具有工作原子性的处理粒度也可能被识别,您将获得网络加速预期,这将接近结果处理,还给出了具有竞争条件的非阻塞执行的所有适当步骤和O/S限制规避技术以适当的形式和方式实施。