我想知道计算并行化的理论上限。
假设我们有一个需要时间T
来完成 1 个核心的过程。
- 如果由于串行瓶颈(通常是从磁盘读取)而导致该过程完全不可并行,那么
T
无论我们使用多少内核,都需要几秒钟。 - 如果该过程是完全可并行化的,我们可以使用核心在
T/K
几秒钟内完成它。K
- 如果我们有
N
等价的流程要完成,其中N
>>K
,那么我们应该并行运行多个流程,而不是并行化任何给定的流程。在任何一种情况下,完全可并行化的流程都需要NT/K
时间,但包含串行瓶颈的作业可能需要很NT
长时间。
从理论上讲,是否有任何“超级可并行化”的计算工作负载,每个都需要不到 T/K
几秒钟的时间来完成K
内核?换句话说,当更多内核可用时,实际需要的总总时间更少的工作负载。在这种情况下,实际上最好将最后一种情况下的每个作业与N
进程并行化。