1

我想知道计算并行化的理论上限。

假设我们有一个需要时间T来完成 1 个核心的过程。

  • 如果由于串行瓶颈(通常是从磁盘读取)而导致该过程完全不可并行,那么T无论我们使用多少内核,都需要几秒钟。
  • 如果该过程是完全可并行化的,我们可以使用核心在T/K几秒钟内完成它。K
  • 如果我们有N等价的流程要完成,其中N>> K,那么我们应该并行运行多个流程,而不是并行化任何给定的流程。在任何一种情况下,完全可并行化的流程都需要NT/K时间,但包含串行瓶颈的作业可能需要很NT长时间。

从理论上讲,是否有任何“超级可并行化”的计算工作负载,每个都需要不到 T/K几秒钟的时间来完成K内核?换句话说,当更多内核可用时,实际需要的总总时间更少的工作负载。在这种情况下,实际上最好将最后一种情况下的每个作业与N进程并行化。

4

1 回答 1

1

是的,这是一大类重要的问题:那些受 I/O 限制的问题。

假设您有 10,000 个进程实例,每个实例大约需要 9 秒的 I/O 和 1 秒的 CPU/处理时间。现在假设您有一千个处理器。如果您只是将 10,000 个问题实例分布在 1,000 个处理器上,则制造时间(在所有处理器上完成所有工作的总时间)将需要大约 100 秒(每个处理器上有 10 个进程,每个进程 10 秒,每个处理器 100 秒)。如果您改为并行运行所有 10,000 个进程,您会看到接近 10 秒的制造时间。

这也适用于进程内。想象一个具有 10 个阶段的进程,这些阶段都是 I/O 绑定且完全独立的。如果每个阶段需要 10 秒,那么在一个内核上运行该进程的总时间为 100 秒。如果你在 10 个内核上并行处理,那么时间将接近 10 秒。这可能是您的“超级可并行化”进程的一个很好的候选者,它不仅可以受益于将进程分配到不同的机器,还可以并行化各个进程。

因此,一种情况是您有大量作业,每个作业都执行大量不相关的 I/O 绑定操作。如果您按顺序运行所有内容,那么您将花费绝大多数时间等待 I/O,即使只考虑单个进程也是如此。

于 2020-05-01T13:47:28.153 回答