让我们从引用开始:
阿姆达尔定律遗漏了,是开销的因素。
虽然我支持当代 criticism** of the using an **overhead-naive 公式,但我必须首先反对,1967 年发表的 Gene AMDAHL 博士的论点一直持续到今天,因为他的开创性工作与进程执行领域,而不是 pure-[SERIAL]、just-[CONCURRENT] 或 True-[PARALLEL] 的派生字段执行不同的代码执行技巧,伴随上下文中的调度CPU/GPU/MMC/FPGA 设备编程。
考虑到这些附加成本,原本纯[SERIAL] 的代码语法会被新的、特殊的、meta-#decorated 或直接语法元素的附加块扩展,这些元素会被解释并可能编译成新的与机器相关的机器代码部分。
这些新部分通常会引入 O(1) 附加成本,而执行它们不会保持恒定的 TimeDOMAIN 和 SpaceDOMAIN 成本(通常主要是多项式 wrt SPACE,花费更多时间作为有限资源的影响移动此类衍生/分布式流程相关操作所需的数据(参数传输+返回结果))
如果您引入同步成本,那么到目前为止 True-[PARALLEL] 进程执行将不再是真正的 [PARALLEL]-one,并从完全独立的 [PARALLEL]-进程调度领域返回一个纯粹的[SERIAL]-排序有点半[PARALLEL](如果不是,但只是-[CONCURRENT])代码执行部分,从属于某种外部强制执行的策略(是它是透明同步或资源池限制的受控执行编排等)
Q:如何计算程序的最大加速,同时牢记0(N)?
重新阅读有关附加开销和工作原子性的部分,并使用原始阿姆达尔定律的Overhead-strict and resources-aware re-formulation。
pSO:= [PAR]-Setup-Overhead add-on
pTO:= [PAR]-Terminate-Overhead add-on
对于小规模问题,一次性成本 - pSPACE + pTIME 参数传输的附加成本(在一定程度上取决于数据传输量的大小)加上初始 @ 987654339@ 大部分时间是 cTIME + cSPACE 在 localhost O/S 内或(可能是异构的)distributed-system 配置期间新进程实例化的附加成本,以便迎接和欢迎新的执行它并在完成后终止它的过程,可以轻松超过来自 ( ( 1 - s )/N ) 的好处,这样的情况永远不会获得一点加速,而是要付出更多附加成本,比以往任何时候都可以而且将得到 Amdahl 的论点的证明。 这绝不是 Amdahl 博士的错,是吗?
对于计算任务,大型和计算-密集,pSO + pTO 可以得到证明通过拆分和(很大程度上取决于 s,确定 "平行部分" 的其余部分为 ( 1 - s ) ) [PARALLEL] 的努力可能会达到一些令人愉快的加速:
在这些大而密集的情况下,主要变量并没有受到太大影响,但cTIME + cSPACE 与数据相关的初始参数+返回值传输的相对可忽略的部分。
使用 ( 1 - s ) = 75%,即使是无限多的 CPU,加速也基本上小于 4。
在最好的基准测试中,所有附加开销和给定的一些已知处理粒度和工作原子性也可能被识别,您将获得净加速预期,这将接近最终的处理,同时给出使用竞争条件和 O/S 限制规避技术的非阻塞执行的所有应有步骤都以适当的形式和方式落实到位。