探索性实验基于MPI-OpenMP混合编程的大规模多体问题仿真

实验名称:基于MPI/OpenMP混合编程的大规模多体问题仿真

实验背景

随着国民经济、国防建设和高科技的快速发展,越来愈多的领域对高性能计算有强烈的需求,包括原子能、航空、航天、激光、气象、石油、海洋、天文、地震、生物、材料、医药、化工等。特别是全球气候变化和天气预报、生物分子结构探索、湍流研究、新材料探索以及不少国防研究课题,都迫切需要高性能计算。高性能计算课程的目标就是培养从事高性能计算方面的实践创新型人才,课堂上的理论知识能让学生对高性能计算的各种技术有所了解,但要深入理解高性能计算,需要结合当前科学前沿,动手去实验,去了解高性能计算能够解决的问题、高性能计算的集群环境、高性能计算的编程技术以及高性能计算算法的设计。

本实验主要是对“基于MPI/OpenMP混合编程的大规模多体问题仿真实验”进行探索和研究,并为高性能计算课程制定探索创新性的实验内容。N-Body问题(多体问题)是天体力学和一般力学的基本问题之一,研究N个质点相互之间作用的运动规律,它切合当前科学前沿,在高性能计算领域也具有一定的代表性。MPI/OpenMP是一种分布式/共享内存层次结构,是高性能计算中两种常用并行结构的混合体,它提供结点内和结点间的两级并行,能充分利用共享存储模型和消息传递模型的优点,有效地改善系统的性能,这种编程模型能够综合地培养学生的高性能计算法方面的编程能力。基于这个基础,要求学生设计解决N-body 的算法,比如PP(Particle-Particle)、PM(Partical-Mesh)、BH(Barnes-Hut)、FMM(Fast Multipole Method)等,以及基于这些算法延伸出来的算法。在实验室集群上面完成OpenMP/MPI程序,并分析使用高性能计算解决问题达到的效率,这些能够培养学生高性能计算算法设计能力及在高性能计算环境的实践能力。另外,在实验的过程中,指导学生考虑高性能计算编程中常涉及的程序可扩展性问题及负载均衡问题,培养学生精益求精的科研精神。

整个实验贴合科学前沿,能指导学生全面深入理解高性能计算,并能充分培养学生在高性能计算方面的思考、创新及实践能力。

实验主要完成对于“基于MPI/OpenMP混合编程的大规模多体问题仿真实验”的探索和研究,并完成高性能计算课程的实验内容设计。MPI是集群计算中广为流行的编程平台。但是在很多情况下,采用纯的MPI消息传递编程模式并不能在这种多处理器构成的集群上取得理想的性能。为了结合分布式内存结构和共享式内存结构两者的优势,人们提出了分布式/共享内存层次结构,MPI/OpenMP混合编程模型就是其中的一种。N-Body问题又称为多体问题,N表示任意正整数。它是天体力学和一般力学的基本问题之一,研究N个质点相互之间作用的运动规律,对其中每个质点的质量和初始位置、初始速度都不加任何限制。简单的说,N-Body问题是指找出已知初始位置、速度和质量的多个物体在经典力学情况下的后续运动,它既可以应用于宏观的天体,也可以应用于微观的分子、原子。

实验问题的创新

N-Body问题是一个经典的高性能计算应用, 广泛应用于天体物理、等离子体物理、分子动力学、流体动力学,它贴合科学前沿,并在高性能计算领域具有非常强的代表性。

实验编程模型的创新

使用MPI/OpenMP混合编程模型有许多的好处

(1)有效的改善MPI代码可扩展性

MPI代码不易进行扩展的一个重要原因就是负载均衡。它的一些不规则的应用都会存在负载不均的问题。采用混合编程模式,能够实现更好的并行粒度。MPI仅仅负责结点间的通信,实行粗粒度并行:OpenMP实现结点内部的并行,因为OpenMP不存在负载均衡问题,从而提高了性能。

(2)数据拷贝问题

数据拷贝常常受到内存的限制,而且由于全局通信其可扩展性也较差。在纯的MPI应用中,每个结点的内存被分成处理器个数大小。而混合模型可以对整个结点的内存进行处理,可以实现更加理想的问题域。

(3)MPI实现的不易扩展

在某些情况下,MPI应用实现的性能并不随处理器数量的增加而提高,而是有一个最优值。这个时候,使用混合编程模式会比较有益,因为可以用OpenMP线程来替代进程这样就可以减少所需进程数量,从而运行理想数目的MPI进程,再用OpenMP进一步分解任务,使得所有处理器高效运行。

(4)带宽和延迟限制问题

减少结点间的消息但是却增加了消息的长度。在简单的通信中,比如,在某时仅允许一个结点发送/接收一条消息,消息带宽是没有影响的,整个延时会降低因为此时消息的数量少了。在更复杂的情况下,允许消息并发的发送/接收,长消息数量的减少会产生不良影响。(5)通信与计算的重叠

大多数MPI实现如:MPICH和LAM,都是使用单线程实现。这种单线程的实现可以避免同步和上下文转换的开销,但是它不能将通信和计算分开。因此,即使是在有多个处理器的系统上,单个的MPI进程不能同时进行通信和计算。MPI+OpenMP混合模型可以选择主线程或指定一个线程进行通信,而其它的线程执行计算的部分。

实验算法设计的创新

本实验的算法设计不是固定的,解决N-Body问题有很多可用的算法,不同的算法都有各自的优劣势,这种开放性的算法设计能让学生自己充分发挥自己的思考。

相关文档
最新文档