掌桥专利:专业的专利平台
掌桥专利
首页

基于MPI的多进程的数据交互方法以及相关装置

文献发布时间:2024-04-18 19:53:33


基于MPI的多进程的数据交互方法以及相关装置

技术领域

本发明属于电磁学领域,尤其涉及一种基于MPI的多进程的数据交互方法以及相关装置。

背景技术

电磁学理论的研究可以归纳为Maxwell方程组在各种条件下的求解问题。在电磁学研究早期,很长时间内,研究人员的主要精力放在电磁问题的解析解上。然而,可以得到解析解的电磁问题非常有限,且一般都有严格的限定条件。于是人们开始研究近似解和数值方法,以满足生产实践中亟待解决的电磁问题。在计算机未发明之前,前人逐步发展了一些有效的近似方法,如变分法、扰动法、级数展开法和渐进法等,但依然难以处理复杂问题。自20世纪60年代以来,随着计算机在科研领域的应用。计算电磁学中的数值算法得到快速发展,例如差分算法用差分代替微分,用数值解逼近真实解,几乎不受外界条件限制,可以解决复杂的电磁问题。

时域非连续伽略金法(Discontinuous Galerkin Time Domain,DGTD)具备非结构网格的优势,可以处理复杂介质。DGTD具备显式迭代的特点,又可以在非结构网格内支持高阶基函数以提高计算精度。十余年来,DGTD作为一种新兴算法,在计算电磁学中快速兴起。该算法对Maxwell方程采用伽略金加权法得到弱解形式,放松了单元之间的边界条件,单元之间通过数值通量联系交换数据。可以采用三角形、四边形、四面体或六面体等作为网格单元,可以采用结点或者矢量基函数,需要高精度时采用高阶基函数,对精度要求低时采用低阶基函数。这些特点使得DGTD可以灵活的分析复杂几何问题、复杂介质问题和多尺度问题。

DGTD的计算流程中每一个单元(四面体)之间进行独立的小矩阵方程计算,小矩阵方程的维数固定。在全域看来它能够显式迭代,计算复杂度随未知量个数线性增长。由于数据交换只发生在相邻单元间,使得并行DGTD算法适用于MPI类型的并行改造。。

经过十余年的发展DGTD已经取得了相当的进展,但DGTD毕竟是一种有限元算法,其并行设计并不简单,电磁领域越来越注重电大尺寸问题、复杂色散介质等求解,对DGTD并行算法进行深入研究具有重要的应用价值。但是DGTD并行算法中进程之间数据的交互实现难度较大。

发明内容

本发明提供一种基于MPI的多进程的数据交互方法以及相关装置,该方法能够快速进行进程之间数据交互,提高算法计算效率。

第一方面,本申请提供一种基于MPI的多进程的数据交互方法,包括:第一进程利用第二进程中每一单元的发送编号将每一单元需要发送的待传输数据进行打包,得到传输数据包;将所述传输数据包发送至所述第二进程。

其中,所述第一进程利用第二进程中每一单元的编号将每一单元需要发送的待传输数据进行打包,得到传输数据包的步骤之前,还包括:所述第一进程计算所述第二进程中的每一单元的发送编号。

其中,所述将所述传输数据包发送至所述第二进程的步骤之后,还包括:所述第二进程基于所述第一进程中每一单元的接收编号对所述传输数据包进行解包,以得到所述待传输数据。

其中,所述第二进程基于所述第一进程中每一单元的接收编号对所述传输数据包进行解包,以得到所述待传输数据的步骤之前,还包括:所述第一进程计算所述第一进程中每一单元的接收编号,并将所述接收编号发送至所述第二进程。

其中,所述待传输数据包括电场数据或磁场数据。

其中,所述第二进程基于所述第一进程中每一单元的接收编号对所述传输数据包进行解包,以得到所述待传输数据的步骤之后,还包括:基于所述待传输数据确定电磁场分布随时间变化情况。

其中,所述方法还包括:采用Gmsh进行网格区分,以得到所述第一进程和所述第二进程。

第二方面,本申请还提供一种基于MPI的多进程的数据交互装置,包括:打包模块和发送模块,所述第一进程基于所述打包模块利用第二进程中每一单元的发送编号将每一单元需要发送的待传输数据进行打包,得到传输数据包;并基于所述发送模块将所述传输数据包发送至所述第二进程。

第三方面,本申请提供一种电子设备,所述电子设备包括处理器及存储器,其中,所述存储器用于存储实现任意一项所述的数据交互方法的构建方法的程序指令;所述处理器用于执行所述存储器存储的所述程序指令。

第四方面,本申请提供一种存储介质,存储有程序文件,所述程序文件能够被执行以实现任意一项所述的数据交互方法。

本发明的数据交易方法,通过第一进程利用第二进程中每一单元的发送编号将每一单元需要发送的待传输数据进行打包,得到传输数据包;将所述传输数据包发送至所述第二进程。该方法能够快速进行进程之间数据交互,提高算法计算效率。

