适用于海浪数值模式的MPI虚拟图拓扑通信方法及系统技术方案

技术编号:38053860 阅读:13 留言:0更新日期:2023-06-30 11:19
本发明专利技术公开一种适用于海浪数值模式的MPI虚拟图拓扑通信方法及系统,涉及通信技术领域,根据海浪数值模式的网格邻接关系和网格分区表,确定每一进程的接收进程编号、接收进程数量、接收网格编号和接收网格数量,进一步确定每一进程的发送进程编号、发送进程数量、发送网格编号和发送网格数量,以便根据所有进程的接收进程编号、接收进程数量、发送进程编号和发送进程数量构建虚拟图通信拓扑。在海浪数值模式需要进行数据通信时,基于虚拟图通信拓扑调用一次MPI虚拟图通信拓扑接口,即可完成各个进程间的通信,相较于点对点通信,通信效率显著提高。率显著提高。率显著提高。

【技术实现步骤摘要】
适用于海浪数值模式的MPI虚拟图拓扑通信方法及系统


[0001]本专利技术涉及通信
,特别是涉及一种适用于海浪数值模式的MPI虚拟图拓扑通信方法及系统。

技术介绍

[0002]MPI(Message Passing Interface)是支持C语言和FORTRAN语言的消息传递接口库,其支持计算节点内和计算节点间的大规模高速通信,被广泛应用于各种并行数值计算模式中。MPI通信方法有点对点通信、组通信和虚拟拓扑通信等,其中点对点通信是由一个发送进程和一个接收进程组合后进行通信;组通信是由至少两个以上进程组成一组进行通信;虚拟拓扑通信是根据进程间通信关系构建出虚拟通信拓扑来进行通信。点对点通信具有简单、灵活和通用性强的特点,适用于各种局部通信;组通信针对全局通信优化,一般用于全局广播、全局数据收集、聚合求值等操作;虚拟拓扑通信具有通信效率高的特点,适用于通信关系固定的应用。
[0003]国内外主流的海浪数值模式WAVEWATCH、WAM(WAMDIG 1988)、MASNUM(MArine Science and NUmerical Modeling)、SWAN(Simulating WAves Nearshore)均采用MPI实现跨节点间数据通信,国家海洋环境预报中心研发的自主有限体积海浪数值模式FVWAM(Finite Volume WAM)也采用MPI实现计算进程间通信。由于并行海浪数值模式基于网格分区进行进程间通信,每个进程仅与相邻网格分区所在的进程进行通信,无需与所有进程进行通信,因此适合采用点对点通信和虚拟拓扑通信进行网格分区间数据交互,而不适合采用组通信方法。目前,主流的海浪数值模式均采用点对点通信实现进程间通信,但点对点通信方法一般先循环调用MPI点对点发送接口完成数据发送操作,后循环调用MPI点对点接收接口完成数据接收操作,该方式导致海浪数值模式的通信效率较低,并容易引起进程间通信死锁等问题。
[0004]基于此,亟需一种通信效率高的适用于海浪数值模式的新的通信技术。

技术实现思路

