计算机科学基础/并行处理
计算从根本上来说是关于信息过程。在数字计算机中,这些过程是通过二进制逻辑中的符号操作来进行的。随着半导体技术的进步,我们能够通过将更多晶体管塞入计算机芯片中来使计算机运行得更快,即以更高的速度操作位。这被称为 摩尔定律,起源于 1970 年代。正如一些 物理学家 所预测的那样,这种增长趋势正在放缓,最终将因物理限制而趋于平缓,他们还预测了可能取代半导体(硅)的潜在新技术在计算机硬件制造中的应用。
与此同时,硬件公司一直在调整其技术以保持硬件容量的增长。多核技术用许多较慢的 CPU(中央处理单元——计算机的大脑)替换一个快速的 CPU,以避免芯片过热。即使每个核心都比较慢,但我们拥有更多核心,并且如果我们能够正确安排工作,就能完成更多任务。例如,一个强壮的工人每分钟可以搬运 100 块砖,而一个普通的工人只能搬运 34 块砖。三个普通的工人可以胜过一个强壮的工人,即使他们单独的速度要慢得多。这就是并行处理的理念。
传统上,计算机程序被编写为描述顺序过程,这意味着步骤只能按顺序逐个执行。这种类型的程序在一台具有单个处理器的计算机上运行良好,因为计算机一次只能执行一个符号操作。事实上,我们一直在享受摩尔定律带来的好处:每隔两年,计算机硬件的速度就会翻倍,使我们的程序运行速度快两倍,而我们无需做任何事情。这种趋势已经停止了。每个单独的处理器(核心)的速度并没有提高,但我们在一台计算机中拥有更多核心。因此,即使硬件容量已经变大,我们现有的顺序程序也会运行得更慢。在下一代计算机问世之前,我们可以使用 并行计算/处理 来更快地解决计算问题。
并行处理的理念并不新鲜。例如,汽车装配线允许多辆汽车同时生产。即使汽车的不同部件在同一时间被组装,这条装配线也能让所有工人都忙于工作,从而提高整个系统的吞吐量(每单位时间生产的汽车数量)。我们可以让工人们工作更快以进一步提高吞吐量,或者我们可以增加另一条装配线并雇佣更多工人。这是一种并行处理的形式——流水线。另一种形式的并行处理将整个计算任务分解成可以同时计算的多个部分,并在不同的 CPU(计算机)上物理执行这些部分。这类似于和朋友一起拼拼图。你可以想象,有一些额外的帮助肯定会帮助你更快地完成拼图,但这是否意味着越多越好?答案是否定的。随着帮助者数量的增加,协调和通信量的增加速度更快。当你拥有太多人时,他们可能会开始互相踩踏,并为资源(空间和拼图块)互相竞争。这被称为并行处理的开销,会导致投资回报递减。当我们测量性能改进与参与人员数量的关系时,可以清楚地看到这种模式。
在并行处理/计算的背景下,我们使用一个称为 加速比 的指标来衡量性能改进。实现的加速比等于没有并行处理的程序的解决方案/执行时间除以使用并行处理的同一任务的执行时间。
其中
- 是加速比。
- 是没有并行处理的旧执行时间。
- 是使用并行处理的新的执行时间。
如果并行处理使程序运行速度快两倍,则加速比为二(也称为两倍加速)。从理论上讲,当我们将工人或资源数量加倍时,我们可以预期加速比也加倍。实际上,很难实现这种最佳加速比,因为有些任务并不总是可并行的。例如,你通常不能在房屋地板建造好之前铺地毯,也不能总是增加更多的油漆工来加快油漆工作。计算任务通常具有类似的依赖关系和资源约束,使我们无法充分利用我们拥有的并行处理系统(例如,多核计算机)。
练习
使用洗衣机和烘干机,你一次只能处理一批衣物。你首先洗涤,然后将衣物放入烘干机。假设整个任务需要一个小时。当你只有一批衣物要处理时,这非常完美,而且你无法更快地完成。如果你要处理很多批衣物怎么办?你至少可以每小时完成一批衣物。你能“加速”它吗?如果衣物批次的数量可以任意增加,那么你能达到的每批衣物最短平均时间是多少?