添加额外内核或CPU的位置在哪些方面根本无法改善性能?

Cui*_*崔鹏飞 5 parallel-processing concurrency multithreading multicore

*添加第二个核心或CPU可能会提高并行程序的性能,但不太可能加倍.同样,四核机器不会快速执行并行程序四次 - 部分原因是前面部分中描述的开销和协调.但是,计算机硬件的设计也限制了它的扩展能力.您可以期望性能有显着提高,但每增加一个核心不会100%,并且几乎可以肯定添加额外的内核或CPU根本不会提高性能.

*

我从一本书中读到了上面的段落.但我没有得到最后一句话.那么,添加额外内核或CPU的位置在哪里根本没有改善性能?

Hig*_*ark 5

如果你采用串行程序和同一程序的并行版本,则并行程序必须执行串行程序不执行的某些操作,特别是与协调多个处理器的操作有关的操作.这些通常被称为"并行开销" - 并行程序必须完成的额外工作.这是使得难以在2个处理器上获得2倍速,4倍速在4个或32000倍在32000个处理器上的因素之一.

如果检查并行程序的代码,通常会发现串行的段,即只使用一个处理器而其他处于空闲状态的段.有一些(片段)算法是不可并行的,有些操作通常不是并行化的,但可能是:I/O操作,例如,为了并行化这些需要某种并行I/O系统.这个"序列分数"为您的计算提供了不可缩减的最短时间. 阿姆达尔定律解释了这一点,该文章为您的进一步阅读提供了一个有用的起点.

即使你确实有一个很好地并行化的程序,缩放(即加速器随着处理器数量的增加而变化的方式)也不等于1.对于大多数并行程序来说,并行开销的大小(或处理器时间的数量)这是专门用于并行计算所必需的操作的,它随着处理器数量的某些功能而增加.这通常意味着添加处理器会增加并行开销,并且在程序和作业的扩展中的某些时候,开销的增加会抵消(甚至反转)处理器功率的增加.关于阿姆达尔定律的文章也涵盖了与此相关的古斯塔夫森定律.

我已经用非常笼统的术语表达了这一切,没有考虑当前的处理器和计算机架构; 我所描述的是并行计算的特征(如目前所理解的),不是任何特定程序或计算机的特征.

我不同意@Daniel Pittman断言这些问题只是理论上的问题.我们中的一些人正在努力使我们的程序扩展到非常大量的处理器(1000s).目前,几乎所有桌面和办公室开发以及大多数移动开发都针对多处理器系统,并且使用所有这些内核是一个主要问题.

最后,为了回答你的问题,添加处理器在什么时候不再提高执行速度,现在这是一个与架构和程序相关的问题.令人高兴的是,它是一个适合实证调查的人.确定并行程序的可扩展性,并确定改进它的方法,是软件工程"专业"中不断增长的利基.