设置主页 加入收藏 保存到桌面
当前位置首页论文计算机论文海洋水质预报程序中的混合并行计算的应用分析

海洋水质预报程序中的混合并行计算的应用分析

忆潇湘围观:℉更新时间:2021-12-18 12:15:22

海洋水质预报程序中的混合并行计算的应用分析

第1章 绪论

1.1 研究背景及意义

我国近海的资源和地缘具有与众不同优势,是支撑我国沿海经济带社会和经济可持续发展的重要环境要素以及蓝色经济区产业发展和海洋资源开发(如海上采油、海洋养殖)的优先区域。随着沿海经济带快速城市化,海岸带的生态环境污染情况越加严重,水质日趋恶化,给近海地区的经济和生活都带来了不良影响。了解近海生态环境的生源要素输入、迁移和转化规律以及初级生产力的响应和适应能力,理解近海环境负荷对物质通量和气候变化的响应机制,实现具有一定时效和准确率的海洋水质预报系统,对相关海洋环境数据进行整理、发布和解释,将对防灾减灾、保障我国经济社会持续和谐发展产生积极的推动作用。

海洋预报的发展能够促进业务海洋学与海洋环境监测、海洋基础理论研究之间的结合,初步达到海洋预报从传统的气象、水文要素扩展到与水质密切联系的生物、化学等重要非保守要素,为我国近海预报提供示范性借鉴,有助于实现具有中国特色的海洋预报公益服务、专业服务、决策服务的综合服务体系。但是,实际过程中,由于所考虑数据的逐步完善及追求预报准确性空间分辨率的提高,使得预报系统的计算量越来越大,即便是在高性能计算机上也难以达到研究人员对计算效率的要求。所以,研究并开发出大规模并行预报系统十分迫切和重要[1]。MPI[2]是一种适用于分布式存储并行计算机系统的并行计算规范,在集群系统的计算中应用最为广泛,OpenMP[3]主要应用于共享存储并行计算机系统。两种并行技术均已在多种领域得到相关研究和应用[4],例如基于MPI的POM海洋模式的并行算法[5]、基于MPI的电力系统潮流并行算法研究[6]、水工结构动态响应并行计算研究[7]等等,以及沿海海洋环流模式的OpenMP并行开发[8]、基于OpenMP的Multi-Critical分子动力学并行算法优化[9]、OpenMP技术在教学手机游戏中的应用[10]等等。

随着计算在科学研究和实际应用中发挥的作用越来越大,计算已经是与传统科学研究的理论方法和实验方法并列的第三手段,数值模拟也常常被作为许多决策的依据[11]。随着多核结构和微处理技术飞速发展,多核心集群逐渐成为主流的并行计算平台,被各个领域所采用。多核心集群系统同时具有共享存储体系结构系统和分布式存储系统的特点,可看作分布-共享混合存储系统。其两个层次的并行计算体系结构通过高速网络互联的内存独立的各计算机节点形成的分布式存储结构和在计算机节点由一个或多个多核处理器构成的共享内存结构[12]使得多核心集群系统既适宜以MPI为代表的分布式存储并行计算技术[13],也适宜以OpenMP为代表的共享存储并行计算技术[14],因此在并行程序的设计开发中既可分别单独使用其中一种并行技术,又可使用两种方法结合的混合并行计算[15-17]。

...............................

1.2 国内外研究现状

由于过度地开发和利用,近海环境污染及水质恶化日渐严重,赤潮、绿潮(如浒苔)[19]、海水富营养化等环境灾害致使海湾生态系统功能衰退、生物多样性减少。

业务海洋学研究所是对海洋科学各重要领域进行基础理论研究和综合研究,其关注的焦点之一就是开发出准确、高速的海洋预报系统。2021 年 9 月在我国北京举办的第十二届 CTWF 国际气候论坛发展中国家业务化海洋学;国际研讨会(CTWF,CAS-TWAS-WMO Forum,CAS:中国科学院,TWAS:发展中国家科学院,WMO:世界气象组织)的四个议题就包括海洋研究与模型、海洋观测与数据分析、海洋数据同化及业务化海洋预报。目前的预报系统大多来自于海洋研究模型。而在业务化应用过程中,串行模式的程序计算效率偏低,无法满足业务化海洋预报在短时间内完成运算任务的基本需求,本研究旨在提高预报系统的计算效率,具有一定的实用性和示范性。

