5分钟了解超算,高性能计算,并行计算,分布式计算,网格计算,集群计算以及云计算的区别
- 1. 超算
- 2. 高性能计算
- 3. 并行计算
- 4. 分布式计算
- 5. 网格计算
- 6. 集群计算
- 7. 云计算
- 小结
- 相关资料
1. 超算
超级计算机(Supercomputer)是一种计算力极强的计算机,学术界通常称这一领域为高性能计算(High-Performance Computing)。超级计算机主要为最顶尖的科学研究服务,包括核聚变模拟、石油勘探、量子力学、气候模拟、癌症研究、基因组学、分子动力学、飞机和航天器空气动力学、量化金融、计量经济和当前火热的各类民用人工智能。简而言之,超算(超级计算机)主要用于处理复杂的科学计算、模拟和大规模数据处理等任务,具备出色的计算性能和处理能力。
从实现上来看,超级计算机是一种高性能计算集群,集群有众多计算节点,通常由大量的处理器、高速互联网络和大容量存储器组成。集群由众多计算节点组成,由集群管理系统通过高速IB网或专用网络将多个计算机节点连接在一起,统一调度管理,从而实现强大的计算功能。
当前,多数高性能计算系统都是通过加持GPU来实现超高性能的,也就是常说的GPU运算,不同于CPU,GPU一般集成了上千个核心于一体,具备普通CPU无法比拟的浮点计算性能,因此非常适用于图像处理、虚拟现实和计算机仿真等一类科学领域的应用,近几年发展火热的人工智能、机器学习等技术应用背后也是依靠GPU运算在做支撑。
从实际使用上看,并不是将成千上万个CPU和GPU都拿过来跑一个任务,也不是某一个人独占,而是按需所取,使用一种叫做调度器的软件来分配计算资源。超级计算机上的CPU和GPU等计算资源更像是城市中的共享单车,服务方先提供好一批计算资源放置在那里,使用方如有需求,向调度器申请,如有闲置的资源则分配给需求方。超算中心提供一个共享的资源池,每个用户每次占用部分资源,多个用户在调度器的调度下按照一定的规则排队。当然,这个资源池越大,每个用户能够获得的资源就会越多,排队等待的时间也就越短,加上一些合理的编程优化,每个计算任务的耗时就会越短,以此加速科研进程。
补充1:CPU与GPU的特点与优势
- 首先,CPU在处理逻辑和控制流方面表现出色,而GPU在并行计算和数据密集型任务方面具备强大的计算能力。将CPU和GPU融合在一起,可以充分发挥它们的优势,提供更全面、更强大的计算能力。
- 其次,CPU和GPU的融合可以减少数据传输和通信的开销。通常情况下,GPU作为加速器与CPU之间需要频繁进行数据传输,这会导致较大的延迟和能耗。通过将CPU和GPU融合在一起,可以实现更紧密的协作和数据共享,减少数据传输的需求,提高计算效率和性能。
- 第三,融合CPU和GPU还可以简化系统架构和编程模型。当前,使用GPU进行加速计算需要使用专门的编程模型(如CUDA或OpenCL),并且需要管理CPU和GPU之间的数据传输和同步。然而,将CPU和GPU融合在一起,可以使用统一的编程模型,简化编程和系统管理的复杂性。
- 最后,融合CPU和GPU还可以降低系统成本和功耗。独立的CPU和GPU需要占用额外的硬件资源和能源消耗。而将它们融合在一起,可以节省硬件成本、减少系统功耗,提高能源效率。
补充2:超算vs云计算
超算与云计算有些相似,但不同的地方在于:
- 云计算一般将一台物理机上安装多台虚拟机,用户在一个虚拟机资源池上申请资源;
- 超算上的程序一般直接跑在物理机上。
虚拟机会导致性能的损耗,其优点在于将资源划分的粒度更细,虚拟机资源能够的到充分利用。物理机的优势在于硬件性能可以100%提供给使用者,缺点是如果使用不当,会造成硬件资源的浪费。
近年来,随着虚拟化技术的成熟,虚拟机的损耗越来越小,超算也在往虚拟化方向发展,超算和云计算之间界线似乎不那么明显。
2. 高性能计算
高性能计算(High Performance Computing,HPC)是指利用超级计算机或高性能计算机来解决需要大量计算资源和高速数据处理的问题。高性能计算侧重于提供强大的计算能力和高效的数据处理能力,通常运行复杂的科学模型、大规模的数值模拟和数据分析等任务。
- 高性能计算(High Performance Computing,HPC)是一种计算领域的技术和方法,旨在利用超级计算机或高性能计算机解决需要大量计算资源和高速数据处理的复杂问题。
- 高性能计算的主要目标是提供强大的计算能力和高效的数据处理能力,以应对科学、工程、商业和其他领域中日益增长的计算需求。它通常用于处理大规模的、计算密集型的任务,涉及复杂的模拟、建模、仿真、优化和数据分析等应用。
高性能计算通常依赖的计算机系统具有以下特点:
- 高度并行化:高性能计算系统能够同时执行多个计算任务,利用并行处理来提高计算速度和效率。它可以包括多个处理器、多个计算节点、多核处理器、加速器(如GPU)等,以支持并行计算。
- 大规模存储器:高性能计算通常需要处理大规模的数据集。因此,它需要具备大容量和高带宽的存储系统,以存储和访问海量数据。
- 高速互联网络:高性能计算系统中的计算节点需要通过高速互联网络进行通信和数据交换。这样可以实现节点之间的数据共享、协作和任务调度。
- 高性能软件和编程模型:高性能计算需要使用高效的算法和优化技术来充分发挥硬件的计算能力。并行编程模型如
MPI
(Message Passing Interface)和OpenMP
(Open Multi-Processing)等被广泛用于高性能计算应用的开发和优化。
3. 并行计算
并行计算(Parallel Computing)是指同时执行多个计算任务,以便更快地完成工作。可分为时间并行和空间并行。时间并行即利用多条流水线同时作业,空间并行是指使用多个处理器执行并发计算,以降低解决复杂问题所需要的时间。
并行计算过程涉及将一个大型计算问题分成多个小问题,然后在多个处理单元(通常是 CPU 核心或多个计算机)上同时处理这些小问题。这种方式可以显著提高计算速度和效率,尤其是在需要处理大规模数据或复杂数学模型的情况下。并行计算可应用于各种规模的计算系统,包括超级计算机、多核处理器、GPU等。通常,我们可以认为并行计算是高性能计算的学术上的叫法。
为执行并行计算,计算资源应包括一台配有多处理机(并行处理)的计算机、一个与网络相连的计算机专有编号,或者两者结合使用。并行计算主要目的在于两个方面:
(1) 加速求解问题的速度。
(2) 提高求解问题的规模。
为提高计算效率,并行计算处理问题一般分为以下三步:
(1)将工作分离成离散独立部分,有助于同时解决;
(2)同时并及时地执行多个程序指令;
(3)将处理完的结果返回主机经一定处理后显示输出。
并行计算需满足的基本条件
- 并行计算机。并行计算机至少包含两台或两台以上处理机,这此处理机通过互联网络相互连接,相互通信。
- 应用问题必须具有并行度。也就是说,应用可以分解为多个子任务,这些子任务可以并行地执行。将一个应用分解为多个子任务的过程,称为并行算法的设计。
- 并行编程。在并行计算机提供的并行编程环境上,具体实现并行算法,编制并行程序并运行该程序,从而达到并行求解应用问题的目的。
补充3:串行计算方式vs并行计算方式
从上图可以看出,串行计算必须按步骤一步一步计算才能出来最终结果。而并行计算则要将问题分成N多个子任务,每个子任务并行执行计算。而每个子任务是非独立的,每个子任务的计算结果决定最终的结果。这个和分布式计算不同。
4. 分布式计算
分布式计算(Distributed Computing)是指将计算任务分布到多台计算机或计算节点上进行并行计算的方法。分布式计算系统通常由多个独立的计算节点组成,通过网络进行通信和协作。分布式计算可通过利用多台计算机的计算资源来解决大规模的计算问题,提高计算效率和吞吐量。
补充4:并行计算与分布式计算的区别
并行计算更多的是为了解决高性能计算的问题,更多的强调计算性能;分布式计算一般是为了解决任务量大的计算问题。并行计算是在同一台计算机上同时处理多个任务,而分布式计算是将任务分发到多个计算机或节点上。
- 并行计算一般用于解决需要大量计算的问题,如生命科学研究中的分子动力学分析、地质勘探中的地震建模、成像、转位等,这些计算任务数量不多,但每个任务都需耗费极强的计算能力。
- 分布式计算一般应用于超大任务量的场景,如当今非常流行的hadoop分布式系统就非常适合用来处理海量数据,淘宝的分布式系统TFS(Taobao File System)每天都可以处理千万乃至上亿次的订单等。
5. 网格计算
网格计算是一种计算基础设施,它结合了分布在不同地理位置的计算机资源以实现共同目标。多台计算机上所有未使用的资源都汇集在一起,可供单个任务使用。组织使用网格计算来执行大型任务或解决在单台计算机上难以完成的复杂问题。
例如,气象学家使用网格计算进行天气建模。天气建模是一种计算密集型问题,需要执行复杂的数据管理和分析。在单台计算机上处理大量天气数据不仅缓慢,而且相当耗时。为此,气象学家在地理上分散的网格计算基础设施上运行分析并结合结果。
从效率上看,使用网格计算,可以将一个庞大而复杂的任务分解为多个子任务。多台计算机可以同时处理子任务,这使网格计算成为一种高效的计算解决方案。
从成本来看,网格计算适用于现有硬件,这意味着可以重复使用现有计算机。可以在访问多余的计算资源的同时节省成本。还可以经济高效地访问云中的资源。
灵活性方面,网格计算不限于特定的建筑物或位置。可以建立一个跨越多个区域的网格计算网络。这使得不同国家的研究人员可以使用相同的超级计算能力进行协作。
网格计算中需要有哪些组件?
- 节点。网格计算网络上的计算机或服务器称为节点。每个节点向网格网络提供未使用的计算资源,例如 CPU、内存和存储。同时,还可以使用节点执行其他不相关的任务。网格计算中的节点数量没有限制。存在三种主要类型的节点:
控制节点
、提供者节点
和用户节点
。 - 网格中间件。网格中间件是一种专门的软件应用程序,它将网格操作中的计算资源与高级应用程序连接起来。例如,它处理用户对网格计算系统的额外处理能力的请求。 它控制用户对可用资源的共享,以防止网格计算机不堪重负。网格中间件还提供防止网格计算中出现资源滥用的安全性。
- 网格计算架构。网格体系结构表示网格计算机的内部结构。以下层广泛存在于网格节点中:
- 顶层由高级应用程序组成,例如执行预测建模的应用程序。
- 第二层,也称为中间件,管理和分配应用程序请求的资源。
- 第三层由可用的计算机资源组成,例如 CPU、内存和存储。
- 底层允许计算机连接到网格计算网络。
网格计算有哪些类型?
- 计算网络。计算网格由高性能计算机组成。它使研究人员可以使用计算机的综合计算能力。研究人员使用计算网格计算来执行资源密集型任务,例如数学模拟。
- 拾遗网络。虽然与计算网格类似,但 CPU 拾遗网格包含许多常规计算机。拾遗一词描述了在常规计算机网络中搜索可用计算资源的过程。当其他网络用户访问计算机执行与网格无关的任务时,网格软件会在这些节点空闲时使用它们。拾遗网格也称为 CPU 拾遗或循环拾遗。
- 数据网络。数据网格是连接多台计算机以提供大数据存储容量的网格计算网络。可以像在本地计算机上一样访问存储的数据,而不必担心数据在网格上的物理位置。
补充5:分布式计算与网格计算的比较
分布式计算用于在任一时间实现单一目标。相比之下,网格计算并没有协同性,而是在其网络上为多个相关的子任务分配资源。一个网格计算网络可能包含几个分布式计算系统。
6. 集群计算
集群计算描述了由同构计算机组成的网络系统。同构计算机具有相同的硬件和软件。可以将它们连接到高速本地网络以创建运行类似任务的计算机集群。中央服务器可以控制和协调机器。
补充6:集群计算与网格计算的比较
集群计算具有稳定和特定的硬件、任务和控制结构,而网格计算则在资源共享方面具有灵活性。网格网络上的计算机独立工作,没有义务共享资源。它们有一个资源管理器,在运行时共享未使用的资源。
7. 云计算
云计算(Cloud Computing)是分布式处理(Distributed Computing)、并行处理(Parallel Computing)和网格计算(Grid Computing)的发展,或者说是这些计算机科学概念的商业实现。
云计算的基本原理是,通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中,企业数据中心的运行将更与互联网相似。这使得企业能够将资源切换到需要的应用上,根据需求访问计算机和存储系统。
小结
超算是一种大型高性能计算系统,高性能计算是解决大规模问题的计算方式,并行计算和分布式计算是实现高性能计算的两种方式。
相关资料
- 什么是网格计算?
- 分布式计算、网格计算和云计算
- 《并行与分布式处理》