首页 > 编程知识 正文

分布式并行计算(并行计算与集群技术)

时间:2023-05-04 15:52:51 阅读:121776 作者:4487

第五章并行计算和集群技术并行计算(Parallel Computing )与高性能计算(High Performance Computing,高端计算)或超级计算)都是

因为是并行计算,所以学习云计算需要理解并行计算的概念和分类。 集群技术是并行计算的基础,也是云计算的基础,因此需要了解集群技术。 本章介绍并行计算的基本概念和分类、云计算基础架构-集群以及并行编程-MPI编程。

5. 1并行计算概要并行计算是同时使用多种计算资源解决计算问题的过程是提高计算机系统计算速度和处理能力的有效方法其基本想法是使用多个处理器共同解决同一问题,接下来要解决的问题被分割成几个部分,每个部分由独立的处理器并行计算。 在计算机术语中,并行性是指能够将一个复杂问题分解为多个子问题并同时处理的能力。

并行计算是同时使用多种计算资源解决计算问题的过程是提高计算机系统计算速度和处理能力的有效手段这是在多个部件上执行的小任务协作解决大规模计算问题的方法。 基本思想是在多个处理器中共同解决相同的问题,接下来要解决的问题被分割成几个部分,每个部分由独立的处理器计算。 并行计算系统实际上是由多个计算单元组成的运算速度快、存储容量大、可靠性高的计算机系统。 并行计算系统可以是包含被专用设计的多个处理器的超级计算机,或者可以是由以某种方式互连的多台独立计算机构成的集群。 并行计算集群完成数据处理,并将处理结果返回给用户。 并行计算的内涵包括并行计算机体系结构、编译系统、并行算法、并行编程、并行软件技术、并行性能优化与评价、并行应用等。 另外,并行计算可以作为并行计算机系统和实用问题之间的桥梁。 支持科学、工程、商业应用领域的专家,为并行计算机解决该领域问题提供了重要支持。

因此,为了成功地进行并行计算,需要三个基本条件。

并行计算机。 并行计算机包括至少两台以上的处理器,这些处理器能够通过网络相互连接和相互通信。 电子APP应用程序具有并行度。 可以将APP应用程序划分为多个子任务,这些子任务可以并行执行。 将一个APP应用程序分解为多个子任务的过程称为并行算法的设计。 并行编程。 在并行计算机提供的并行编程环境中,具体实现并行算法,其目的是通过编写并运行并行程序来并行求解应用问题。

之所以能够并行计算,主要是因为并发性是物质世界的普遍属性,具有实用背景的计算问题往往可以划分为能够并行计算的多个子任务。 5. 1.1并行计算机的发展并行计算机的出现是并行计算应用的重要前提。 并行计算机的产生和发展是为了满足日益增长的大规模科学和工程计算、办公处理和商务计算的需要。 解决问题的最大规模是并行计算机最重要的指标之一。

对大规模科学和工程计算APP应用并行计算的需求是推动并行计算机快速发展的主要动力,对它们并行计算能力的需求是永恒的,这加速了并行计算的产生。 市场需求也是推动并行计算的另一大动力,许多应用领域,如天气预报、核科学、石油勘探、地震数据处理、飞机数值模拟等,都需要具有每秒执行1兆次或100亿次浮点运算能力的计算机,而并行计算则是它们的执行除了大规模科学和工程计算的应用外,微电子技术和大规模集成电路的迅猛发展也是推动并行计算机的另一动力。

分时间看并行计算机的发展

1972年代,第一台并行计算机诞生于1972年。 ILLIAC IV,伊利诺伊大学。 由64个处理器构成,扩展性好,但编程性差。 1976年向量机Cray-1投入使用,以Cray-1为代表的向量机享誉超级计算机界十多年。 Cray-1虽然编程方便,但扩展性差。

