并行计算如何工作

作者:乔纳森·斯特里克兰  | 
A man working on a big computer
计算能力归根结底在于处理器。
AP Photo/Jay LaPrete

如果一台计算机是人类,那么它的中央处理器(CPU)就是它的大脑。CPU是一种微处理器——芯片上的计算引擎。有些计算问题即使有强大的微处理器也需要数年才能解决,因此计算机科学家有时会采用一种称为并行处理并行计算方法。

广告

什么是并行计算?

并行计算是一个广义术语,它涉及将任务分解为由两个或更多处理器同时处理的较小部分。与依赖单个处理器一次执行一个任务的传统顺序计算不同,并行计算利用并行程序和多个处理单元来提高效率并减少计算时间。这种方法对于现代计算中处理复杂问题和大型数据集至关重要,它允许多个任务并发执行。

广告

并行处理意味着什么?

并行处理是一种并行计算。这个概念很简单:计算机科学家使用专门为该任务设计的特殊软件将一个复杂问题分解为多个组成部分。然后,他们将每个组成部分分配给一个专用处理器。每个处理器解决整体计算问题的一部分。软件重新组合数据,以得出原始复杂问题的最终结论。

这是一种高科技的说法,意思是如果你能分担负载,工作会更容易完成。你可以将负载分配给同一台计算机中不同处理器,或者将多台计算机联网,然后将负载分配给所有这些计算机。有几种方法可以实现相同的目标。

广告

并行处理方法

要理解并行处理,我们需要了解四种基本编程模型。计算机科学家根据两个因素定义这些模型:计算机处理的指令流数量和数据流数量。指令流是算法。算法只是一系列旨在解决特定问题的步骤。数据流是用于作为算法输入值的计算机内存中的信息。处理器将数据流中的值插入到指令流中的算法中。然后,它启动操作以获得结果。

单指令单数据(SISD)计算机有一个处理器,一次使用一个数据源处理一个算法。计算机按顺序处理每个任务,因此有时人们用“顺序”来描述SISD计算机。它们本身无法执行并行处理。

广告

多指令单数据(MISD)计算机有多个处理器。每个处理器使用不同的算法,但使用相同的共享输入数据。MISD计算机可以同时使用几种不同的操作分析同一组数据。操作数量取决于处理器数量。MISD计算机的实际例子不多,部分原因是MISD计算机可以计算的问题不常见且专业。

单指令多数据(SIMD)计算机有多个处理器,它们遵循相同的指令集,但每个处理器将不同的数据输入到这些指令中。SIMD计算机通过相同的算法处理不同的数据。这对于根据相同标准分析大量数据非常有用。许多复杂的计算问题不符合此模型。

多指令多数据(MIMD)计算机有多个处理器,每个处理器都能够独立于其他处理器接受自己的指令流。每个处理器也从单独的数据流中提取数据。MIMD计算机可以同时执行多个不同的进程。MIMD计算机比SIMD或MISD计算机更灵活,但创建使这些计算机工作的复杂算法更困难。单程序多数据(SPMD)系统是MIMD的子集。SPMD计算机的结构类似于MIMD,但它在所有处理器上运行相同的指令集。

在这四种类型中,SIMD和MIMD计算机是并行处理系统中最常见的模型。虽然SISD计算机本身无法执行并行处理,但可以将它们中的几台联网成一个集群。每台计算机的CPU都可以作为大型并行系统中的处理器。这些计算机共同作用,就像一台超级计算机。这种技术有自己的名称:网格计算。像MIMD计算机一样,网格计算系统在正确的软件下可以非常灵活。

广告

并行处理计算

单独来看,每个处理器的工作方式都与其他微处理器相同。处理器根据用汇编语言编写的指令执行操作。基于这些指令,处理器对从计算机内存中提取的数据执行数学运算。处理器还可以将数据移动到不同的内存位置。

在顺序系统中,如果数据值因处理器操作而改变,这不是问题。处理器可以将新值纳入未来的进程并继续。在并行系统中,值的变化可能会带来问题。如果多个处理器处理相同的数据,但数据值随时间变化,则冲突的值可能导致系统停顿或崩溃。为了防止这种情况,许多并行处理系统使用某种形式的处理器间消息传递。