在海洋和大气数值计算领域,国内外已有许多基于 MPI、OpenMP 等并行计算技术的研究与应用,如基于 MPI 并行的 MASNUM 海浪数值模式[20]、LAGFD-WAM海浪数值模式算法[21]、全球海洋环流模式 LASG/IAP 的并行计算应用研究[22]、POM海洋并行模型、海洋环流模式 FVCOM2.6 版本[23]等,应用了 OpenMP 的沿海海洋环流模式并行开发及中尺度数值天气预报模式 MM5[24-25]等,基于 MPI+OpenMP混合并行计算的海洋环流模型 POP[26]、渤海的水龄谱模拟并行研究、中尺度区域格点模式的天气研究及预报模式 WRF 的并行[27]等。在海洋生态数值模拟中,MPI并行技术已经应用到了 FVCOM 模型和区域陆架的水动力生态耦合模型COHERENS 上面,麻省技术研究所的环流模式 MITgcm 和受控生态系统模式RecoM 也已经采用了并行计算实现,模拟研究在水体营养盐(C,N,Si,Fe)指标发生改变的情况下浮游植物的适应变化问题。另外,并行计算技术也被应用到了物理和生物等科学领域,如天体和分子动态模拟、计算流体动力学、大规模图像处理、基因序列比对等等。

商品化多核心处理器的普及,使得计算机在避免了能耗和时钟速度增加的前提下实现了较高的总体性能。高性能计算机 TOP500 排行榜中的大型高性能计算机大多都采用了具有共享内存结构的多核心处理器来组成系统节点。这类系统的节点有若干个,各节点之间通过高速网络互连。这种类型的计算系统具有很好的性价比,将在未来很长的时间内占据主导地位[28]。

由于超级计算机体系结构多种多样,研制水平参差不齐,应用类型不尽相同,使得并行程序的设计比串行程序要困难的多,不同的架构对应不同的并行程序设计语言和工具。再者,并行程序中各并行块之间也需要进行同步和信息交换等处理,也使程序设计的复杂性加大。OpenMP 可以在共享存储环境的并行程序中取得较好的并行性能,是共享存储体系结构计算机系统并行设计时的首选工具之一[29]。而 MPI 则是分布式存储结构计算机事实上的并行编程标准。但对于具有两种类型存储结构的多核心集群计算机系统,当前还没有与之完全适应的并行编程技术,但仅采用 MPI 或者 OpenMP 等已有的并行技术已不能取得理想性能[30]。理想的并行编程方案应使应用程序设计者能以最有效的方法使用这个混合的硬件结构,获得理想的性能而不会引起由其导致的任何开销[31]。因此,在多核心集群系统上,使用多种并行编程技术进行混合并行程序设计成为了一个研究热点[32-33]。

综上,在已经逐渐成为主流计算平台的多核心集群计算机系统上进行混合并行计算研究已成为热点。虽然在大气计算领域对于 MPI 或 OpenMP 的应用十分广泛,在海洋生态动力学方面也发布了一些并行版本,但由于海洋生态动力学模型较为复杂,不但有物理过程,还需考虑多种生物化学过程和现实参量,且其间关联甚多,模型的并行设计较为困难,基于二者的混合并行技术应用于海洋生态预报上的研究还十分少。利用 MPI+OpenMP 混合并行编程可以减少进程数增加线程数来减少通信开销和系统内存资源开销,具有更好的并行度和更好的运算效率。

......................................

第2章 并行计算技术简介

2.1 并行计算的概念

并行计算是相对于串行计算来说的,与高性能计算、超级计算同义,又称并行处理、平行计算等,一般指计算的并发模式,它可以使许多指令同时执行,即将一个计算任务划分成多个子任务,并将这些子任务在多个处理器上同时进行运算。并行计算以加速求解问题、求解大规模问题和复杂系统为目的,主要是因为单处理机的计算速度受物理限制,无法满足人们的需求。任何高性能计算和超级计算都离不开并行技术。而并行计算的进行,就需要有并行计算机以及相应的并行开发环境。

.....................................

2.2 并行计算机

2.2.1 并行计算机发展历史

40 年代开始的计算机按其执行程序的过程可分为串行计算时代和并行计算时代两个时代。每一个时代都要经历体系结构、系统软件、应用软件的发展并最终在问题求解环境的发展中达到顶峰。并行计算机是解决单处理器速度瓶颈的最好途径之一。自 90 年代以来,并行计算能够发展如此迅速,一方面是因为国际上的一些重要研究计划,另一方面更是由于单处理机的计算速度不断提高,并行计算机的体系结构趋于成熟稳重,数据传输网络的标准化和传输速率的大幅提升,使得并行计算机的研制周期大大缩短,为研制并行计算机系统创造了有利条件。

并行计算机由一组之间可以相互通信和协作的处理单元组成,并通过这些处理单元完成大规模计算任务。因此,计算节点及其之间的通信协作机制是并行计算机的两个最主要部分,计算机体系结构的发展也主要体现在计算节点性能的提高和节点间通信的改进两方面。

60 年代初期,出现了晶体管和磁芯存储器,其应用使得处理单元和存储器都变得越加小巧而廉价,这些技术的发展促使了并行计算机的出现。这一时期的并行机多是大型主机(Mainframe),具有共享存储体系结构,是共享存储多处理系统,规模不大,典型代表是 IBM360。

60 年代末期,开始在同一个处理器上设置多个功能相同的功能单元,流水线技术也出现了,在处理器内部应用这些并行特性使并行计算机的性能得以大大提高。

1972 年,第一台 64CPU 的具有 SIMD 结构的 ILLIAC IV 并行计算机诞生了,其运算速度比当时传统的最强串行机高出 5 倍。1975 年,当一台 16CPU 的 SIMD主机系统面世时,整个计算机界已经发生了巨大变化。虚拟存储和缓存也是这个时期提出的,半导体存储器逐渐代替了磁芯存储器。70 年代具有代表性的并行机还有 CRAY-1、ICLDAP 等等,均为 SIMD 结构。

80 年代以研制 MIMD 结构的并行机为主。微处理技术的迅速发展及适宜 SMP方式总线协议的提出及其扩展,为共享存储多处理机占领服务器和桌面工作站市场提供了基础,具有代表性的并行机有 Sequent、Encore 等等。80 年代中期,基于消息传递的并行机开始涌现,这种并行机通过超立方体互联结构将多个处理器进行连接,代表机器有 Intel iPSC 系列、Vulcan、nCUBE-2 等等。

80 年代末 90 年代初,MIMD 结构占据绝对主导地位,大规模共享存储并行机取得新进展,大量早期的微处理器通过网络进行了连接,共享存储器的缓存一致性和系统的可扩展性成为人们所要考虑的问题,后来 IEEE 提出了以分布式共享存储器为基础的缓存一致性协议标准。这一时期的代表性并行机有 CM-5、IntelTouchstone Delta、CRAY T3D 等等。

.......................................

第 3 章 串行及纯 MPI 程序分析.........................................................22

3.1 水质预报系统简介.......................................22

3.1.1 实验区域介绍.........................................22

3.1.2 胶州湾水质预报系统框架简介.......................................23

3.2 串行程序分析.............................................24

3.3 纯 MPI 程序分析..........................................27

3.4 本章小结..............................................29

第 4 章 混合并行模型实现...........................................30

4.1 程序并行的可行性分析 .........................................30

4.2 实验环境.....................................32

4.3 基于 MPI+OPENMP 的混合并行方案的设计..................................................35

4.3.1 实现混合并行的理论依据...........................................35

4.3.2 混合模型的代码实现..........................................37

4.4 本章小结................................................43

第5章 实验结果和性能分析

5.1 并行计算性能评估指标

一个好的并行算法应该能够充分发挥其相应硬件并行环境,即高性能计算机多处理机的计算能力。程序的并行执行效果通常用加速比、并行效率等进行评估。加速比越高说明程序的并行化效果较好,并行执行时间比串行执行缩短的时间越多,反之说明并行化效果较差,计算时间缩短的少。并行效率的高低代表了并行程序使用多处理器进行计算的有效利用率。设串行程序的执行时间为 Ts,并行后的执行时间为 Tp,并行程序所使用的处理器计算核心总数是 n,那么加速比 Ra 和并行效率 Ep 的计算方法如下:

加速比反映的是并行程序在计算速度上相对串行程序的倍数。如果在高性能计算机上用 N 个核运行程序,每个核运行一个进程或者线程,并行程序的运行时间能够缩短到串行程序运行时间的 N 倍,这种加速比呈线性增长,称为线性加速比;如果加速比超过 N,则为超线性加速比,即并行程序在使用 N 个处理器的情况下运算速度超过串行程序 N 倍还多,出现这种情况的一个重要原因是并行计算机在配有大量的处理单元的同时,还为其处理单元配置了独立的高速缓存。高速缓存可以存储相对串行程序更多的计算数据,并且访问高速缓存的速度明显快于访问内存,这大大减少了计算过程中的访存时间,进而提高了运算效率。

但在实际操作中,像线性和超线性加速比这种最理想情况是很难实现的,因为程序的并行必定会引入一些代价[88]。例如,在共享存储结构系统中,为保证多个线程安全正确的访问临界区数据所使用的一些互斥访问机制,如强制并行程序串行执行临界区代码的互斥量,串行程序没有这种代价。而对于分布式存储系统结构,并行的各进程间通常需要通过网络传输数据,数据的打包、传输都需要消耗时间,这比访问局部内存中的数据慢的多。串行程序是没有这些额外开销的。此外,随着进程或线程个数的增多,其带来的时间开销和内存开销也会增大。线程越多,访问临界区的线程就会增加,同样的,进程越多数据传输也会越多,这些都是影响程序并行效率的重要因素。

5.2 混合并行模型性能分析

为了验证胶州湾水质预报系统 MPI+OpenMP 混合并行模型的正确性,本实验将混合模型在多核心集群上进行了测试,与串行和原有纯 MPI 并行模型的结果一致,实验证明 MPI+OpenMP 的混合并行模型是可靠的。因为系统是短期预报且只预测 1~2 天的水质状况,本文给出的测试数据为预测两天的实验数据。

一般情况下,对于一定规模的问题在采用纯 MPI 进行并行时,程序的并行性能并不随着进程数量的增加而提高,它会有一个最优值。这个时候使用混合编程会达到一个较好的加速比。本系统实验规模为 159*185*5 个网格,其水质模块纯MPI 非阻塞通信并行性能测试结果如表 5-1。

....................................

结论

本文将 MPI 和 OpenMP 两种并行计算技术相结合,形成一种混合并行编程模型,并用其对胶州湾水质预报系统纯 MPI 的非阻塞模式并行版本进行改进。混合并行模型通过减少 MPI 进程数增加 OpenMP 线程数,大大降低了消息传递带来的时间开销和对系统资源的需求,对于内存资源相对有限的多核心集群计算机来说具有重要意义,是对多核心集群系统硬件结构的充分利用,对其计算能力更深层次的挖掘。同时,混合并行模型的结构特点也更有利于实现多层次并行,能够缩短一定的开发周期。

基于 MPI+OpenMP 混合并行的胶州湾水质预报系统水质模块在计算时,相对串行程序可缩短 95%的运算时间,加速比超过 20。与传统的纯 MPI 方式对比结果显示,混合模型并行更彻底。而且 OpenMP 并行在节点的多核处理器中,共享内存数据。因此,混合并行模型具有更高的性能和更有效的系统资源利用能力。

本文提出的基于 MPI+OpenMP 混合并行能够显著提高胶州湾水质预报系统中的水质模块的运算效率,大大改善了水质预报系统的预报能力。今后,还可将该混合模型扩展到水质预报系统的其他模块,加快运算速度,也可应用到其他海洋数值模拟领域之中,提高模拟效率。

.....................................

参考文献(略)