20世纪80年代,并行计算机的发展进入百家争鸣阶段,初期以多指令多数据流MIMD (多指令多数据流)并行计算机为主; 中期,在一台计算机上共享一组处理器,即多个CPU、各CPU之间共享存储器子系统的对称型多处理器(Symmetrical Multi-Processor, 具有SMP )的共享存储多处理器)的出现,这是一种广泛应用于相对不对称的多处理技术的并行技术,每个处理器对称共享内存和计算机的其他资源,并通过单个操作系统进行管理,从而实现整个系统的

虽然有处理能力,但扩展性、可靠性差,容易成为内存访问的瓶颈。 后期,出现了具有强大计算能力的开放式计算机,如通过二维Mesh连接的meiko(sun )系统、通过超立方体连接的MIMD并行计算机、共享存储向量多处理器Cray Y-MP等。

20世纪90年代,并行计算架构框架由分布式共享存储分布式共享存储器(DSM )、大规模并行处理架构MPP (massivelyparallelprocessing )、和

。这期间,并行计算机的发展思路是让每个结点越来越独立,最后达到每个结点都是一个完整的工作站,有独立的硬盘与 UNIX 系统;结点间通过低成本的网络(如千兆以太网)连接。COW的典型代表是 Beowulf cluster 集群,COW与MPP之间的界线越来越模糊。
2000年至今,并行计算得到了前所未有的大踏步发展。并行计算机以COW 为原型的由大规模商用普通 PC 机构成的集群为主,如Cluster 集群、Constellation 星群和 MPP 都是以集群为基本架构。Cluster 集群中每个结点包含多个商用处理器,结点内部共享存储;采用商用集群交换机通过前端总线连接结点,结点分布存储:各个结点采用 Linux 操作系统、GNU 编
译系统和作业管理系统。Constellation 星群中每个结点都是一台子并行计算机,采用商用集群交换机通过前端总线连接结点,结点采用分布存储,各个结点运行专用的操作系统、编译系统和作业管理系统。并行计算机各个年代的发展如图5-5所示。 5. 1. 2 并行计算与分布式计算

并行计算、分布式计算都属于高性能计算(High Performance Computing, HPC) 范畴,主要目的都是对大数据进行分析和处理,都是利用并行来获得更高性能的计算-把大任务分为n个小任务。这也使得很多人一直分不清两者之间的关系,但二者之间存在很多差异,我们需要了解两者的原理、特点和运用的场合,这对于云计算的理解大有裨益。
这里首先简要介绍一下分布式计算的概念。分布式计算主要研究分散系统(Distributed System) 如何进行计算。分散系统是一组计算机通过计算机网络互连后形成的系统。分布式计算可以把程序放在最适合运行它的计算机上运行,实现共享稀有资源和平衡负载,这也是分布式计算的核心思想之一。
并行计算是相对于串行计算来说的,并行计算主要目的是加速求解问题的速度和提高求解问题的规模。并行计算强调时效性和海量数据处理,各任务之间的独立性弱,而且关系密切,每个结点之间的任务时间要同步。即并行程序并行处理的任务包之间有很大的联系,并且并行计算的每一个任务块都是必要的,没有浪费的、分割的,就是每个任务包都要处理,而且计算结果相互影响,这就要求每个计算结果要绝对正确。
分布式计算是相对于集中式计算来说的,分布式计算的任务包相互之间有独立性,上一个任务包的结果未返回或者是结果处理错误、对下一个任务包的处理几乎没有什么影响。分布式计算的实时性要求不高,并且允许存在计算错误(因为每个计算任务给好几个参与者计算,上传结果到服务器后要比较结果,然后对结果差异大的进行验证。也就是说,分布式计算不强调时效性,各任务之间相互独立,所以结点节可以没有通讯,即无网络信息传输。每个结点之间的任务执行时间没有限制。
典型的分布式计算,如分析计算蛋白质的内部结构和相关药物的 Folding@home 项目,该项目结构庞大,需要惊人的计算量,由一台计算机计算是不可能完成的。因此,该项目通过分布式计算技术把需要进行大量计算的工程数据分区成小块,分配给多台计算机分别计算,在各台计算机上传运算结果后,将结果统一合并得出数据结论。因此,有人认为分布式计算是开行计算的一种特例。
分布式计算中,很多任务块可以根本不处理,即有大量的无用数据块。因此,分布式计算的速度尽管很快,但真正的“效率”是低之又低的。分布式要处理的问题一般是基于“寻找”模式的。所谓的“寻找”, 就相当于穷举法。为了尝试到每一个可能存在的结果,一般从0~n (某一数值)被一个一个的测试,直到找到所要求的结果。事实上,为了易于一次性探测到正确的结果,可以假设结果是以某个特殊形式开始的。在这种类型的搜索里,也许一开始就找到答案,也许到最后才找到答案,即分布式计算中可能一直在寻找答案,但有可能永远都找不到,也可能一开始就找到了。而并行计算的任务包个数相对有限,在一个有限的时间应该是可能完成的。
分布式计算程序的编写一般用是 C++或 Java, 基本不用 MPI接口。并行计算编程采用用MPI或者OpenMP.

5. 1. 3 并行计算与云计算

云行在天,云计算的横空出世少不了其他技术的支持,云计算是并行计算技术、大数据技术和网络技术发展的必然结果。
云计算需要解决:计算资源的透明虚拟化和弹性化、内存储资源的透明虚拟化和弹性化、外存储资源的透明虚拟化和弹性化、数据安全的保障、向开发者提供完善的 API 并实现终端用户向云计算的平滑过渡。云计算将一切隐在云端,普通用户不再关心数据存在哪里,不再关心数据的安全,不再关心应用程序是否需要升级,不再关心计算机病毒的危害,这一切的
工作都由云计算负责解决,普通用户要做的就是选择自己喜爱的云计算服务商购买自己需要的服务,并为之付费。云计算使普通用户有了享受高性能计算的机会,因为云计算中心几乎可以提供无限制的计算能力,计算的弹性化和存储的弹性化是云计算的重要特征。
云计算的计算能力的实现是从计算机的并行化开始的,即把多个计算机并联起来,从而获得更快的计算速度,这是一种很简单也很朴素的实现高速计算的方法,也被证明是相当成功的方法。
大规模并行计算机出现后,以其为基础的云计算服务器集群的服务器数量是以万、十万甚至更高的单位计数,在这样巨大的集群规模下,云计算面临两个重要问题:昂贵的系统部署费用和不可忽视的结点失效问题。在云计算环境中,云计算的计算力和存储力可随着需求改变,即云计算是按需使用的。这种理念同时也适用于云计算对服务器的要求,在云计算时代人们不再追求服务器的高性能、全配置,“能用就行"成了云计算时代的对服务器的要求。因此云计算的基础架构采用了以COW (Cluster Of Workstations, 工作站集群)为原型的由大规模商用普通PC机(大大降低了服务器的硬件成本)构成的集群为主的体系架构,这一体系架构正是并行计算机2000年后最基本的结构模型。
由于服务器的大量集中,服务器的失效成为经常的事情,传统的架构对于单点失效是很敏感的,而在云计算架构下单点失效成为系统认可的常态,任何的单点失效都不会影响系统对外提供服务。即云计算在构建系统架构时就将系统结点的失效考虑了进去,实现了基于不可信服务器结点的云计算基础架构。将服务器失效作为云计算系统的服务器集群模型是符合实际情况的,这种情况下单个服务器可以看作是不可信的结点,在系统设计时必须要将不可信服务器结点的失效屏蔽在系统之内,不向开发者和普通用户传递。在将服务器失效作为常态的服务器集群模型下,数据的安全性通过副本策略得到了保证。

5. 2 云计算基础架构-集群技术

集群架构是当前高性能计算的主流架构,也是大数据领域的主流架构,集群技术是支撑云计算与大数据系统的重要技术。

5. 2. 1 集群的基本概念

集群是一组独立的计算机(结点)的集合体,结点间通过高性能的网络相连接,各结点除了作为一个单一的计算资源供用户使用外,还可以协同工作,并表示为一个单一的、集中的计算资源,供并行计算任务使用。集群是一种造价低廉、易于构建并且具有较好可扩展性的体系结构。集群具有以下重要特征:

集群中的各个结点都是一个完整的计算机系统,结点可以是工作站,也可以是PC或对称多处理器SMP.网络连接上通常使用如以太网、FDDI、光纤等商用网络设备,部分商用集群也采用专用网络互联。网络接口与结点的I/O总线松耦合相连。各结点具有本地磁盘。各结点有自己的独立的操作系统。
集群系统的设计中要考虑5个关键问题。可用性:集群系统有一个提供可用性的中间层,它使集群系统可以提供检查点、故障接管、错误恢复以及所有结点上的容错支持等服务。从而可以充分利用集群系统中的冗余资源,使系统在尽可能长的时间内为用户服务。单一系统映像 SSI (Single System Image) : 集群系统与一组互联工作站的区别在于,集群系统可以表示为一个单一系统。集群系统中也有一个单一系统映像的中间层,它通过组合各结点上的操作系统提供对系统资源的统一访问。作业管理(Job Management) : 因为集群系统需要获得较高的系统使用率,集群系统上的作业管理软件需要提供批处理、负载平衡、并行处理等功能。并行文件系统PFS: 由于集群系统上的许多并行应用要处理大量数据,需进行大量的I/0操作,而这些应用要获得高性能,就必须要有一个高性能的并行文件系统。高效通信(Efficient Communication) .集群系统比MPP机器需要一个更高效的通信子系统,因为集群系统的结点复杂度高,结占间的连接线路比较长,带来了较高的通信延迟,同时也带来了可靠性、时钟扭斜(Clock Shew) 和串道(Cross-Talking) 等问题。 5. 2. 2 集群系统的分类

一个理想的集群系统从来不会让用户意识到它的底层存在众多的结点。在用户看来,集群就是一个单独的计算机系统,而非由多个计算机系统构成。并且集群系统的管理员可以随意增加和删改集群系统的结点而用户并无感知。
集群系统按功能和结构可以分为如下四类。
(1) 高可用性集群系统
高可用性集群系统通常通过备份结点的使用来实现整个集群系统的高可用性,活动结点失效后备份结点自动接替失效结点的工作。高可用性集群系统就是通过结点冗余来实现的,一般这类集群系统主要用于支撑关键性业务,保证关键性业务的不间断服务。
(2) 负载均衡集群系统
负载均衡集群系统中所有结点都参与工作,系统通过管理结点(利用轮询算法、最小负载优先算法等调度算法)或利用类似一致性鲤鱼老虎等负载均衡算法实现整个集群系统内负载的均衡分配。
(3) 高性能集群系统
高性能集群系统主要是追求整个集群系统强大的计算能力,其目的是完成复杂的计算任
务,在科学计算中常用的集群系统就是高性能集群系统,目前物理、生物、化学等领域有大量
的高性能集群系统提供服务。
(4) 虚拟化集群系统
在虚拟化技术得到广泛使用后,人们为了实现服务器资源的充分利用和切分,将一台服务器利用虚拟化技术分割为多台独立的虚拟机使用,并通过管理软件实现虚拟资源的分配和管理。这类集群系统称为虚拟集群系统,其计算资源和存储资源通常是在一台物理机上。利用虚拟化集群系统可以实现虚拟桌面技术等云计算的典型应用。
目前基于集群系统结构的云计算系统和大数据系统往往是几类集群系统的综合,它既需要满足高可用性的要求又尽可能地在结点间实现负载均衡,同时也需要满足大量数据的处理任务。Hadoop、HPCC (HighPerformance Computing Cluster, 高性能计算集群)这类大数据系统中,前三类集群系统的机制都存在,而在基于虚拟化技术的云计算系统中采用的往往是虚拟化集群系统。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。