广告

处理器依赖软件来发送和接收消息。软件允许处理器将信息传达给其他处理器。通过交换消息,处理器可以调整数据值并保持同步。这很重要,因为一旦所有处理器完成任务,CPU必须将所有单独的解决方案重新组合成原始计算问题的整体解决方案。把它想象成一个拼图——如果所有处理器保持同步,拼图的各个部分就能无缝地拼合在一起。如果处理器不同步,拼图的各个部分可能根本无法拼合。

有两个主要因素会影响系统性能:延迟和带宽。延迟是指处理器将结果传输回系统所需的时间。如果处理器运行算法所需的时间少于将结果信息传输回整个系统所需的时间,那就不好了。在这种情况下,顺序计算机系统会更合适。带宽是指处理器在特定时间内可以传输多少数据。一个好的并行处理系统将同时具有低延迟和高带宽。

有时,并行处理并不比顺序计算快。如果计算机的CPU重新组合所有单个并行处理器解决方案花费的时间过长,顺序计算机可能是更好的选择。随着计算机科学家改进并行处理技术和程序员编写有效的软件,这可能不再是一个问题。

广告

并行系统计算的未来

展望未来,并行计算在推动科技进步方面的作用是不可否认的。随着计算问题复杂性的增长,对更复杂的并行计算机架构和编程技术的需求也随之增加。配备支持并行性的硬件的现代计算机,正在为从人工智能到气候建模等各个领域的创新铺平道路。在这个时代,理解和利用并行计算的力量对于任何寻求解决我们时代最具挑战性问题的人来说都至关重要。

我们结合人工智能技术更新了本文,并确保其经过十万个为什么编辑的事实核查和编辑。

广告

来源

  • 布朗,马丁。“传统网格与高性能计算的比较。”IBM。2006年6月13日。http://mcslp.com/gridpdfs/gr-tradhp.pdf
  • 迪茨,汉克。“Linux 并行处理HOWTO。”Aggregate.org。1998年1月5日。检索日期:2008年3月29日。http://aggregate.org/LDP/19980105/pphowto.html
  • “并行处理。”SearchDataCenter。2007年3月27日。检索日期:2008年3月29日。http://searchdatacenter.techtarget.com/sDefinition/0,,sid80_gci212747,00.html
  • “编程模型。”Tommesani。检索日期:2008年3月29日。http://www.tommesani.com/ProgrammingModels.html。

广告

常见问题

什么是并行硬件?
并行硬件包括执行并行程序所需的物理组件,例如处理器以及允许它们通信的系统。这种设置使得两个或更多处理器能够同时处理任务的不同部分。
在并行计算中,分布式内存系统与共享内存系统有何不同?
在并行计算机架构中,分布式内存系统为每个处理器分配独立的内存区域,数据共享需要直接通信。相比之下,共享内存系统提供一个所有处理器都可以访问的统一内存空间,简化了数据交换,但需要高级协调以避免数据冲突并确保一致性。
什么是集群计算,它是如何工作的?
集群计算将多台计算机(或节点)连接起来,使其作为一个单一实体运行,从而增强计算能力和任务管理。这种安排通过将单个计算机无法处理的复杂并行任务分解为可以并发处理的较小部分,从而在处理大规模计算时提高可伸缩性和效率。
在当今的计算环境中,并行任务为何重要?
鉴于现代计算机的计算需求,并行任务对于管理和分析大数据分析至关重要。通过将任务分配给多个处理器或计算机,并行计算能够比传统单处理器系统更有效地处理大型数据集和复杂模拟,从而实现更快、更有效的数据分析和问题解决。
操作系统如何支持并行计算?
操作系统管理并行计算的资源,为并行任务分配CPU时间、内存和其他系统资源。它协调并行程序的执行,并确保多任务环境中处理器之间的有效通信,从而提高具有两个或更多处理器的系统的性能。
图形处理单元(GPU)在并行计算中扮演什么角色?
图形处理单元(GPU)对于提高并行计算性能至关重要。凭借其在许多核心上同时执行多个计算的能力,GPU的加速处理任务远超传统CPU的能力,尤其是在需要大量数据处理的领域,如大数据分析和机器学习。

广告

加载中...