并行计算,又称并行编程,是将大型计算问题分解成可由多个处理器同时解决的较小问题的过程。
这些处理器通过共享内存进行通信,其计算结果通过算法进行整合。并行计算显著快于其前身串行计算(也称为顺序计算),后者使用单个处理器按顺序解决问题。
计算机最初发明于 20 世纪 40 年代末和 50 年代,当时的软件被编程为按顺序解决问题,这限制了处理速度。为了更快地解决问题,算法必须按照一套指令在 中央处理单元 (CPU) 上构建和执行。只有在运行了一条指令之后,才能解决另一条指令。
从 1950 年代开始,并行计算通过将计算问题分解为更小的类似问题,使计算机能够更快、更高效地运行代码。这些问题被称为并行算法,然后分配到多个处理器上执行。
如今,并行系统已经发展到可以在各种计算机中使用的程度,使得像检查电子邮件或发送短信这样的日常任务比使用串行计算快数百倍。除了为笔记本电脑和智能手机等个人设备提供动力外,并行系统还为最先进的超级计算机以及人工智能 (AI) 和物联网 (IoT) 等尖端技术提供动力。
串行计算,也称为顺序计算,是一种计算方式,其中解决计算问题的指令按顺序一次执行。串行计算的基本原理要求系统仅使用一个处理器,而不是将问题分配到多个处理器上。
随着计算机科学的发展,由于串行计算速度缓慢,并行计算应运而生。使用并行编程的操作系统允许计算机同时运行进程和执行计算,这种技术被称为并行处理。
并行处理和并行计算是非常相似的术语,但有一些差异值得注意。并行处理,或称并行性,是指将运行时任务分成较小的部分,使用一个以上的处理器同时独立执行。通常,当多个处理器上解完方程后,需要计算机网络或具备多个处理器的计算机将数据重新组装。
虽然并行处理和并行计算有时可以互换使用,但并行处理指的是计算机运行的核心和 CPU 的数量,而并行计算指的是软件为了促进该过程所做的工作。
并行计算的速度和效率推动了过去半个世纪一些最重要的技术突破,包括智能手机、高性能计算 (HPC)、人工智能 (AI) 和机器学习 (ML)。并行计算使计算机能够以更少的资源更快地解决更复杂的问题,因此也是许多企业数字化转型的重要驱动因素。
随着计算机程序员和制造商开始寻找构建更高能效处理器的方法,人们对并行计算的兴趣也随之增加。在 20 世纪 50 年代、60 年代和 70 年代,科学与工程领域的领导者首次构建了使用共享内存空间并在数据集上运行并行运算的计算机。
这些努力最终在开创性的加州理工学院并行计算项目中达到顶峰,该项目在 1980 年代引入了一种新型并行计算,使用了 64 个英特尔处理器。
在 1990 年代,ASCI Red 超级计算机使用大规模并行处理器实现了前所未有的每秒一万亿次运算,开启了计算能力领域由 MPP 主导的时代。1与此同时,簇,一种将计算机集群或“节点”通过商用网络连接起来的并行计算形式,被推向市场,并最终在许多应用中取代了 MPP。
并行计算,特别是多核处理器和图形处理单元 (GPU),至今仍然是计算机科学的重要组成部分。GPU 通常与 CPU 并行部署,以扩大数据吞吐量并同时运行更多计算,从而加快许多现代商业应用程序的速度。
在并行计算出现之前,串行计算迫使单个处理器一次解决一个复杂问题,这使得原本并行计算可能在几秒内完成的任务,需要耗费数分钟甚至数小时。例如,第一代 iPhone 使用串行计算,打开一个应用程序或电子邮件可能需要一分钟。如今,并行计算(最早于 2011 年应用于 iPhone)显著加快了这些任务的执行速度。
随着计算技术的成熟并应对更复杂的问题,系统需要在瞬间完成成千上万,甚至数百万个任务。如今的 ML 模型严重依赖并行计算,使用在多个处理器上部署的高度复杂的算法。使用串行计算,机器学习任务会耗费更长时间,因为单个处理器一次只能执行一个计算,从而造成性能瓶颈。
并行计算和并行处理对大型数据集进行了超强的数字运算,从而实现了数据分析背后的交互式查询。每天产生超过一百万亿字节的信息,企业在从海量数字数据中筛选出有用的洞察时可能会面临巨大挑战。并行处理利用拥有多个核心的计算机对数据结构进行处理,其筛选数据的速度远超串行计算机。
有了并行计算,计算机使用资源的效率远远超过串行计算。当今最先进的边缘计算机系统部署了多个内核和处理器,使其能够同时运行多个程序并同时执行更多任务。
并行计算涵盖多种设备和计算机架构,从超级计算机到口袋里的智能手机。在最复杂的情况下,并行计算使用成千上万的内核来解决各种问题,例如寻找新的抗癌药物或协助寻找外星智能 (SETI)。最简单地说,并行计算可以让你用手机发送电子邮件的速度,比使用串行计算系统时更快。
总体而言,并行计算中使用三种独特的架构:共享内存、分布式内存和混合内存。每个架构都使用自己的消息传递接口 (MPI),这是所有并行计算架构的标准。MPI 为 C++ 和 Fortran 等编程语言中的消息传递程序制定了协议。开源 MPI 对于依赖并行计算能力的新应用程序和软件的开发至关重要。
共享内存架构被广泛应用于日常并行计算的应用程序中,例如笔记本电脑或智能手机。在共享内存架构中,并行计算机依靠多个处理器来访问同一个共享内存资源。
分布式内存用于云计算架构,因此在许多企业应用程序中很常见。在并行计算的分布式系统中,多个拥有自身内存资源的处理器通过网络相互连接。
当今的超级计算机依赖于混合内存架构,这是一种将共享内存计算机与分布式内存网络相结合的并行计算系统。混合内存环境中连接的 CPU 可以访问分配给同一网络上其他单元的共享内存和任务。
除了这三种主要架构之外,还有其他不太常见的并行计算机架构,旨在解决更大的问题或高度专业化的任务。其中包括向量处理器(用于称为“向量”的数据数组)和用于图形处理单元 (GPGCU) 上的通用计算的处理器。其中之一是 CUDA,这是由英伟达开发的专有通用 GPU (GPGCU) 应用程序编程接口 (API),它对于支撑大多数人工智能应用的深度学习 (DL) 技术至关重要。
并行计算有四种类型,每种类型都有自己的特定用途:
位级并行依赖于一种技术,即通过增加处理器字长并减少处理器为解决问题所需执行的指令数量来实现加速。直到 1986 年,计算机体系结构的发展是通过提高位级并行性来实现的,从 4 位处理器到 8 位、16 位、32 位和 64 位,每一代都比上一代性能更好。位级并行技术进步的最著名例子可能是任天堂 64,这是主流应用程序首次使用 64 位。
指令级并行性 (ILP) 是一种并行计算,处理器选择将运行的指令。在 ILP 中,处理器被设计成可以同时执行某些运算,以提高资源优化和增加吞吐量。
任务并行是一种并行计算类型,它将代码并行化,在多个处理器上同时对相同的数据执行任务。任务并行通过同时运行多个任务来减少串行执行时间;例如在流水线处理中,一系列任务会在同一组数据上依次执行。
比指令级并行 (ILP) 更高级,超字级并行 (SLP) 是一种用于内联代码的向量化策略。向量化是一种并行计算过程,用于同时完成多个类似的任务,从而节省时间和资源。SLP 用于识别代码块中冗余的标量指令,并将它们合并成一个单一的超字操作。
许多智能手机依靠并行处理来更快、更高效地完成任务。例如,iPhone 14 配备了 6 核 CPU 和 5 核 GPU,使其能够每秒执行 17 万亿个任务,这种性能水平在串行计算下是难以想象的。
区块链技术是支撑加密货币、投票机、医疗以及众多其他先进数字技术应用的核心技术,依赖并行计算,将多台计算机连接起来以验证交易和输入数据。并行计算使得区块链中的交易可以同时处理,而不是一次处理一笔,从而提高吞吐量,使其具有高度可扩展性和效率。
如今最强大的笔记本电脑(包括 MacBook、ChromeBook 和 ThinkPad)都使用多核心处理器,这是并行计算的基础。多核处理器的例子包括 Intel Core i5 和 HP Z8,它们使用户能够进行实时视频编辑、运行 3D 图形以及执行其他复杂且资源密集型的任务。
物联网 (IoT) 依赖于从传感器收集的数据,这些传感器通过互联网互联。一旦这些数据被收集,就需要并行计算来分析数据以获取洞察,并帮助复杂系统(如发电厂、大坝和交通系统)正常运行。传统的串行计算无法以足够快的速度处理 IoT 所需的数据,因此并行计算对于 IoT 的技术进步至关重要。
并行计算在面部识别和自然语言处理 (NLP) 等 AI 应用程序的 ML 模型训练中起着关键作用。通过同时执行运算,并行计算显著减少了在数据上准确训练 ML 所需的时间。
运行航天飞机的计算机依赖五台 IBM® AP-101 计算机并行工作,以控制其航空电子设备并实时监控数据。这些强大的计算机也被用于战斗机中,每秒几乎可以执行 50 万条指令。
超级计算机在很大程度上依赖于并行计算,因此通常被称为并行计算机。例如,美国的 Summit 超级计算机每秒处理 200 万亿次运算,帮助人类更好地理解物理和自然环境。2
IBM Spectrum LSF Suites 是面向分布式高性能计算 (HPC) 的工作负载管理平台和作业调度程序。
IBM 的混合云 HPC 解决方案可助力应对大规模计算密集型挑战,并加快获取洞察分析的速度。
查找适合企业的业务需求的云基础设施解决方案,并按需扩展资源。