[0005]本专利技术的目的是提供一种适用于海浪数值模式的MPI虚拟图拓扑通信方法及系统,只调用一次MPI虚拟图通信拓扑接口即可完成进程间的数据发送和接收过程,通信效率高。
[0006]为实现上述目的,本专利技术提供了如下方案:
[0007]一种适用于海浪数值模式的MPI虚拟图拓扑通信方法,所述MPI虚拟图拓扑通信方法包括:
[0008]根据海浪数值模式的网格邻接关系和网格分区表,确定所述海浪数值模式的每一进程的接收进程编号、接收进程数量、接收网格编号和接收网格数量;所述网格分区表包括每一网格的进程编号;
[0009]根据发送进程编号和接收进程编号的对应关系以及发送网格编号和接收网格编
号的对应关系,确定每一所述进程的发送进程编号、发送进程数量、发送网格编号和发送网格数量;
[0010]根据所有所述进程的接收进程编号、接收进程数量、发送进程编号和发送进程数量构建虚拟图通信拓扑;
[0011]在所述海浪数值模式需要进行数据通信时,基于所述虚拟图通信拓扑调用MPI虚拟图通信拓扑接口,完成各个所述进程间的通信。
[0012]一种适用于海浪数值模式的MPI虚拟图拓扑通信系统,所述MPI虚拟图拓扑通信系统包括:
[0013]接收信息确定模块,用于根据海浪数值模式的网格邻接关系和网格分区表,确定所述海浪数值模式的每一进程的接收进程编号、接收进程数量、接收网格编号和接收网格数量;所述网格分区表包括每一网格的进程编号;
[0014]发送信息确定模块,用于根据发送进程编号和接收进程编号的对应关系以及发送网格编号和接收网格编号的对应关系,确定每一所述进程的发送进程编号、发送进程数量、发送网格编号和发送网格数量;
[0015]虚拟图通信拓扑构建模块,用于根据所有所述进程的接收进程编号、接收进程数量、发送进程编号和发送进程数量构建虚拟图通信拓扑;
[0016]通信模块,用于在所述海浪数值模式需要进行数据通信时,基于所述虚拟图通信拓扑调用MPI虚拟图通信拓扑接口,完成各个所述进程间的通信。
[0017]根据本专利技术提供的具体实施例,本专利技术公开了以下技术效果:
[0018]本专利技术用于提供一种适用于海浪数值模式的MPI虚拟图拓扑通信方法及系统,先根据海浪数值模式的网格邻接关系和网格分区表,确定海浪数值模式的每一进程的接收进程编号、接收进程数量、接收网格编号和接收网格数量,然后根据发送进程编号和接收进程编号的对应关系以及发送网格编号和接收网格编号的对应关系,确定每一进程的发送进程编号、发送进程数量、发送网格编号和发送网格数量,最后根据所有进程的接收进程编号、接收进程数量、发送进程编号和发送进程数量构建虚拟图通信拓扑。在海浪数值模式需要进行数据通信时,基于虚拟图通信拓扑调用一次MPI虚拟图通信拓扑接口,即可完成各个进程间的通信,相较于点对点通信,通信效率显著提高。
附图说明
[0019]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0020]图1为本专利技术所提供的点对点通信流程示意图;
[0021]图2为本专利技术所提供的虚拟图拓扑通信流程示意图;
[0022]图3为本专利技术实施例1所提供的MPI虚拟图拓扑通信方法的方法流程图;
[0023]图4为本专利技术实施例1所提供的MPI虚拟图拓扑通信方法的原理框图;
[0024]图5为本专利技术实施例1所提供的3层通信影区的设计示意图;
[0025]图6为本专利技术实施例1所提供的获取接收信息的算法设计示意图;
[0026]图7为本专利技术实施例1所提供的获取发送信息的算法设计示意图;
[0027]图8为本专利技术实施例1所提供的0号进程上的通信时间对比示意图;
[0028]图9为本专利技术实施例1所提供的所有进程平均通信时间对比示意图;
[0029]图10为本专利技术实施例1所提供的所有进程中最大通信时间对比示意图;
[0030]图11为本专利技术实施例2所提供的MPI虚拟图拓扑通信系统的系统框图。
具体实施方式
[0031]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0032]本专利技术的目的是提供一种适用于海浪数值模式的MPI虚拟图拓扑通信方法及系统,只调用一次MPI虚拟图通信拓扑接口即可完成进程间的数据发送和接收过程,通信效率高。
[0033]为使本专利技术的上述目的、特征和优点能够更加明显易懂,下面结合附本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种适用于海浪数值模式的MPI虚拟图拓扑通信方法,其特征在于,所述MPI虚拟图拓扑通信方法包括:根据海浪数值模式的网格邻接关系和网格分区表,确定所述海浪数值模式的每一进程的接收进程编号、接收进程数量、接收网格编号和接收网格数量;所述网格分区表包括每一网格的进程编号;根据发送进程编号和接收进程编号的对应关系以及发送网格编号和接收网格编号的对应关系,确定每一所述进程的发送进程编号、发送进程数量、发送网格编号和发送网格数量;根据所有所述进程的接收进程编号、接收进程数量、发送进程编号和发送进程数量构建虚拟图通信拓扑;在所述海浪数值模式需要进行数据通信时,基于所述虚拟图通信拓扑调用MPI虚拟图通信拓扑接口,完成各个所述进程间的通信。2.根据权利要求1所述的MPI虚拟图拓扑通信方法,其特征在于,所述根据海浪数值模式的网格邻接关系和网格分区表,确定所述海浪数值模式的每一进程的接收进程编号、接收进程数量、接收网格编号和接收网格数量具体包括:对于海浪数值模式的每一进程,根据所述海浪数值模式的网格分区表确定所述进程上分配的所有本地网格;按照网格编号由小至大的顺序,选取一所述本地网格作为当前网格;根据所述海浪数值模式的网格邻接关系确定所述当前网格的所有邻接网格;对于每一所述邻接网格,根据所述网格分区表确定所述邻接网格的第一进程编号,并在所述第一进程编号和所述当前网格的进程编号不同时,判断所述第一进程编号是否在接收集合内,得到第一判断结果;若所述第一判断结果为是,则判断所述邻接网格的第一网格编号是否在所述接收集合内,且与所述第一进程编号相对应,若否,则将所述第一网格编号插入所述接收集合内,且与所述第一进程编号相对应;若所述第一判断结果为否,则将所述第一进程编号和所述邻接网格的第一网格编号均插入所述接收集合内,且所述第一网格编号和所述第一进程编号相对应;判断是否遍历所有的本地网格,得到第二判断结果;若所述第二判断结果为是,则以所述接收集合内的第一进程编号作为所述进程的接收进程编号,以所述接收集合内的第一进程编号的总数量作为所述进程的接收进程数量,以所述接收集合内的第一网格编号作为所述进程的接收网格编号,以所述接收集合内的第一网格编号的总数量作为所述进程的接收网格数量;若所述第二判断结果为否,则按照网格编号由小至大的顺序选取一未被选取的本地网格作为当前网格,以所述接收集合作为下一循环的接收集合,返回“根据所述海浪数值模式的网格邻接关系确定所述当前网格的所有邻接网格”的步骤。3.根据权利要求1所述的MPI虚拟图拓扑通信方法,其特征在于,所述根据海浪数值模式的网格邻接关系和网格分区表,确定所述海浪数值模式的每一进程的接收进程编号、接收进程数量、接收网格编号和接收网格数量具体包括:对于海浪数值模式的每一进程,根据通信需求确定所述进程的通信影区的层数,并根据所述海浪数值模式的网格分区表确定所述进程上分配的所有本地网格;
以所述进程的第一层通信影区作为当前通信影区,并按照网格编号由小至大的顺序选取一所述本地网格作为当前网格;根据所述海浪数值模式的网格邻接关系和所述当前通信影区的层数确定所述当前网格的所有邻接网格;对于每一所述邻接网格,根据所述网格分区表确定所述邻接网格的第一进程编号,并在所述第一进程编号和所述当前网格的进程编号不同时,判断所述第一进程编号是否在接收集合内,得到第一判断结果;若所述第一判断结果为是,则判断所述邻接网格的第一网格编号是否在所述接收集合内,且与所述第一进程编号相对应,若否,则将所述第一网格编号插入所述接收集合内,且与所述第一进程编号相对应;若所述第一判断结果为否,则将所述第一进程编号和所述邻接网格的第一网格编号均插入所述接收集合内,且所述第一网格编号和所述第一进程编号相对应;判断是否遍历所有的本地网格,得到第二判断结果;若所述第二判断结果为否,则按照网格编号由小至大的顺序选取一未被选取的本地网格作为当前网格,以所述接收集合作为下一循环的接收集合,返回“根据所述海浪数值模...

【专利技术属性】
技术研发人员:逄仁波于福江高元勇高志一
申请(专利权)人:国家海洋环境预报中心
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1