附图说明

图1是本发明本发明基于MPI的多进程的数据交互方法的第一实施例的流程示意图;

图2是M进程和N进程的示意图;

图3是本发明本发明基于MPI的多进程的数据交互装置的一实施例的结构示意图;

图4是本发明电子设备的一实施例的结构示意图;

图5是本发明存储介质的一实施例的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

请参见图1,图1为本发明基于MPI的多进程的数据交互方法的一实施例的流程示意图,具体包括:

步骤S11:第一进程利用第二进程中每一单元的发送编号Face_out将每一单元需要发送的待传输数据进行打包,得到传输数据包。

DGTD采用非结构网格,网格离散软件给出的单元编号为一维结构,从1,2,3,4开始编号。为了将计算任务分配到MPI进程上,需要对网格进行分区。分区之后每个进程除了本进程必不可少的计算任务之外,还需要建立相邻进程的数据通信缓存,进行数据交换以保证时域迭代计算的正常进行。在计算结束后,还需要对各进程的数据(如外推数据)进行汇总,将其收集到主进程输出计算结果。

具体的,可以采用Gmsh(有限元网格生成器)对模型进行网格区分,以得到所述第一进程和所述第二进程。可以理解的第一进程可以包括多个进程,第二进程可以包括多个进程。本申请所述的第一和第二不是以数量二界限进行分割。具体的,在本申请中,第一进程可以看作发送数据的进程,第二进程可以看作接收数据的进程。例如M进程和N进程,M进程要向N进程发送数据,那么可将M进程看作第一进程,而将N进程看作第二进程。进一步的,每一进程中包括1个或多个单元,如图2所示,进程M中包括单元P和单元R,进程N中包括单元Q。设单元P在进程M内部,与位于进程M内的单元R相邻,同时与位于进程N的单元Q相邻。迭代计算时单元R与P的相邻面上的数据由于位于同一进程内,可以直接读取。而单元Q和单元P的相邻面数据则需要进行通信。

本申请第一进程利用第二进程中每一单元的发送编号Face_out将每一单元需要发送的待传输数据进行打包,得到传输数据包。具体的,第一进程需要利用第二进程中每一单元的发送编号Face_out进行数据打包,因此第一进程需要计算第二进程中每一单元的发送编号Face_out。

步骤S12:将所述传输数据包发送至所述第二进程。

第一进程将待传输数据打包后,得到传输数据包,将出传输数据包发送至第二进程。

进一步的,所述第二进程基于所述第一进程中每一单元的接收编号Face_in对所述传输数据包进行解包,以得到所述待传输数据。

具体的,由于第二进程需要基于第一进程中每一单元的接收编号Face_in对传输数据包进行解包,因此所述第一进程需要计算所述第一进程中每一单元的接收编号Face_in,并将所述接收编号Face_in发送至所述第二进程。

例如有4个进程(0~3编号)。以0号进程为第一进程,1,2,3为第二进程,则需要判断1,2,3中每一单元的发送编号Face_out,这些数据将存储在0号进程内存中。还需计算0号进程中每一单元的接收编号Face_in,将其发送至1,2,3。类似的以1号进程为第一进程,0,2,3为第二进程,则需要判断0,2,3中每一单元的发送编号Face_out,这些数据将存储在1号进程内存中。还需计算1号进程中每一单元的接收编号Face_in,将其发送至0,2,3。其他以此类推。

在一实施例中,以第一进程为M进程,第二进程为N进程为例进行说明,Face_out代表N进程中每一单元的发送编号,用于数据打包。Face_in代表M进程中每一单元的接收编号,在M进程计算后发送至N进程,用于解包。

在一实施例中,第一进程和第二进程相邻,也即本申请的方法可以实现相邻进程之间的数据交互。

在一实施例中,所述待传输数据包括电场数据或磁场数据。

实施例一,以待传输数据包括电场数据为例进行说明:

步骤S1:所述第一进程计算所述第二进程中的每一单元的发送编号Face_out。所述第一进程计算所述第一进程中每一单元的接收编号Face_in,并将所述接收编号Face_in发送至所述第二进程。

步骤S2:第一进程利用第二进程中每一单元的发送编号Face_out将每一单元需要发送的电场数据进行打包,得到传输数据包,传输数据包如下表(1)所示。

表(1)

步骤S3:将所述传输数据包发送至所述第二进程。

步骤S4:所述第二进程基于所述第一进程中每一单元的接收编号Face_in对所述传输数据包进行解包,以得到电场数据。

第二进程接收到数据后需要进行解包,具体的,依据所述第一进程中每一单元的接收编号Face_in对所述传输数据包进行解包,具体如下表(2)所示。

表(2)

实施例二,以待传输数据包括磁场数据为例进行说明:

步骤S1:所述第一进程计算所述第二进程中的每一单元的发送编号Face_out。所述第一进程计算所述第一进程中每一单元的接收编号Face_in,并将所述接收编号Face_in发送至所述第二进程。

步骤S2:第一进程利用第二进程中每一单元的发送编号Face_out将每一单元需要发送的磁场数据进行打包,得到传输数据包,传输数据包如下表(3)所示。

表(3)

步骤S3:将所述传输数据包发送至所述第二进程。

步骤S4:所述第二进程基于所述第一进程中每一单元的接收编号Face_in对所述传输数据包进行解包,以得到所述磁场数据。

第二进程接收到数据后需要进行解包,具体的,依据所述第一进程中每一单元的接收编号Face_in对所述传输数据包进行解包,具体如下表(4)所示。

表(4)

进一步的,如上述实施例一和实施例二所示的方式,实现多个进程之间电场数据或者磁场数据的交互,在交互完成后,可以基于所述待传输数据(例如电场数据或者磁场数据)确定电磁场分布随时间变化情况。具体的,基于DGTD逐步迭代求得计算域中电磁场分布随时间变化的情况。

DGTD时域迭代计算式

麦克斯韦旋度方程可写为

式中μ为磁导系数,E和H分别为电场强度矢量与磁场强度矢量,D为电位移矢量。

DGTD对应的半离散公式为

(2)式为单个四面体的偏微分矩阵方程,在计算中需要遍历所有四面体求解。规定E、J

将(3)式整理,可得

/>

(4)式中电场和磁场在时间上交替采样,相差半个时间步(n代表整数,n+1/2代表半整数),可以实现显式迭代运算。由初始的激励源与边界条件,就可以利用DGTD逐步迭代求得计算域中电磁场分布随时间变化的情况。(4)式中需要与相邻单元交互的数据是

为简化表述,(5)式略去时间上标,(5)式中H

本申请中,解包后得到的电场数据和磁场数据如上述式(5)所示,进一步可执行上述式(4)确定电磁场分布随时间变化情况。

本申请的基于MPI的多进程的数据交互方法鉴于四面体编号为一维结构不易数据交互,设计了一种打包解包方案,将电磁场数据在并行计算时先打包,然后在进程之间快速交换,最后解包的流程完成了并行计算。此方法计算效率很好。

请参见图3,图3为本申请基于MPI的多进程的数据交互装置的一实施例的结构示意图,具体包括:打包模块31和发送模块32。其中,所述第一进程基于所述打包模块31利用第二进程中每一单元的发送编号Face_out将每一单元需要发送的待传输数据进行打包,得到传输数据包;并基于所述发送模块32将所述传输数据包发送至所述第二进程。

在一实施例中,所述第一进程还基于打包模块31计算所述第二进程中的每一单元的发送编号Face_out。

在一实施例中,基于MPI的多进程的数据交互装置还包括解包模块,所述第二进程利用解包模块基于所述第一进程中每一单元的接收编号Face_in对所述传输数据包进行解包,以得到所述待传输数据。进一步的,所述第一进程还基于解包模块计算所述第一进程中每一单元的接收编号,并将所述接收编号发送至所述第二进程。

所述待传输数据包括电场数据或磁场数据。

解包模块还用于基于所述待传输数据确定电磁场分布随时间变化情况。

本申请的基于MPI的多进程的数据交互装置鉴于四面体编号为一维结构不易数据交互,设计了一种打包解包方案,将电磁场数据在并行计算时先打包,然后在进程之间快速交换,最后解包的流程完成了并行计算。此方法计算效率很好。

请参见图4,图3为本申请电子设备的一实施例的结构示意图,包括相互连接的存储器52和处理器51。

存储器52用于存储实现上述任意一项的方法的程序指令。

处理器51用于执行存储器52存储的程序指令。

其中,处理器51还可以称为CPU(Central Processing Unit,中央处理单元)。处理器51可能是一种集成电路芯片,具有信号的处理能力。处理器51还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

存储器52可以为内存条、TF卡等,可以存储智能终端中全部信息,包括输入的原始数据、计算机程序、中间运行结果和最终运行结果都保存在存储器中。它根据控制器指定的位置存入和取出信息。有了存储器,智能终端才有记忆功能,才能保证正常工作。智能终端中的存储器按用途存储器可分为主存储器(内存)和辅助存储器(外存),也有分为外部存储器和内部存储器的分类方法。外存通常是磁性介质或光盘等,能长期保存信息。内存指主板上的存储部件,用来存放当前正在执行的数据和程序,但仅用于暂时存放程序和数据,关闭电源或断电,数据会丢失。

在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,系统服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。

请参阅图5,为本发明存储介质的结构示意图。本申请的存储介质存储有能够实现上述所有方法的程序文件61,其中,该程序文件61可以以软件产品的形式存储在上述存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储装置包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。

以上仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

技术分类

06120116339291