SMP集群上的混合并行计算
- 格式:doc
- 大小:223.00 KB
- 文档页数:6
CPU的多核心架构及计算单元详解中央处理器(CPU)是计算机系统中的核心组件之一,它承担着执行计算和控制操作的任务。
随着计算机的快速发展,人们对于性能的要求也越来越高。
为了满足用户对于多任务处理和高性能计算的需求,CPU的多核心架构逐渐兴起。
本文将详细介绍CPU的多核心架构以及其中的计算单元。
一、CPU的多核心架构1.1 多核心概念及发展多核心是指在一个CPU芯片上集成多个独立的处理器核心。
与传统的单核心CPU相比,多核心架构能够同时处理多个线程或任务,提升计算机的整体性能。
多核心架构的发展源于摩尔定律的进展。
根据摩尔定律,集成电路中的晶体管数量每18个月翻倍,这意味着CPU的计算能力也在同期间不断提升。
然而,到了一定程度,提升频率并不能显著增加CPU的性能,因为频率增加会导致功耗和发热的问题。
因此,为了进一步提升性能,多核心架构成为了解决方案。
1.2 多核心的优势多核心架构具有如下几个优势:1.2.1 提升系统性能:多核心能够同时处理多个任务或线程,有效提高了系统的整体性能。
特别是对于多线程应用程序或者同时执行多个任务的场景,多核心能够更好地满足用户需求。
1.2.2 节能降耗:与提升频率相比,多核心架构能更好地平衡性能和功耗。
通过将任务分配到多个核心上执行,每个核心的工作频率可以降低,从而减少功耗和发热,延长电池续航时间。
1.2.3 增强并行计算能力:多核心为并行计算提供了强大的支持。
对于需要大量计算的应用程序,多个核心可以同时进行计算,加速处理过程。
1.3 多核心架构的实现方式多核心架构的实现方式主要有对称多处理(SMP)和复杂指令集计算(CISC)。
对称多处理(SMP)是指每个核心拥有相同的访问权限和权力,可以独立运行不同的任务。
SMP架构中,每个核心可以共享同一份操作系统,从而实现大部分应用程序的并行执行。
复杂指令集计算(CISC)则是在一个CPU芯片上,集成多个核心以及专用的计算单元,每个计算单元负责执行特定类型的计算任务。
计算机的并行计算技术有哪些详解并行计算的架构与应用在现代科技领域,计算机的并行计算技术被广泛应用于许多领域,提供了强大的计算能力和效率。
本文将详细解释并行计算的概念、架构和应用,以及介绍几种常见的并行计算技术。
一、并行计算的概念并行计算是指同时执行多个计算任务的过程,以提高计算机系统的速度和性能。
与传统的串行计算相比,通过并行计算,多个处理器可以同时处理不同的计算任务,从而大大缩短了计算时间。
二、并行计算的架构1. 对称多处理器(SMP)对称多处理器是一种常见的并行计算架构,它包含多个处理器核心(CPU),每个处理器核心都可以访问共享内存。
因此,每个处理器核心都具有相同的权限和能力,并且可以相互通信和协作。
2. 分布式内存计算机(DMC)分布式内存计算机是一种将多个计算机连接在一起,并通过网络进行通信的并行计算架构。
在分布式内存计算机中,每个计算机都有自己的本地内存,并且计算任务被划分为子任务,在多台计算机之间进行并行计算。
3. 向量处理器向量处理器是一种特殊的并行计算架构,其核心思想是通过同时执行多个数据元素来提高计算性能。
向量处理器具有广泛的数据并行能力,并且可以在单个指令中处理多个数据。
三、并行计算的应用1. 科学计算在科学研究领域,许多复杂的计算任务需要大量的计算资源和时间。
通过并行计算技术,科学家可以利用多个处理器来加速大规模的数值模拟、数据分析和计算实验,从而加快科学研究的进程。
2. 数据挖掘与机器学习数据挖掘和机器学习是分析和理解大规模数据集的重要领域。
并行计算技术可以加速数据挖掘算法和机器学习模型的训练和推断过程,减少模型训练时间,提高预测和分类准确性。
3. 图像和视频处理在图像和视频处理领域,许多算法需要处理大量的像素和帧。
通过并行计算技术,可以将图像和视频处理任务分成多个子任务,并在多个处理器上同时处理这些子任务,从而提高图像和视频处理的效率和实时性。
4. 数据库管理和并行查询在大规模数据库管理和查询中,通过并行计算技术可以将查询任务划分为多个子任务,并由多个处理器同时执行这些子任务。
基于多核集群系统的并行编程模型的研究与实现摘要:主要对并行计算的编程模型进行了研究,包括 mpi 和openmp 两种编程模型,同时提出了一种层次化混合编程模型。
并以计算π的问题为例,用 c 语言设计了混合编程模型下的程序,在以多核处理器作为节点的曙光 tc5000 集群上对三种编程模型下的求π程序进行了实验,同时将实验结果进行了性能分析和比较。
结果表明该混合并行算法具有更好的扩展性和加速比。
关键词:层次化;混合编程;多核集群;性能分析中图分类号:tp311 文献标识码:a 文章编号:1009-3044(2013)10-2349-04随着社会对计算机性能的要求越来越高,对高速并行计算的应用越来越广泛,多核集群系统得到了飞速的发展。
现在的并行计算机体系结构中绝大部分都是集群体系结构,并且大多数的集群节点是多核 smp。
因此多核集群系统具有一下特点:每一个节点都是一个共享存储的多处理机,而节点间是分布式的内存结构,它结合了基于分布式存储和基于共享存储的处理器的优点。
因此在多核集群系统上可以进行多种并行程序设计和实现,包括可以在节点间执行的基于消息传递的纯 mpi 编程模型,可以在节点内(多核 smp)执行的基于共享内存的openmp 编程模型,以及 mpi+openmp 的混合编程模型。
本文将对以上提到的三种并行编程模型进行研究,并对计算π的算法分别进行了三种编程模型的程序设计,最后用以多核处理器作为节点的曙光 tc5000 作为实验工具,对所设计的程序进行实现,并进行了性能比较。
1 mpi编程模型和openmp 编程模型在并行计算领域内,主要的并行编程模型有三类模型:数据并行、消息传递、共享变量。
其中基于消息传递的 mpi 编程模型和基于共享变量的 openmp 编程模型是最为流行的并行编程模型。
1.1 mpi 编程模型消息传递界面 mpi (message passing interface)是一种消息传递接口,是目前国内外最主流的编程模型之一。
SMP体系一、SMP体系的定义SMP体系是一种面向多处理器系统的内存体系结构,其中每个处理器都可以访问共享的物理内存空间。
SMP体系使得多个处理器可以同时访问相同的内存地址,从而提高系统的并行计算能力。
二、SMP体系的特点1.共享内存:SMP体系的核心特点是多个处理器可以访问同一块物理内存,从而实现数据共享和通信。
这种设计简化了多处理器系统的软件编程模型,使得开发者可以更方便地实现并行计算。
2.对称性:SMP体系中的处理器是对称的,即没有主从的区分,每个处理器都可以独立地执行任务和访问内存。
这种对称性设计简化了系统的管理和调度,使得系统更具灵活性和可扩展性。
3.低延迟:由于每个处理器可以直接访问共享的内存空间,SMP体系具有较低的内存访问延迟。
这种低延迟有利于提高系统的整体性能和响应速度。
4.高扩展性:SMP体系支持简单可伸缩的体系结构,在需要扩展处理器数量时可以通过添加更多处理器实现。
这种高扩展性使得SMP体系适用于各种规模的并行计算任务。
三、SMP体系的应用领域1.科学计算:SMP体系广泛应用于科学计算领域,如气象预测、分子模拟、地震分析等。
多个处理器可以同时处理复杂的计算任务,加速科学研究和模拟实验的过程。
2.企业应用:SMP体系也被广泛应用于企业级系统中,如数据库管理、大数据分析、云计算等。
多处理器系统可以处理大量的交易数据和用户请求,提高企业系统的吞吐量和性能。
3.高性能计算:SMP体系在高性能计算领域也有重要应用,如超级计算机、并行编程等。
通过多个处理器的协同工作,实现大规模并行计算,解决复杂的科学和工程问题。
四、SMP体系的发展趋势1.异构化:未来SMP体系可能会向异构化发展,即在多处理器系统中引入不同类型的处理器,如CPU、GPU、FPGA等,以更好地满足不同应用的需求。
2.更高性能:随着技术的发展,未来SMP体系可能会实现更高的处理器核数和更快的内存访问速度,提供更高性能的计算能力。
⾼性能计算集群,英⽂原⽂为High Performance Computing Cluster,简称HPC Cluster,是指以提⾼科学计算能⼒为⽬的计算机集群技术。
HPC Cluster是⼀种并⾏计算(Parallel Processing)集群的实现⽅法。
并⾏计算是指将⼀个应⽤程序分割成多块可以并⾏执⾏的部分并指定到多个处理器上执⾏的⽅法。
⽬前的很多计算机系统可以⽀持SMP(对称多处理器)架构并通过进程调度机制进⾏并⾏处理,但是SMP技术的可扩展性是⼗分有限的,⽐如在⽬前的Intel架构上最多只可以扩展到8颗CPU。
为了满⾜哪些"计算能⼒饥渴"的科学计算任务,并⾏计算集群的⽅法被引⼊到计算机界。
著名的"深蓝"计算机就是并⾏计算集群的⼀种实现。
由于在某些廉价⽽通⽤的计算平台(如Intel+Linux)上运⾏并⾏计算集群可以提供极佳的性能价格⽐,所以近年来这种越来越受到⽤户的青睐。
⽐如壳牌⽯油(Shell)所使⽤的由IBM xSeries组成的1024节点的Linux HPC Cluster是⽬前世界上计算能⼒最强的计算机之⼀。
HPC Cluster向⽤户提供⼀个单⼀计算机的界⾯。
前置计算机负责与⽤户交互,并在接受⽤户提交的计算任务后通过调度器(Scheduler)程序将任务分配给各个计算节点执⾏;运⾏结束后通过前置计算机将结果返回给⽤户。
程序运⾏过程中的进程间通信(IPC)通过专⽤进⾏。
HPC Cluster中使⽤的服务器通常可以分为⽤户节点、节点、存贮节点和计算节点四种。
它们的⾓⾊分别是: ⽤户节点: 提供⽤户界⾯的计算机。
它从⽤户那⾥接受任务,运⾏调度器(在本地或独⽴的"控制节点"上)将任务分派到其它计算机,并将运算结果返回给⽤户。
管理节点: 提供管理功能的计算机。
它应该能够使管理员从这⼀计算机对集群中的任意⼀台计算机进⾏监视和操作,并处理集群中所有计算机的⽇志和报警信息。
并行计算的体系结构随着科技的不断进步,计算机的算力和计算速度也在不断提高。
与此同时,人们对于计算机所能完成的任务也不断提升,而计算机所能够处理的问题难度也愈加复杂。
在计算机性能无法满足需求的情况下,人们开始考虑如何提高计算机的性能,其中之一的方案就是采用并行计算的体系结构。
并行计算即是指在同一时间内,多个独立的计算单元并行地完成一项计算任务。
而并行计算的体系结构则是将计算单元组织起来,形成一种分布式架构,实现并行计算的技术体系。
并行计算的体系结构可以分为两类,即共享存储体系结构和分布式存储体系结构。
共享存储体系结构中所有的计算单元都可以共享某个全局存储区,因此计算单元之间可以直接互操作。
而分布式存储体系结构中各个计算单元之间是通过网络进行联通的,它们彼此间不能直接互操作,但是可以通过网络通讯,进行数据传递。
共享存储体系结构主要有以下三种:1. 对称多处理器系统(SMP)SMP系统为多个处理器提供了一个共享的物理主存储器空间。
它允许在所有处理器间共享任务,任务也可以分配到任何一个处理器上。
SMP系统的一个典型应用是在服务器中对执行复杂任务的请求进行分配和处理。
2. 非统一内存体系结构(NUMA)NUMA体系结构允许每个处理器单元访问本地存储器,以及在散布位置上的外部存储器进行操作。
这种体系结构只有在该机器有许多处理器时才适合使用,而且适合于那些具有分布式选项的多处理器。
NUMA系统的一个典型应用是在数据仓库中高效地执行分析性操作。
3. 联机事务处理体系结构(OLTP)OLTP体系结构由多个处理器共享同一块主存储器并形成一个共享存储空间。
此外,OLTP通常还将所有数据都存储在数据库中,以便处理和管理交易。
OLTP系统的一个典型应用是在金融市场和贸易等业务流程中进行高效处理。
分布式存储体系结构主要有以下三种:1. 网格计算体系结构网格计算体系结构将多个以分布形式存在的计算单元组合起来,形成一个底层的计算网格。
SMP集群上的混合并行计算1 引言并行计算机体系结构的一个发展趋势是SMP(Symmetric Multiprocessor)集群系统。
它们是由拥有多个处理器的SMP节点和连接各节点间的快速网络构成的多级体系结构。
理想的并行编程方案可使应用程序设计者能以最有效的方法使用这个混合的硬件结构,获得理想的性能而不会引起由其导致的任何开销。
在分布式内存的系统上,使用MPI的消息传递已经被广泛的应用[1-4],但是,大多数情况下,特别是在大规模节点下,采用纯的MPI并行模型并不能取得理想的性能[5]。
此外,OpenMP已经成为共享存储系统编程的工业标准。
由于SMP集群同时具有共享存储和分布存储两极存储结构,因此节点内采用OpenMP 进行多线程化、节点间采用消息传递的混合并行模式可以更好的利用SMP集群的特性[6] 。
近几年来,多极混合并行计算已经被应用于许多应用中[7],并且取得了较大的成功[8-10],本文首先介绍了OpenMP和MPI并行模型和混合并行方法,以Napa软件为例,进行了MPI+OpenMP混合并行改进,最后在大规模节点上对比了混合并行和纯MPI的性能。
2 MPI和OpenMP并行模型在并行计算领域,MPI和OpenMP是最为流行的编程模型。
2.1 MPI并行模型消息传递编程模型是使用显式方式控制并行性的分布存储模型,MPI是这一模型的事实标准。
MPI可移植到分布和共享存储体系结构上,而且允许静态任务调度。
显式并行通常提供了一个更好的性能和可移植性。
特别适用于粗粒度的并行,使用MPI实现单程序多数据(SPMD)并行模型时,每个进程只能读写本地内存中的数据,对远程数据的访问则通过进程间显式的消息传递(库函数调用)来完成的。
MPI包含了多种优化的组通信库函数,可供编程人员选择使用最佳的通信模式。
但是,MPI并行模型也有其不足之处,比如:细粒度的并行会引发大量的通信;动态负载平衡困难;并行化改进需要大量的修改原有的串行代码;调试难度大。
2.2 OpenMP并行模型OpenMP使用Fork-Join的并行执行模式。
开始时由一个主线程执行程序,该线程一直串行地执行,直到遇到第一个并行化制导语句后才开始并行执行。
过程如下: ①Fork:主线程创建一队线程并行执行并行域中的代码;②Join:当各线程执行完毕后被同步或中断,最后又只有主线程在执行。
OpenMP的编程相对简单,充分利用了共享存储体系结构的特点,避免了消息传递的开销。
虽然它也支持粗粒度的并行,但主要还是针对细粒度的循环级并行。
OpenMP的另一个特点在于将串行程序转换为并行程序时无须对代码作大的改动。
其不足之处有只能在共享存储结构的机器上运行;数据的放置策略不当可能会引发其他问题;并行化的循环粒度过小会增加系统开销等。
3 混合并行方法3.1 混合并行的实现方法为了充分利用SMP集群层次存储结构的特点,可以考虑将上述两种编程模型相结合,实现MPI/OpenMP的混合编程模型。
该模型同样具有层次结构:上层的MP I表示节点间的并行;下层的OpenMP表示节点内的多线程并行:首先对问题进行区域分解,将任务划分成通信不密集的几个部分,每个部分分配到一个SMP节点上,节点间通过MPI消息传递进行通信;然后在每个进程内采用OpenMP编译制导语句再次分解,并分配到SMP的不同处理器上由多个线程并行执行,节点内通过共享存储进行通信。
图1描述了SMP集群上MPI/OpenMP 混合编程模型的实现机制。
3.2 节点内并行的性能测试本文首先测试了节点内并行的性能,测试在Intel Xeon Woodcrest 2.6G (双核)的平台上进行,结果如图2和图3所示。
其中,Share Socket表示Socket中不同处理核之间的消息传递,而Different Socket表示不同Socket之间的消息传递。
可见Share Socket间的通信性能明显好于不同Socket 间的通信性能。
3.3 混合并行的优点MPI和OpenMP的混合编程模型提供了节点间和节点内的两级并行机制,综合了进程间各个区域的粗粒度并行和进程内部循环级的细粒度并行。
实践证明,在很多情况下其执行效率高于纯MPI和OpenMP的程序,混合并行模型解决了一些它们无法解决的问题,比如:(1)负载平衡问题[11]。
混合并行模型很好解决了单纯MPI程序不容易实现负载平衡的问题,从而提高了并行程序的性能和可扩展性。
(2)通信带宽和延迟问题[11]。
MPI并行程序进程间的通信带宽和延迟问题可能会严重影响程序的执行性能。
混合模型的程序将减少通信的次数,并且OpenMP的线程级并行具有较小的延迟。
(3)通信与计算的重叠[12]。
大多数MPI实现都是使用单线程实现的。
这种单线程的实现可以避免同步和上下文切换的开销,但是它不能将通信和计算分开,因此,对于多处理系统上,单个的MPI进程不能同时进行通信和计算。
MPI+OpenMP混合模型可以选择主线程或指定一个线程进行通信,而其他线程执行计算,从而实现了通信与计算的重叠。
(4)解决少数应用进程数受限的问题。
通过混合并行可以更好的利用所有的处理器/核都能得到高效率的应用。
4 Napa软件的并行化测试4.1 Napa软件介绍NAPA软件是南京航空航天大学自主研发的CFD软件,可以计算具有复杂气动造型的三维内外流耦合流场和旋转流场,该软件已经经过了大量的算例和实验数据验证。
本文前期的工作[13]实现了NAPA软件的并行化以及串行优化,比较了并行和串行软件的计算结果,结果表明:对NAPA软件的并行化改进和优化是成功的,在此基础上,本文针对NAPA软件进行了MPI+OpenMP的混合并行改进和并行优化,并在大规模节点上对比了混合并行和纯MPI的性能。
4.2 测试平台介绍本文的计算平台节点包括2个Socket(x86平台,主频 2.6 G 双核)和8G 内存,计算节点共32个,千兆交换机,操作系统为Red Hat 9.0,编译器为Intel Compiler 9.0,消息传递库为Mpich 1.2.7。
4.3 性能评价方法并行计算中,我们把并行程序分成两部分:即串行部分和并行部分,如果用Ts表示串行部分串行执行所需的时间,Tcomp表示并行部分串行执行所需的时间,Tcomm表示P个进程并行计算中通讯部分占用的时间,使用P个进程执行的时间为Tp,那么单进程串行执行的时间为:T1=Ts+Tcomp ,P个进程并行执行的加速比(Speedup)、并行效率(Efficiency)、通信占用比(ηcomm)分别是:4.4 性能测试本文采用不同的进程数对平板流动进行了测试,该算例中采用多块网格结构,本文下面的所有的计算负载和通讯负载都是都是平衡的,图4给出了四组不同计算规模下的加速比。
其中,图中标出的是一块网格的网格点数(共128块),另外,在本测试中,由于迭代步较少,I/O占用会影响统计时间的准确度,因此,下面测试中未计入流场计算结束后的文件输出。
对于纯MPI的测试,本文给每个处理核分配一个进程,而MPI+OpenMP混合并行的测试,本文对每个Socket 分配一个进程,同时,每个Socket上又分配2个线程。
图中可以看到,当处理核总数较少的时候,与MPI+OpenMP 混合并行模型相比,由于MPI的并行粒度相对较大,因此性能明显占优,进程数小于32的时候,除了Grid 97*13*25 之外,其余的并行效率都超过了95%,前者性能较低是由于单进程上的计算量相对其他的计算较小,因此通信占用就比较大,因此效率较低。
随着处理核的增加,MPI并行模式的通信量也增加,图4中可以看到,当通信量达到一定规模之后,不管是Share Socket还是Different Socket的通信带宽都大大减小,因此在128个处理核的测试中,MPI并行模式下的并行效率也明显降低,相对来说,而混合并行模型由于减少了通信的进程数,从而减少了计算中的通信占用比,因此性能较好。
5结束语OpenMP+MPI这种混合并行模型相比单纯的MPI消息传递更能充分利用SMP集群系统,在某些情况下可以改善性能。
本文首先对两种不同情况下的节点内的通讯进行了测试,表明基于Share Socket的通信性能较好,然后采用MPI+OpenMP混合并行模型对NAPA软件进行了改进和测试,结果表明,就NAPA软件本身而言,采用MPI并行模型在小规模节点情况下性能较好,而采用混合并行模型在多节点情况下可以大大减少通信,从而获得更好的性能。
参考文献:[1] Dimitri J. Mavriplis, Michael J. Aftosmis, Marsha Berger, High Resolution Aerospace Applications using the NASA Columbia Supercomputer, 2005[2] Charles D H.Two-dimensional aerodynamic characteristics of the NACA0012 airfoil in the langley 8-foot transonic pressure tunnel[R].NASA TM-81927,1981[3] 吕晓斌,兰黔章,朱自强.二维跨音速Euler方程分区并行算法[J].北京航空航天大学学报,2000,26(2):194-197[4] 朱国林,李树民,王开春.维低速NS方程的并行计算[J].空气动力学学报,2002.[5] 冯云,周淑秋天.MPI+OpenMP混合并行编程模型应用研究[J].计算机系统应用,2006,(2).[6] 赵永华,迟学斌.基于SMP集群的OpenMP和MPI 混合编程模型及有效实现[J].微电子学与计算机,2005,22(10).[7] D S Henty. Performance of Hybrid message Passing and Shared Memory Parallels for Dircrete Element Modeling[J], In Proceedings of the ACM/IEEE conference on Supercomputing, Dalas, Texas, United States, 2000:10.[8] R Rabenseifner, G Wellein. Communication and Optimization Aspects of Parallel programming Models on Hybrid Architecture. International Journal of High Performance Computing Applications, 2003, 17(1).[9] F Cappello, D Etiemble. MPI Versus MPI+OpenMP on IBM SP for the NASBenchmarks. In Proceedings of 2000 ACM/IEEE Conference on Supercomputing, Dallas, Texas, USA, IEEE Computer Society Press, 2000[10] G Krawezik, F Cappello. Performance Comparison of MPI and Three OpenMP Programming Style on Shared Memory Multiprocessors. In ACM SPAA, San Diego, USA, Jun. 2003[11] 单莹,吴建平,王正华.基于SMP集群的多层次并行编程模型与并行优化技术[J].计算机应用研究,2006.[12] USFMPI:A Multi-threaded Implementation of MPI for Linux Clusters[C] In Proceedings of the 15thInternational Conference on Parallel and Distributed Computing and Systems, Marina del Rey, CA 2003.[J] Scientific Programming, V ol. 9, No 2-3,2001.[13] 金君,梁德旺,黄国平,雷雨冰.NAPA软件的并行化研究和效率分析[J].南京航空航天大学学报,2006,38(4).。