CN116319364B - 适用于海浪数值模式的mpi虚拟图拓扑通信方法及系统 - Google Patents
适用于海浪数值模式的mpi虚拟图拓扑通信方法及系统 Download PDFInfo
- Publication number
- CN116319364B CN116319364B CN202310091778.7A CN202310091778A CN116319364B CN 116319364 B CN116319364 B CN 116319364B CN 202310091778 A CN202310091778 A CN 202310091778A CN 116319364 B CN116319364 B CN 116319364B
- Authority
- CN
- China
- Prior art keywords
- grid
- receiving
- communication
- sending
- wave numerical
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 557
- 230000006854 communication Effects 0.000 title claims abstract description 306
- 238000004891 communication Methods 0.000 title claims abstract description 304
- 230000008569 process Effects 0.000 claims abstract description 486
- 238000005192 partition Methods 0.000 claims abstract description 38
- 238000010276 construction Methods 0.000 claims description 5
- 238000012163 sequencing technique Methods 0.000 claims description 2
- 230000005540 biological transmission Effects 0.000 description 40
- 238000004364 calculation method Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000012360 testing method Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 4
- 230000001788 irregular Effects 0.000 description 3
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/12—Discovery or management of network topologies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02A—TECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE
- Y02A90/00—Technologies having an indirect contribution to adaptation to climate change
- Y02A90/10—Information and communication technologies [ICT] supporting adaptation to climate change, e.g. for weather forecasting or climate simulation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开一种适用于海浪数值模式的MPI虚拟图拓扑通信方法及系统,涉及通信技术领域,根据海浪数值模式的网格邻接关系和网格分区表,确定每一进程的接收进程编号、接收进程数量、接收网格编号和接收网格数量,进一步确定每一进程的发送进程编号、发送进程数量、发送网格编号和发送网格数量,以便根据所有进程的接收进程编号、接收进程数量、发送进程编号和发送进程数量构建虚拟图通信拓扑。在海浪数值模式需要进行数据通信时,基于虚拟图通信拓扑调用一次MPI虚拟图通信拓扑接口,即可完成各个进程间的通信,相较于点对点通信,通信效率显著提高。
Description
技术领域
本发明涉及通信技术领域,特别是涉及一种适用于海浪数值模式的MPI虚拟图拓扑通信方法及系统。
背景技术
MPI(Message Passing Interface)是支持C语言和FORTRAN语言的消息传递接口库,其支持计算节点内和计算节点间的大规模高速通信,被广泛应用于各种并行数值计算模式中。MPI通信方法有点对点通信、组通信和虚拟拓扑通信等,其中点对点通信是由一个发送进程和一个接收进程组合后进行通信;组通信是由至少两个以上进程组成一组进行通信;虚拟拓扑通信是根据进程间通信关系构建出虚拟通信拓扑来进行通信。点对点通信具有简单、灵活和通用性强的特点,适用于各种局部通信;组通信针对全局通信优化,一般用于全局广播、全局数据收集、聚合求值等操作;虚拟拓扑通信具有通信效率高的特点,适用于通信关系固定的应用。
国内外主流的海浪数值模式WAVEWATCH、WAM(WAMDIG 1988)、MASNUM(MArineScience and NUmerical Modeling)、SWAN(Simulating WAves Nearshore)均采用MPI实现跨节点间数据通信,国家海洋环境预报中心研发的自主有限体积海浪数值模式FVWAM(Finite Volume WAM)也采用MPI实现计算进程间通信。由于并行海浪数值模式基于网格分区进行进程间通信,每个进程仅与相邻网格分区所在的进程进行通信,无需与所有进程进行通信,因此适合采用点对点通信和虚拟拓扑通信进行网格分区间数据交互,而不适合采用组通信方法。目前,主流的海浪数值模式均采用点对点通信实现进程间通信,但点对点通信方法一般先循环调用MPI点对点发送接口完成数据发送操作,后循环调用MPI点对点接收接口完成数据接收操作,该方式导致海浪数值模式的通信效率较低,并容易引起进程间通信死锁等问题。
基于此,亟需一种通信效率高的适用于海浪数值模式的新的通信技术。
发明内容
本发明的目的是提供一种适用于海浪数值模式的MPI虚拟图拓扑通信方法及系统,只调用一次MPI虚拟图通信拓扑接口即可完成进程间的数据发送和接收过程,通信效率高。
为实现上述目的,本发明提供了如下方案:
一种适用于海浪数值模式的MPI虚拟图拓扑通信方法,所述MPI虚拟图拓扑通信方法包括:
根据海浪数值模式的网格邻接关系和网格分区表,确定所述海浪数值模式的每一进程的接收进程编号、接收进程数量、接收网格编号和接收网格数量;所述网格分区表包括每一网格的进程编号;
根据发送进程编号和接收进程编号的对应关系以及发送网格编号和接收网格编号的对应关系,确定每一所述进程的发送进程编号、发送进程数量、发送网格编号和发送网格数量;
根据所有所述进程的接收进程编号、接收进程数量、发送进程编号和发送进程数量构建虚拟图通信拓扑;
在所述海浪数值模式需要进行数据通信时,基于所述虚拟图通信拓扑调用MPI虚拟图通信拓扑接口,完成各个所述进程间的通信。
一种适用于海浪数值模式的MPI虚拟图拓扑通信系统,所述MPI虚拟图拓扑通信系统包括:
接收信息确定模块,用于根据海浪数值模式的网格邻接关系和网格分区表,确定所述海浪数值模式的每一进程的接收进程编号、接收进程数量、接收网格编号和接收网格数量;所述网格分区表包括每一网格的进程编号;
发送信息确定模块,用于根据发送进程编号和接收进程编号的对应关系以及发送网格编号和接收网格编号的对应关系,确定每一所述进程的发送进程编号、发送进程数量、发送网格编号和发送网格数量;
虚拟图通信拓扑构建模块,用于根据所有所述进程的接收进程编号、接收进程数量、发送进程编号和发送进程数量构建虚拟图通信拓扑;
通信模块,用于在所述海浪数值模式需要进行数据通信时,基于所述虚拟图通信拓扑调用MPI虚拟图通信拓扑接口,完成各个所述进程间的通信。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明用于提供一种适用于海浪数值模式的MPI虚拟图拓扑通信方法及系统,先根据海浪数值模式的网格邻接关系和网格分区表,确定海浪数值模式的每一进程的接收进程编号、接收进程数量、接收网格编号和接收网格数量,然后根据发送进程编号和接收进程编号的对应关系以及发送网格编号和接收网格编号的对应关系,确定每一进程的发送进程编号、发送进程数量、发送网格编号和发送网格数量,最后根据所有进程的接收进程编号、接收进程数量、发送进程编号和发送进程数量构建虚拟图通信拓扑。在海浪数值模式需要进行数据通信时,基于虚拟图通信拓扑调用一次MPI虚拟图通信拓扑接口,即可完成各个进程间的通信,相较于点对点通信,通信效率显著提高。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明所提供的点对点通信流程示意图;
图2为本发明所提供的虚拟图拓扑通信流程示意图;
图3为本发明实施例1所提供的MPI虚拟图拓扑通信方法的方法流程图;
图4为本发明实施例1所提供的MPI虚拟图拓扑通信方法的原理框图;
图5为本发明实施例1所提供的3层通信影区的设计示意图;
图6为本发明实施例1所提供的获取接收信息的算法设计示意图;
图7为本发明实施例1所提供的获取发送信息的算法设计示意图;
图8为本发明实施例1所提供的0号进程上的通信时间对比示意图;
图9为本发明实施例1所提供的所有进程平均通信时间对比示意图;
图10为本发明实施例1所提供的所有进程中最大通信时间对比示意图;
图11为本发明实施例2所提供的MPI虚拟图拓扑通信系统的系统框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的目的是提供一种适用于海浪数值模式的MPI虚拟图拓扑通信方法及系统,只调用一次MPI虚拟图通信拓扑接口即可完成进程间的数据发送和接收过程,通信效率高。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
海浪数值模式常被应用于物理海洋变量的预报过程中,其是通过网格划分将空间连续的预报区域转化为有限的离散网格,通过设置时间步长将连续的时间分解为有限的时间迭代步,从而基于离散的网格和时间迭代步,通过符合物理规律的方程组进行求解,模拟在空间和时间上连续的海浪浪高、周期等变量的演变过程,对物理海洋变量进行预报。在海浪数值模式的计算过程中,时间迭代步依次顺序执行,当前时间迭代步的初始值依赖于前一个时间迭代步的结果,同一时间迭代步内不同网格上的计算则采用并行计算方法实现,部分方程组的求解依赖于周边网格的数据,因此若网格分布在不同的进程上,则在求解该方程组时,需先通过通信来获取周边网格在当前时间迭代步的数据后再进行计算方程组,以获得当前时间迭代步的物理海洋变量的数据,不断迭代,从而完成物理海洋变量的预报过程。目前,主流的海浪数值模式均采用点对点通信接口实现进程间通信,如图1所示,点对点通信方法一般先循环调用MPI点对点发送接口完成数据发送操作,后循环调用MPI点对点接收接口完成数据接收操作,由于点对点通信需要循环依次调用MPI点对点发送和接收接口,导致其通信效率相较于虚拟拓扑通信低,并容易引起进程间通信死锁等问题。为保障业务化海浪数值预报的及时性,需要海浪数值模式运行效率越高越好,因此采用效率更高的虚拟拓扑通信成为一种通信优化方法。
虚拟拓扑通信包含虚拟笛卡尔拓扑通信和虚拟图拓扑通信两种方法,虚拟笛卡尔拓扑通信只适用于固定规则网格分区间的通信,虚拟图拓扑通信适用于固定规则或非规则网格分区间的通信。由于先进海浪数值模式通常采用非规则网格,故虚拟图拓扑通信适用于海浪数值模式,其通信流程如图2所示,相对于点对点通信,虚拟图拓扑通信增加了创建虚拟图通信拓扑的过程,该过程是实现虚拟图拓扑通信的核心内容,完成虚拟图通信拓扑创建后,只需调用一次MPI虚拟图通信拓扑接口即可完成每个网格分区与相邻网格分区间的数据发送和接收,可以显著提高海浪数值模式的运行效率,保障业务化海浪数值预报的及时性。但虚拟图通信拓扑构建过程较为复杂,需根据不同的网格特点和网格分区邻接关系创建,目前还未有适用于海浪数值模式的MPI虚拟图拓扑通信方法。
实施例1:
本实施例用于提供一种适用于海浪数值模式的MPI虚拟图拓扑通信方法,如图3和图4所示,所述MPI虚拟图拓扑通信方法包括:
S1:根据海浪数值模式的网格邻接关系和网格分区表,确定所述海浪数值模式的每一进程的接收进程编号、接收进程数量、接收网格编号和接收网格数量;所述网格分区表包括每一网格的进程编号;
S2:根据发送进程编号和接收进程编号的对应关系以及发送网格编号和接收网格编号的对应关系,确定每一所述进程的发送进程编号、发送进程数量、发送网格编号和发送网格数量;
S3:根据所有所述进程的接收进程编号、接收进程数量、发送进程编号和发送进程数量构建虚拟图通信拓扑;
S4:在所述海浪数值模式需要进行数据通信时,基于所述虚拟图通信拓扑调用MPI虚拟图通信拓扑接口,完成各个所述进程间的通信。
本实施例先通过网格邻接关系和网格分区表,获取每个进程需要接收其他进程数据的接收进程编号和接收网格编号,并统计出相应的接收进程数量和接收网格数量;然后基于接收进程编号、接收网格编号与发送进程编号、发送网格编号的一一对应关系,通过数据交换后计算出每个进程需要向其他进程发送数据的发送进程编号、发送进程数量、发送网格编号和发送网格数量;再根据每个进程的发送进程编号、发送进程数量、接收进程编号和接收进程数量,调用相应的MPI接口创建虚拟图通信拓扑;最后基于构建好的虚拟图通信拓扑,循环调用MPI虚拟图通信拓扑接口完成海浪数值模式的所有变量数据的交换,从而能够提供一种适用于海浪数值模式的MPI虚拟图拓扑通信方法,解决点对点通信效率低且易通信故障的问题,减少海浪数值模式的通信时间,提高海浪数值模式的运行效率,提升海浪数值预报业务的及时性。
具体的,S1可以包括:
(1)对于海浪数值模式的每一进程,根据海浪数值模式的网格分区表确定进程上分配的所有本地网格。
本实施例是对海浪数值模式的研究区域进行非规则的网格划分,以得到覆盖整个研究区域的多个网格,从而可确定网格邻接关系。根据用户需求为海浪数值模式设置多个进程,每一进程分配一个CPU核,将多个网格分别分配至各个进程,分配至进程的网格则为该进程的本地网格,从而一个进程对应多个网格,一个网格仅对应一个进程,从而可确定网格分区表,网格分区表内存储有每一网格所对应的进程的进程编号,根据该网格分区表即可确定每一进程上分配的所有本地网格。进程用于处理本地网格的相关数据,各个进程的数据并不互通,只有各个进程之间相互通信,才能完成数据交换过程,以顺利进行海浪数值预报业务。
(2)按照网格编号由小至大的顺序选取一本地网格作为当前网格。
所有的本地网格均属于同一个进程,故当前网格的进程编号都是相同的。
(3)根据海浪数值模式的网格邻接关系确定当前网格的所有邻接网格;对于每一邻接网格,根据网格分区表确定该邻接网格的第一进程编号,并在第一进程编号和当前网格的进程编号不同时,判断第一进程编号是否在接收集合内,得到第一判断结果;若第一判断结果为是,则判断该邻接网格的第一网格编号是否在接收集合内,且与第一进程编号相对应,若否,则将第一网格编号插入接收集合内,且与第一进程编号相对应;若第一判断结果为否,则将第一进程编号和邻接网格的第一网格编号均插入接收集合内,且第一网格编号和第一进程编号相对应。
本实施例中,与当前网格的边相邻的网格即为该当前网格的邻接网格。接收集合内包括多个第一进程编号和每一第一进程编号对应的多个第一网格编号,接收集合的初始值为空。
需要说明的是,当第一进程编号和当前网格的进程编号相同时,或者,当第一进程编号在接收集合内,邻接网格的第一网格编号在接收集合内,且与第一进程编号相对应时,则结束该邻接网格的判断过程。第二个邻接网格的判断过程中,所用的接收集合为第一个邻接网格判断过程结束所得到的接收集合,依次进行每一邻接网格的判断过程后,即可得到最终的接收集合。
(4)判断是否遍历所有的本地网格,得到第二判断结果。
(5)若第二判断结果为是,则以接收集合内的第一进程编号作为进程的接收进程编号,以接收集合内的第一进程编号的总数量作为进程的接收进程数量,以接收集合内的第一网格编号作为进程的接收网格编号,以接收集合内的第一网格编号的总数量作为进程的接收网格数量。
为提高数据访问的连续性,本实施例对接收网格编号进行重新排序,即在得到进程的接收网格编号之后,本实施例的MPI虚拟图拓扑通信方法还包括:按照接收进程编号由小至大且相同接收进程编号下接收网格编号由小至大的顺序,利用二分法对进程的接收网格编号进行排序,利用二分法进行排序,效率较高。
(6)若第二判断结果为否,则按照网格编号由小至大的顺序选取一未被选取的本地网格作为当前网格,以接收集合作为下一循环的接收集合,返回“根据海浪数值模式的网格邻接关系确定当前网格的所有邻接网格”的步骤。
对每一进程执行上述步骤,即可确定每一进程的接收进程编号、接收进程数量、接收网格编号和接收网格数量。
多层通信影区技术是提高某些模式计算效率的方法,即通过增加通信影区的层数,虽增加了每次通信的网格数据量,但可减少通信的次数,综合上减少模式的通信时间。近年来,多层通信影区技术开始在NEMO(Nucleus for European Modelling of theOcean)、HYCOM(HYbrid Coordinate Ocean Model)、MaCOM(Mass Conservation OceanModel)等国内外海浪数值模式上得到应用。但目前海浪数值模式的虚拟图拓扑通信方法并不支持多层通信影区技术,基于此,本实施例通过在确定接收进程编号、接收进程数量、接收网格编号和接收网格数量时考虑多层通信影区网格,以给出支持多层通信影区技术的虚拟图拓扑通信方法。此时,S1可以包括:
(1)对于海浪数值模式的每一进程,根据通信需求确定进程的通信影区的层数,并根据海浪数值模式的网格分区表确定进程上分配的所有本地网格。
进程的通信影区的层数设置因应用而异,当应用的通信次数较少时,可采用1层通信影区,现多数海浪数值模式的通信边界均设置1层通信影区;当应用的通信次数较频繁且模式求解过程多为低阶运算时,可适当增加通信影区的层数,以提高通信效率,但通信影区的层数一般不超过3层。即多层通信影区根据应用特点选择不同的层数,一般为1-3层,故本实施例的进程的通信影区的层数可为1层、2层或3层,该通信影区的层数可由用户自定义。
(2)以进程的第一层通信影区作为当前通信影区,并按照网格编号由小至大的顺序选取一本地网格作为当前网格。
(3)根据海浪数值模式的网格邻接关系和当前通信影区的层数确定当前网格的所有邻接网格;对于每一邻接网格,根据网格分区表确定该邻接网格的第一进程编号,并在第一进程编号和当前网格的进程编号不同时,判断第一进程编号是否在接收集合内,得到第一判断结果;若第一判断结果为是,则判断该邻接网格的第一网格编号是否在接收集合内,且与第一进程编号相对应,若否,则将第一网格编号插入接收集合内,且与第一进程编号相对应;若第一判断结果为否,则将第一进程编号和邻接网格的第一网格编号均插入接收集合内,且第一网格编号和第一进程编号相对应。
其中,根据海浪数值模式的网格邻接关系和当前通信影区的层数确定当前网格的所有邻接网格可以包括:根据海浪数值模式的网格邻接关系,确定位于当前网格的与当前通信影区的层数相同的通信影区内的所有网格,以所有网格作为当前网格的所有邻接网格。举例而言,如图5所示,其为3层通信影区的设计示意图,其中,2-7号网格构成1号网格的第1层通信影区,8-19号网格构成1号网格的第2层通信影区,20-37号网格构成1号网格的第3层通信影区,则在当前通信影区的层数为1层时,当前网格(即1号网格)的所有邻接网格为2-7号网格;在当前通信影区的层数为2层时,当前网格(即1号网格)的所有邻接网格为8-19号网格;在当前通信影区的层数为3层时,当前网格(即1号网格)的所有邻接网格为20-37号网格。
本实施例中,当第一进程编号和当前网格的进程编号相同时,或者,当第一进程编号在接收集合内,邻接网格的第一网格编号在接收集合内,且与第一进程编号相对应时,则结束该邻接网格的判断过程。第二个邻接网格的判断过程中,所用的接收集合为第一个邻接网格判断过程结束所得到的接收集合,依次进行每一邻接网格的判断过程后,即可得到最终的接收集合。
(4)判断是否遍历所有的本地网格,得到第二判断结果。
(5)若第二判断结果为否,则按照网格编号由小至大的顺序选取一未被选取的本地网格作为当前网格,以接收集合作为下一循环的接收集合,返回“根据海浪数值模式的网格邻接关系和当前通信影区的层数确定当前网格的所有邻接网格”的步骤。
(6)若第二判断结果为是,则判断是否遍历进程的所有通信影区,得到第三判断结果。
比如,当通信影区的层数为3层时,则以第一层通信影区、第二层通信影区和第三层通信影区均作为当前通信影区后,才算遍历进程的所有通信影区。
(7)若第三判断结果为是,则以接收集合内的第一进程编号作为进程的接收进程编号,以接收集合内的第一进程编号的总数量作为进程的接收进程数量,以接收集合内的第一网格编号作为进程的接收网格编号,以接收集合内的第一网格编号的总数量作为进程的接收网格数量。
为提高数据访问的连续性,本实施例对接收网格编号进行重新排序,即在得到进程的接收网格编号之后,本实施例的MPI虚拟图拓扑通信方法还包括:按照接收进程编号由小至大且相同接收进程编号下接收网格编号由小至大的顺序,利用二分法对进程的接收网格编号进行排序,利用二分法进行排序,效率较高。
(8)若第三判断结果为否,则以当前通信影区的下一层通信影区作为下一循环的当前通信影区,以接收集合作为下一循环的接收集合,返回“按照网格编号由小至大的顺序选取一本地网格作为当前网格”的步骤。
对每一进程执行上述步骤,即可在考虑多层通信影区的前提下确定每一进程的接收进程编号、接收进程数量、接收网格编号和接收网格数量,后续执行S2-S4,即可提供一种适用于海浪数值模式且支持多层通信影区技术的MPI虚拟图拓扑通信方法。
如图6所示,其为在考虑多层通信影区的前提下确定每一进程的接收进程编号、接收进程数量、接收网格编号和接收网格数量这些接收信息的算法设计示意图,该算法由三层循环构成,最外层循环为遍历通信影区,中间层循环为遍历每个进程上分配的本地网格,最内层循环为遍历每个本地网格的邻接网格。以下将以图5为例,采用程序化的语言对获取任一进程的接收信息的过程进行介绍,便于本领域技术人员进行程序编码。
(1)创建一个二维数组grids,用于存储接收进程编号和接收网格编号,该二维数组的第一维维度为进程总数量,在该维度存储接收进程编号,第二维维度为最大邻接网格数量,在该维度存储接收网格编号,接收进程编号和接收网格编号相对应。该二维数组的创建目的是便于根据进程编号进行网格编号的快速查找和插入。
(2)遍历第一层通信影区,首先遍历1号网格(1号网格即为一本地网格)六条边所连接的2-7号网格(即邻接网格),通过网格分区表判断2-7号网格的进程编号i是否与当前进程编号j(也即1号网格的进程编号)相同,若相同,则跳过当前循环,遍历下一个本地网格。若不相同,则查找二维数组grids中第一维等于i+1的所有第二维元素是否与邻接网格的网格编号一致(二维数组索引最小值从1开始,而进程编号最小值从0开始,故进程编号为0,则在二维数组中对应的索引为1),若一致,则跳过当前循环,遍历下一个本地网格;若不一致,则将不一致的邻接网格的网格编号插入到二维数组grids中,插入位置即第一维等于i+1,第二维等于i+1对应的所有第二维元素数量加1。
(3)当通信影区的层数超过1层时,比如通信影区的层数为3层,此时先遍历第二层通信影区,遍历第二层通信影区的方法与(2)中遍历第一层通信影区的方法一致,然后再遍历第三层通信影区,遍历第三层通信影区的方法与(2)中遍历第一层通信影区的方法一致,遍历不同层通信影区的区别仅在于邻接网格的遍历范围不同,例如,遍历第一层通信影区时,1号网格的邻接网格为2-7号网格;遍历第二层通信影区时,1号网格的邻接网格为8-19号网格;遍历第三层通信影区时,1号网格的邻接网格为20-37号网格;逐层迭代,完成多层通信影区的网格遍历。
(4)遍历二维数组grids,若该二维数组第一维i中存在接收网格编号元素,则将i-1值作为接收进程编号,并存入graph_sources数组中,同时将接收进程数量加1,最终的接收进程数量存入graph_indegree数组中。
(5)为提高数据访问的连续性,需要对接收网格编号进行重新排序,并存在一维数组中。按照接收进程编号由小至大的顺序且相同接收进程编号下接收网格编号由小至大的顺序,对二维数组grids中第二维的接收网格编号进行排序,同时计算接收网格编号的数量,排序的算法选择效率较高的二分法,排序后的接收网格编号存放在一维数组cell_recv_index中,统计的接收网格数量存入一维数组cell_recv_counts中。
具体的,S2可以包括:
(1)控制每一进程将该进程的接收进程编号、接收进程数量、接收网格编号和接收网格数量发送至目标进程,目标进程为海浪数值模式的任一进程,比如目标进程可为0号进程。
(2)将目标进程根据发送进程编号和接收进程编号的对应关系所确定的每一进程的发送进程编号和发送进程数量分别发送至每一进程,将目标进程根据发送网格编号和接收网格编号的对应关系所确定的每一进程的发送网格编号和发送网格数量分别发送至每一进程。
发送进程编号和接收进程编号的对应关系是指,若1号进程为2号进程的接收进程编号,则代表2号进程需要接收1号进程的数据,1号进程则需要向2号进程发送数据,便认为,2号进程为1号进程的发送进程编号,按照这一对应关系,即易于确定每一进程的发送进程编号,统计每一进程的发送进程编号的总数量,即可确定每一进程的发送进程数量。发送网格编号和接收网格编号的对应关系是指,若1号进程为2号进程的接收进程编号,则2号进程即为1号进程的发送进程编号,此时2号进程的所有接收网格编号中,与1号进程相对应的接收网格编号即为1号进程的所有发送网格编号中,与2号进程相对应的发送网格编号,按照这一对应关系,即易于确定每一进程的发送网格编号,统计每一进程的所有发送网格编号的总数量,即可确定每一进程的发送网格数量。
通过上述步骤,即可确定每一进程的发送进程编号、发送进程数量、发送网格编号和发送网格数量。
如图7所示,发送进程编号、发送进程数量、发送网格编号和发送网格数量这些发送信息通过S1计算出的接收进程编号、接收进程数量、接收网格编号和接收网格数量计算出来,为了便于计算,所有进程将接收进程编号、接收进程数量、接收网格编号和接收网格数量发送给目标进程,目标进程根据发送信息和接收信息的一一对应关系,计算出所有进程的发送进程编号、发送进程数量、发送网格编号和发送网格数量,再将计算结果分别发送给每一进程。以下,以目标进程为0号进程为例,以程序化的语言对获取每一进程的发送信息的过程进行介绍,便于本领域技术人员进行程序编码。
(1)由于接收进程数量是一个整数型变量,故该变量通过MPI库中MPI_GATHER接口从所有进程收集到0号进程上。由于接收进程编号和接收网格数量在每个进程上的数量不一致,故这两个数组分别通过MPI库中MPI_GATHERV接口收集到0号进程上。
(2)在计算发送进程数量时,首先创建一维数组graph_outdegree_all,以存储发送进程数量,该一维数组维度等于总进程数,并附初始值0,然后遍历所有接收进程编号i,将i+1作为graph_outdegree_all数组的索引值,将该索引值对应的graph_outdegree_all数组的元素值加1,直到完成所有接收进程编号遍历,i+1对应的元素值即为进程i的发送进程数量。0号进程将graph_outdegree_all数组通过MPI库中MPI_SCATTER接口分发至每个进程的用于存储发送进程数量的graph_outdegree数组中。
(3)发送进程编号和发送网格数量在同一个二层循环中进行计算,最外层循环为遍历所有进程,内层循环为遍历每个进程上的接收进程编号,根据接收进程编号与发送进程编号一一对应的关系,将发送进程编号按由小至大的顺序存入一维数组graph_dests_all中。同时,根据接收网格数量与对应进程的发送网格数量一致的关系,按照发送进程编号的顺序,依次将发送网格数量存入一维数组cell_send_counts_all中。0号进程将graph_dests_all数组和cell_send_counts_all数组通过分别调用MPI库中的MPI_SCATTERV接口分发给所有的进程,每个进程接收的发送进程编号保存于graph_dests数组中,发送网格数量保存于cell_send_counts数组中。
(4)调用MPI库的MPI_GATHERV接口,通过0号进程收集所有进程计算出的接收网格编号。
(5)通过一个二层循环计算发送网格编号,最外层循环为遍历所有进程,内层循环为遍历每个进程上的接收网格编号,利用cell_send_counts_all数组,按照接收网格编号与发送网格编号一一对应的关系,将cell_send_counts_all数组中所对应数量的发送网格编号保存至cell_send_indexes_all数组中。调用MPI库中的MPI_SCATTERV接口,将cell_send_indexes_all数组分发给所有进程,每个进程将发送网格编号保存至cell_send_indexes数组中。
具体的,S3可以包括:
调用MPI库中MPI_DIST_GRAPH_CREATE_ADJACENT(graph_indegree,graph_sources,graph_outdegree,graph_dests,graph_comm,...)接口创建虚拟图通信拓扑,其中graph_indegree为接收进程数量,graph_sources为接收进程编号,graph_outdegree为发送进程数量,graph_dests为发送进程编号,graph_comm为新创建的虚拟图通信拓扑的虚拟图拓扑通信域。
具体的,S4可以包括:控制每一进程均调用MPI虚拟图通信拓扑接口,完成各个进程间的通信,MPI虚拟图通信拓扑接口的参数包括进程的发送缓冲区、接收缓冲区和虚拟图通信拓扑。
其中,对于每一进程,发送缓冲区处理包括:每个进程根据发送网格数量cell_send_counts和发送网格编号cell_send_indexes,将需要发送的变量数据从对应数组中提取并插入到发送缓冲区send_buf中。调用MPI虚拟图通信拓扑接口包括:调用MPI库中MPI_NEIGHBOR_ALLTOALLV(send_buf,recv_buf,graph_comm,...)接口完成单个变量数据的通信,其中,send_buf为发送缓冲区,recv_buf为接收缓冲区,graph_comm为虚拟图拓扑通信域。接收缓冲区处理包括:由于接收数据顺序是先按照进程编号排列,再按变量维度排列,而实际计算时需要全部变量数据按照变量维度进行排序。若变量数据是一维变量,则无需进行接收缓冲区处理。若变量数据是二维变量,则需进行二层循环处理,最外层循环大小为接收进程数量,最内层循环大小为变量数据第二维的维度,根据接收网格编号,将变量数据按照变量维度进行重新排序后存入接收缓冲区。根据需要通信的变量数据的数量,循环执行,直到完成所有变量数据的通信。变量数据可以包括海浪数值模式的浪高、波周期等数据。
本实施例所提供的MPI虚拟图拓扑通信方法,在构建虚拟图通信拓扑后,当海洋数值模式的方程组的求解需要依赖于周边网格的数据,且当前网格和周边网格分布在不同的进程上时,则每一进程调用一次MPI虚拟图通信拓扑接口以完成进程间的数据发送和接收过程,以通过通信来获取周边网格在当前时间迭代步的数据,再计算方程组,从而完成海浪数值预报过程,且利用MPI虚拟图拓扑通信方法进行通信,通信效率高,能够保障业务化海浪数值预报的及时性。
本实施例的海浪数值模式可以为国内自主海浪数值模式FVWAM,FVWAM采用非结构六边形网格,故上述MPI虚拟图拓扑通信方法适用于FVWAM。本实施例将上述MPI虚拟图拓扑通信方法应用于我国自主海浪数值模式FVWAM中,提出一种新型的基于非结构六边形网格的虚拟图通信拓扑构建方法,且支持多层通信影区,可以减少FVWAM模式的通信时间,提高FVWAM模式的运行效率,提升海浪数值预报业务的及时性。
本实施例的MPI虚拟图拓扑通信方法首次应用于国内自主海浪数值模式FVWAM中,相对于国内外海浪数值模式通常采用的点对点通信方法,经实验测试,基于512-4096个进程,本实施例的MPI虚拟图拓扑通信比点对点通信的进程最大通信时间缩短了2.62-3.55倍,进程平均通信时间缩短了3.17-5.37倍,从而证明本实施例的通信方法具有更高的通信效率。
实验测试过程如下:
基于国家超级计算济南中心HPC集群,该集群与通信测试相关的软硬件环境配置如下表1所示,与通信测试相关的FVWAM模式设置如下表2所示。
表1软硬件测试环境配置
表2FVWAM模式测试设置
名称 | 具体设置 |
网格分辨率 | 全球10公里(剔除陆地点) |
网格数 | 6160386个 |
网格边数 | 18481152个 |
方向 | 36个 |
频率 | 35个 |
预报时长 | 1小时 |
测试次数 | 2次 |
时间统计采用Fortran库中的system_clock(clock,rate)函数,其中clock为时钟数,rate为时钟频率,clock和rate均为双精度整数。针对测试使用的国家超级计算济南中心HPC集群,count_rate的值为106,即时钟精度达到1微秒。时间统计方法如下所示:
其中,t表示统计的时间,clock_e为结束时钟数,clock_s为开始时钟数,n为统计的次数。
为减少测试结果受共享网络的影响,尽可能反映算法实际性能,采用多次测试的时间结果进行统计,平均通信时间tavg的计算方法如下所示:
其中,tij表示单个进程上的通信时间,n表示测试次数,m表示进程数量。
最大通信时间tmax的计算方法如下所示:
基于国家超级计算济南中心HPC集群,分别采用虚拟图拓扑通信和点对点通信方法,依次选择512、1024、2048、4096个进程运行FVWAM模式,统计0号进程上的通信时间如图8所示。在采用512、1024、2048和4096个进程时,本实施例提出的虚拟图拓扑通信比点对点通信在0号进程上的时间分别减少了266.52秒、131.41秒、68.44秒和30.98秒,通信效率分别提升了5.59倍、8.13倍、27.73倍和14.18倍。
基于国家超级计算济南中心HPC集群,分别采用虚拟图拓扑通信和点对点通信方法,依次选择512、1024、2048、4096个进程运行FVWAM模式,统计平均通信时间tavg如图9所示,采用本实施例提出的虚拟图拓扑通信方法的平均通信时间均小于点对点通信方法,在采用512、1024、2048和4096个进程时,虚拟图拓扑通信比点对点通信的效率分别提升了5.37倍、4.59倍、4.36倍和3.17倍。
基于国家超级计算济南中心HPC集群,分别采用虚拟图拓扑通信和点对点通信方法,依次选择512、1024、2048、4096个进程运行FVWAM模式,统计最大通信时间tmax如图10所示。节省的模式运行时间取决于所有进程上的最大通信时间,当采用512个进程时,FVWAM运行1小时的海浪预报,采用虚拟图拓扑通信方法比点对点通信方法减少了248.23秒。在采用512、1024、2048和4096个进程时,虚拟图拓扑通信比点对点通信的用时缩短了3.48倍、3.55倍、3.3倍和2.62倍。实验结果表明本实施例提出的虚拟图拓扑通信算法比点对点通信方法具有更高的效率,能够有效减少FVWAM模式运行时间。
实施例2:
本实施例用于提供一种适用于海浪数值模式的MPI虚拟图拓扑通信系统,如图11所示,所述MPI虚拟图拓扑通信系统包括:
接收信息确定模块M1,用于根据海浪数值模式的网格邻接关系和网格分区表,确定所述海浪数值模式的每一进程的接收进程编号、接收进程数量、接收网格编号和接收网格数量;所述网格分区表包括每一网格的进程编号;
发送信息确定模块M2,用于根据发送进程编号和接收进程编号的对应关系以及发送网格编号和接收网格编号的对应关系,确定每一所述进程的发送进程编号、发送进程数量、发送网格编号和发送网格数量;
虚拟图通信拓扑构建模块M3,用于根据所有所述进程的接收进程编号、接收进程数量、发送进程编号和发送进程数量构建虚拟图通信拓扑;
通信模块M4,用于在所述海浪数值模式需要进行数据通信时,基于所述虚拟图通信拓扑调用MPI虚拟图通信拓扑接口,完成各个所述进程间的通信。
本说明书中每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
Claims (8)
1.一种适用于海浪数值模式的MPI虚拟图拓扑通信方法,其特征在于,所述MPI虚拟图拓扑通信方法包括:
根据海浪数值模式的网格邻接关系和网格分区表,确定所述海浪数值模式的每一进程的接收进程编号、接收进程数量、接收网格编号和接收网格数量,具体包括:
对于海浪数值模式的每一进程,根据所述海浪数值模式的网格分区表确定所述进程上分配的所有本地网格;
按照网格编号由小至大的顺序,选取一所述本地网格作为当前网格;
根据所述海浪数值模式的网格邻接关系确定所述当前网格的所有邻接网格;对于每一所述邻接网格,根据所述网格分区表确定所述邻接网格的第一进程编号,并在所述第一进程编号和所述当前网格的进程编号不同时,判断所述第一进程编号是否在接收集合内,得到第一判断结果;若所述第一判断结果为是,则判断所述邻接网格的第一网格编号是否在所述接收集合内,且与所述第一进程编号相对应,若否,则将所述第一网格编号插入所述接收集合内,且与所述第一进程编号相对应;若所述第一判断结果为否,则将所述第一进程编号和所述邻接网格的第一网格编号均插入所述接收集合内,且所述第一网格编号和所述第一进程编号相对应;
判断是否遍历所有的本地网格,得到第二判断结果;
若所述第二判断结果为是,则以所述接收集合内的第一进程编号作为所述进程的接收进程编号,以所述接收集合内的第一进程编号的总数量作为所述进程的接收进程数量,以所述接收集合内的第一网格编号作为所述进程的接收网格编号,以所述接收集合内的第一网格编号的总数量作为所述进程的接收网格数量;
若所述第二判断结果为否,则按照网格编号由小至大的顺序选取一未被选取的本地网格作为当前网格,以所述接收集合作为下一循环的接收集合,返回“根据所述海浪数值模式的网格邻接关系确定所述当前网格的所有邻接网格”的步骤;
所述网格分区表包括每一网格的进程编号;
根据发送进程编号和接收进程编号的对应关系以及发送网格编号和接收网格编号的对应关系,确定每一所述进程的发送进程编号、发送进程数量、发送网格编号和发送网格数量,具体包括:
控制每一所述进程将所述进程的接收进程编号、接收进程数量、接收网格编号和接收网格数量发送至目标进程;所述目标进程为所述海浪数值模式的任一进程;
将所述目标进程根据发送进程编号和接收进程编号的对应关系所确定的每一所述进程的发送进程编号和发送进程数量分别发送至每一所述进程,将所述目标进程根据发送网格编号和接收网格编号的对应关系所确定的每一所述进程的发送网格编号和发送网格数量分别发送至每一所述进程,确定每一所述进程的发送进程编号、发送进程数量、发送网格编号和发送网格数量;
根据所有所述进程的接收进程编号、接收进程数量、发送进程编号和发送进程数量构建虚拟图通信拓扑;
在所述海浪数值模式需要进行数据通信时,基于所述虚拟图通信拓扑调用MPI虚拟图通信拓扑接口,完成各个所述进程间的通信。
2.根据权利要求1所述的MPI虚拟图拓扑通信方法,其特征在于,当所述第一进程编号和所述当前网格的进程编号相同时,或者,当所述第一进程编号在所述接收集合内,所述邻接网格的第一网格编号在所述接收集合内,且与所述第一进程编号相对应时,则结束所述邻接网格的判断过程。
3.根据权利要求1所述的MPI虚拟图拓扑通信方法,其特征在于,在得到所述进程的接收网格编号之后,所述MPI虚拟图拓扑通信方法还包括:按照接收进程编号由小至大且相同接收进程编号下接收网格编号由小至大的顺序,利用二分法对所述进程的接收网格编号进行排序。
4.根据权利要求1所述的MPI虚拟图拓扑通信方法,其特征在于,所述基于所述虚拟图通信拓扑调用MPI虚拟图通信拓扑接口,完成各个所述进程间的通信具体包括:
控制每一所述进程均调用MPI虚拟图通信拓扑接口,完成各个所述进程间的通信;所述MPI虚拟图通信拓扑接口的参数包括所述进程的发送缓冲区、接收缓冲区和所述虚拟图通信拓扑。
5.一种适用于海浪数值模式的MPI虚拟图拓扑通信方法,其特征在于,所述MPI虚拟图拓扑通信方法包括:
根据海浪数值模式的网格邻接关系和网格分区表,确定所述海浪数值模式的每一进程的接收进程编号、接收进程数量、接收网格编号和接收网格数量,具体包括:
对于海浪数值模式的每一进程,根据通信需求确定所述进程的通信影区的层数,并根据所述海浪数值模式的网格分区表确定所述进程上分配的所有本地网格;
以所述进程的第一层通信影区作为当前通信影区,并按照网格编号由小至大的顺序选取一所述本地网格作为当前网格;
根据所述海浪数值模式的网格邻接关系和所述当前通信影区的层数确定所述当前网格的所有邻接网格;对于每一所述邻接网格,根据所述网格分区表确定所述邻接网格的第一进程编号,并在所述第一进程编号和所述当前网格的进程编号不同时,判断所述第一进程编号是否在接收集合内,得到第一判断结果;若所述第一判断结果为是,则判断所述邻接网格的第一网格编号是否在所述接收集合内,且与所述第一进程编号相对应,若否,则将所述第一网格编号插入所述接收集合内,且与所述第一进程编号相对应;若所述第一判断结果为否,则将所述第一进程编号和所述邻接网格的第一网格编号均插入所述接收集合内,且所述第一网格编号和所述第一进程编号相对应;
判断是否遍历所有的本地网格,得到第二判断结果;
若所述第二判断结果为否,则按照网格编号由小至大的顺序选取一未被选取的本地网格作为当前网格,以所述接收集合作为下一循环的接收集合,返回“根据所述海浪数值模式的网格邻接关系和所述当前通信影区的层数确定所述当前网格的所有邻接网格”的步骤;
若所述第二判断结果为是,则判断是否遍历所述进程的所有通信影区,得到第三判断结果;
若所述第三判断结果为是,则以所述接收集合内的第一进程编号作为所述进程的接收进程编号,以所述接收集合内的第一进程编号的总数量作为所述进程的接收进程数量,以所述接收集合内的第一网格编号作为所述进程的接收网格编号,以所述接收集合内的第一网格编号的总数量作为所述进程的接收网格数量;
若所述第三判断结果为否,则以所述当前通信影区的下一层通信影区作为下一循环的当前通信影区,以所述接收集合作为下一循环的接收集合,返回“按照网格编号由小至大的顺序选取一所述本地网格作为当前网格”的步骤;
所述网格分区表包括每一网格的进程编号;
根据发送进程编号和接收进程编号的对应关系以及发送网格编号和接收网格编号的对应关系,确定每一所述进程的发送进程编号、发送进程数量、发送网格编号和发送网格数量,具体包括:
控制每一所述进程将所述进程的接收进程编号、接收进程数量、接收网格编号和接收网格数量发送至目标进程;所述目标进程为所述海浪数值模式的任一进程;
将所述目标进程根据发送进程编号和接收进程编号的对应关系所确定的每一所述进程的发送进程编号和发送进程数量分别发送至每一所述进程,将所述目标进程根据发送网格编号和接收网格编号的对应关系所确定的每一所述进程的发送网格编号和发送网格数量分别发送至每一所述进程,确定每一所述进程的发送进程编号、发送进程数量、发送网格编号和发送网格数量;
根据所有所述进程的接收进程编号、接收进程数量、发送进程编号和发送进程数量构建虚拟图通信拓扑;
在所述海浪数值模式需要进行数据通信时,基于所述虚拟图通信拓扑调用MPI虚拟图通信拓扑接口,完成各个所述进程间的通信。
6.根据权利要求5所述的MPI虚拟图拓扑通信方法,其特征在于,所述进程的通信影区的层数为1层、2层或3层。
7.根据权利要求5所述的MPI虚拟图拓扑通信方法,其特征在于,所述根据所述海浪数值模式的网格邻接关系和所述当前通信影区的层数确定所述当前网格的所有邻接网格具体包括:根据所述海浪数值模式的网格邻接关系,确定位于所述当前网格的与所述当前通信影区的层数相同的通信影区内的所有网格,以所述所有网格作为所述当前网格的所有邻接网格。
8.一种适用于海浪数值模式的MPI虚拟图拓扑通信系统,其特征在于,所述MPI虚拟图拓扑通信系统包括:
接收信息确定模块,用于根据海浪数值模式的网格邻接关系和网格分区表,确定所述海浪数值模式的每一进程的接收进程编号、接收进程数量、接收网格编号和接收网格数量,对于海浪数值模式的每一进程,根据所述海浪数值模式的网格分区表确定所述进程上分配的所有本地网格;
按照网格编号由小至大的顺序,选取一所述本地网格作为当前网格;
根据所述海浪数值模式的网格邻接关系确定所述当前网格的所有邻接网格;对于每一所述邻接网格,根据所述网格分区表确定所述邻接网格的第一进程编号,并在所述第一进程编号和所述当前网格的进程编号不同时,判断所述第一进程编号是否在接收集合内,得到第一判断结果;若所述第一判断结果为是,则判断所述邻接网格的第一网格编号是否在所述接收集合内,且与所述第一进程编号相对应,若否,则将所述第一网格编号插入所述接收集合内,且与所述第一进程编号相对应;若所述第一判断结果为否,则将所述第一进程编号和所述邻接网格的第一网格编号均插入所述接收集合内,且所述第一网格编号和所述第一进程编号相对应;
判断是否遍历所有的本地网格,得到第二判断结果;
若所述第二判断结果为是,则以所述接收集合内的第一进程编号作为所述进程的接收进程编号,以所述接收集合内的第一进程编号的总数量作为所述进程的接收进程数量,以所述接收集合内的第一网格编号作为所述进程的接收网格编号,以所述接收集合内的第一网格编号的总数量作为所述进程的接收网格数量;
若所述第二判断结果为否,则按照网格编号由小至大的顺序选取一未被选取的本地网格作为当前网格,以所述接收集合作为下一循环的接收集合,返回“根据所述海浪数值模式的网格邻接关系确定所述当前网格的所有邻接网格”的步骤;
所述网格分区表包括每一网格的进程编号;
发送信息确定模块,用于根据发送进程编号和接收进程编号的对应关系以及发送网格编号和接收网格编号的对应关系,确定每一所述进程的发送进程编号、发送进程数量、发送网格编号和发送网格数量,具体包括:
控制每一所述进程将所述进程的接收进程编号、接收进程数量、接收网格编号和接收网格数量发送至目标进程;所述目标进程为所述海浪数值模式的任一进程;
将所述目标进程根据发送进程编号和接收进程编号的对应关系所确定的每一所述进程的发送进程编号和发送进程数量分别发送至每一所述进程,将所述目标进程根据发送网格编号和接收网格编号的对应关系所确定的每一所述进程的发送网格编号和发送网格数量分别发送至每一所述进程,确定每一所述进程的发送进程编号、发送进程数量、发送网格编号和发送网格数量;
虚拟图通信拓扑构建模块,用于根据所有所述进程的接收进程编号、接收进程数量、发送进程编号和发送进程数量构建虚拟图通信拓扑;
通信模块,用于在所述海浪数值模式需要进行数据通信时,基于所述虚拟图通信拓扑调用MPI虚拟图通信拓扑接口,完成各个所述进程间的通信。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310091778.7A CN116319364B (zh) | 2023-02-10 | 2023-02-10 | 适用于海浪数值模式的mpi虚拟图拓扑通信方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310091778.7A CN116319364B (zh) | 2023-02-10 | 2023-02-10 | 适用于海浪数值模式的mpi虚拟图拓扑通信方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116319364A CN116319364A (zh) | 2023-06-23 |
CN116319364B true CN116319364B (zh) | 2024-02-09 |
Family
ID=86821348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310091778.7A Active CN116319364B (zh) | 2023-02-10 | 2023-02-10 | 适用于海浪数值模式的mpi虚拟图拓扑通信方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116319364B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102707932A (zh) * | 2012-05-16 | 2012-10-03 | 清华大学 | 一种用于地球系统模式的并行耦合方法 |
WO2021169393A1 (zh) * | 2020-02-28 | 2021-09-02 | 清华大学 | 一种并行通信路由建立方法及系统 |
-
2023
- 2023-02-10 CN CN202310091778.7A patent/CN116319364B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102707932A (zh) * | 2012-05-16 | 2012-10-03 | 清华大学 | 一种用于地球系统模式的并行耦合方法 |
WO2021169393A1 (zh) * | 2020-02-28 | 2021-09-02 | 清华大学 | 一种并行通信路由建立方法及系统 |
Non-Patent Citations (1)
Title |
---|
基于MPI的LAGFD-WAM海浪数值模式并行算法研究;王关锁;乔方利;杨永增;;海洋科学进展(04);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116319364A (zh) | 2023-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106102079B (zh) | 基于改进pso的c-ran载波迁移资源需求预测方法 | |
CN104635258B (zh) | 一种应用cpu‑gpu平台进行地震波逆时偏移成像方法 | |
CN117078048A (zh) | 基于数字孪生的智慧城市资源管理方法及系统 | |
CN105357637B (zh) | 一种位置和行为信息预测系统及方法 | |
CN112181659A (zh) | 云仿真内存资源预测模型构建方法与内存资源预测方法 | |
CN116319364B (zh) | 适用于海浪数值模式的mpi虚拟图拓扑通信方法及系统 | |
CN113688542A (zh) | 智能优化水资源配置方法、装置、计算机设备及存储介质 | |
CN106020732A (zh) | 节点的磁盘空间确定方法及系统 | |
CN112559952A (zh) | 基于序列分层的异构众核快速傅里叶变换方法 | |
Huang et al. | A grid and density based fast spatial clustering algorithm | |
CN109033603B (zh) | 基于源流路径链的智能变电站二次系统仿真方法 | |
CN111884254B (zh) | 基于双重随机模拟的分布式光伏消纳接入方法及装置 | |
CN114422605A (zh) | 一种基于联邦学习的通信梯度自适应压缩方法 | |
CN113009274B (zh) | 基于ielm算法的配电网故障区段定位方法及系统 | |
CN117892769B (zh) | 神经网络训练方法、显存调度方法、系统、设备和产品 | |
CN109460906A (zh) | 一种新能源汽车充换电管理平台的设计方法 | |
CN115114028B (zh) | 一种电力仿真二次控制的任务分配方法及装置 | |
CN117251276B (zh) | 一种面向协作学习平台的灵活调度方法及装置 | |
CN114490047B (zh) | 一种核燃料裂变气体团簇动力学模拟的异构数据传输方法 | |
CN111967590B (zh) | 面向推荐系统矩阵分解方法的异构多xpu机器学习系统 | |
CN117556288A (zh) | 一种基于物联网的物理空间管理系统及方法 | |
Hirtz | Check for updates Coupe: A Modular, Multi-threaded Mesh Partitioning Platform | |
CN118445074A (zh) | 一种支持异构ai框架的分布式自动并行计算方法及系统 | |
CN117291237A (zh) | 数据流映射搜索方法、系统、电子设备及存储介质 | |
CN116307113A (zh) | 基于双层划分的电力系统稀疏三角矩阵求解方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |