【技术实现步骤摘要】
适用于海浪数值模式的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实现计算进程间通信。由于并行海浪数值模式基于网格分区进行进程间通信,每个进程仅与相邻网格分区所在的进程进行通信,无需与所有进程进行通信,因此适合采用点对 ...
【技术保护点】
【技术特征摘要】
1.一种适用于海浪数值模式的MPI虚拟图拓扑通信方法,其特征在于,所述MPI虚拟图拓扑通信方法包括:根据海浪数值模式的网格邻接关系和网格分区表,确定所述海浪数值模式的每一进程的接收进程编号、接收进程数量、接收网格编号和接收网格数量;所述网格分区表包括每一网格的进程编号;根据发送进程编号和接收进程编号的对应关系以及发送网格编号和接收网格编号的对应关系,确定每一所述进程的发送进程编号、发送进程数量、发送网格编号和发送网格数量;根据所有所述进程的接收进程编号、接收进程数量、发送进程编号和发送进程数量构建虚拟图通信拓扑;在所述海浪数值模式需要进行数据通信时,基于所述虚拟图通信拓扑调用MPI虚拟图通信拓扑接口,完成各个所述进程间的通信。2.根据权利要求1所述的MPI虚拟图拓扑通信方法,其特征在于,所述根据海浪数值模式的网格邻接关系和网格分区表,确定所述海浪数值模式的每一进程的接收进程编号、接收进程数量、接收网格编号和接收网格数量具体包括:对于海浪数值模式的每一进程,根据所述海浪数值模式的网格分区表确定所述进程上分配的所有本地网格;按照网格编号由小至大的顺序,选取一所述本地网格作为当前网格;根据所述海浪数值模式的网格邻接关系确定所述当前网格的所有邻接网格;对于每一所述邻接网格,根据所述网格分区表确定所述邻接网格的第一进程编号,并在所述第一进程编号和所述当前网格的进程编号不同时,判断所述第一进程编号是否在接收集合内,得到第一判断结果;若所述第一判断结果为是,则判断所述邻接网格的第一网格编号是否在所述接收集合内,且与所述第一进程编号相对应,若否,则将所述第一网格编号插入所述接收集合内,且与所述第一进程编号相对应;若所述第一判断结果为否,则将所述第一进程编号和所述邻接网格的第一网格编号均插入所述接收集合内,且所述第一网格编号和所述第一进程编号相对应;判断是否遍历所有的本地网格,得到第二判断结果;若所述第二判断结果为是,则以所述接收集合内的第一进程编号作为所述进程的接收进程编号,以所述接收集合内的第一进程编号的总数量作为所述进程的接收进程数量,以所述接收集合内的第一网格编号作为所述进程的接收网格编号,以所述接收集合内的第一网格编号的总数量作为所述进程的接收网格数量;若所述第二判断结果为否,则按照网格编号由小至大的顺序选取一未被选取的本地网格作为当前网格,以所述接收集合作为下一循环的接收集合,返回“根据所述海浪数值模式的网格邻接关系确定所述当前网格的所有邻接网格”的步骤。3.根据权利要求1所述的MPI虚拟图拓扑通信方法,其特征在于,所述根据海浪数值模式的网格邻接关系和网格分区表,确定所述海浪数值模式的每一进程的接收进程编号、接收进程数量、接收网格编号和接收网格数量具体包括:对于海浪数值模式的每一进程,根据通信需求确定所述进程的通信影区的层数,并根据所述海浪数值模式的网格分区表确定所述进程上分配的所有本地网格;
以所述进程的第一层通信影区作为当前通信影区,并按照网格编号由小至大的顺序选取一所述本地网格作为当前网格;根据所述海浪数值模式的网格邻接关系和所述当前通信影区的层数确定所述当前网格的所有邻接网格;对于每一所述邻接网格,根据所述网格分区表确定所述邻接网格的第一进程编号,并在所述第一进程编号和所述当前网格的进程编号不同时,判断所述第一进程编号是否在接收集合内,得到第一判断结果;若所述第一判断结果为是,则判断所述邻接网格的第一网格编号是否在所述接收集合内,且与所述第一进程编号相对应,若否,则将所述第一网格编号插入所述接收集合内,且与所述第一进程编号相对应;若所述第一判断结果为否,则将所述第一进程编号和所述邻接网格的第一网格编号均插入所述接收集合内,且所述第一网格编号和所述第一进程编号相对应;判断是否遍历所有的本地网格,得到第二判断结果;若所述第二判断结果为否,则按照网格编号由小至大的顺序选取一未被选取的本地网格作为当前网格,以所述接收集合作为下一循环的接收集合,返回“根据所述海浪数值模...
【专利技术属性】
技术研发人员:逄仁波,于福江,高元勇,高志一,
申请(专利权)人:国家海洋环境预报中心,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。