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

一种基于分布式内存架构的多核并行时域仿真方法

文献发布时间:2023-06-19 18:37:28


一种基于分布式内存架构的多核并行时域仿真方法

技术领域

本申请涉及仿真技术领域,特别是涉及一种基于分布式内存架构的多核并行时域仿真方法、装置、计算机设备、存储介质和计算机程序产品。

背景技术

在电力系统机电时域仿真中,需要反复多次迭代求解雅克比矩阵更新任务,而传统的电力系统机电时域仿真方法,将雅可比矩阵作为一个整体,来反复多次迭代更新,在计算任务量大时,计算效率低。

发明内容

基于此,有必要针对上述技术问题,提供一种基于分布式内存架构的多核并行时域仿真方法、装置、计算机设备、存储介质和计算机程序产品。

本申请提供一种基于分布式内存架构的多核并行时域仿真方法,所述方法包括:

基于电力系统中各元件的状态变量与代数变量,构建所述电力系统在t时刻的微分方程组与代数方程组;

利用联立求解的隐式梯形法,对所述微分方程组与代数方程组进行处理,得到雅可比矩阵方程;其中,所述雅可比矩阵方程的等式一边包括残差向量,另一边包括雅可比矩阵;

利用各元件的状态变量数值与代数变量数值,对所述雅可比矩阵方程进行多次迭代更新;其中,在每次迭代时,对雅克比矩阵进行更新;在第一次迭代更新前,以元件为单位拆分所述雅可比矩阵的更新任务,得到多个子更新任务,不同的子更新任务对应不同的元件,且多个子更新任务被分配给多个核心并行执行;

其中,在所述多次迭代更新中,判断每一次迭代的残差向量表示的残差是否满足收敛条件;

若本次判断结果为满足,则停止迭代更新,并将本次迭代更新所用的各元件的状态变量数值与代数变量数值,对所述电力系统进行t+1时刻的时域仿真。

本申请提供一种基于分布式内存架构的多核并行时域仿真装置,所述装置包括:

方程构建模块,用于基于电力系统中各元件的状态变量与代数变量,构建所述电力系统在t时刻的微分方程组与代数方程组;

矩阵方程获得模块,用于利用联立求解的隐式梯形法,对所述微分方程组与代数方程组进行处理,得到雅可比矩阵方程;其中,所述雅可比矩阵方程的等式一边包括残差向量,另一边包括雅可比矩阵;

迭代更新模块,用于利用各元件的状态变量数值与代数变量数值,对所述雅可比矩阵方程进行多次迭代更新;其中,在每次迭代时,对雅克比矩阵进行更新;在第一次迭代更新前,以元件为单位拆分所述雅可比矩阵的更新任务,得到多个子更新任务,不同的子更新任务对应不同的元件,且多个子更新任务被分配给多个核心并行执行;其中,用于在所述多次迭代更新中,判断每一次迭代的残差向量表示的残差是否满足收敛条件;

时域仿真模块,用于若本次判断结果为满足,则停止迭代更新,并将本次迭代更新所用的各元件的状态变量数值与代数变量数值,对所述电力系统进行t+1时刻的时域仿真。

本申请提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行上述方法。

本申请提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行上述方法。

本申请提供一种计算机程序产品,其上存储有计算机程序,所述计算机程序被处理器执行上述方法。

上述基于分布式内存架构的多核并行时域仿真方法、装置、计算机设备、存储介质和计算机程序产品,基于电力系统中各元件的状态变量与代数变量,构建所述电力系统在t时刻的微分方程组与代数方程组,利用联立求解的隐式梯形法,对所述微分方程组与代数方程组进行处理,得到雅可比矩阵方程,其中,所述雅可比矩阵方程的等式一边包括残差向量,另一边包括雅可比矩阵,利用各元件的状态变量数值与代数变量数值,对所述雅可比矩阵方程进行多次迭代更新,其中,在每次迭代时,对雅克比矩阵进行更新;在第一次迭代更新前,以元件为单位拆分所述雅可比矩阵的更新任务,得到多个子更新任务,不同的子更新任务对应不同的元件,这样,就实现了对于雅可比矩阵更新任务的拆分,且多个子更新任务被分配给多个核心并行执行,其中,在所述多次迭代更新中,判断每一次迭代的残差向量表示的残差是否满足收敛条件,若本次判断结果为满足,则停止迭代更新,并将本次迭代更新所用的各元件的状态变量数值与代数变量数值,对所述电力系统进行t+1时刻的时域仿真。

这样,通过对于雅可比矩阵更新任务进行拆分,同时利用多个核心对于拆分得到的子更新任务进行并行计算,大幅提升了对与雅克比矩阵更新任务的计算效率与电力系统机电时域仿真的速度。

附图说明

图1为一个实施例中基于分布式内存架构的多核并行时域仿真方法的流程示意图;

图2为一个实施例中基于分布式内存架构的多核并行时域仿真方法的流程示意图;

图3为一个实施例中基于分布式内存架构的多核并行时域仿真方法的效果示意图;

图4为一个实施例中基于分布式内存架构的多核并行时域仿真装置的结构框图;

图5为一个实施例中计算机设备的内部结构图。

具体实施方式

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

在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本申请所描述的实施例可以与其它实施例相结合。

在一个实施例中,如图1所示,提供了一种基于分布式内存架构的多核并行时域仿真的方法,该方法可以由计算机设备执行,包括以下步骤:

步骤S101,基于电力系统中各元件的状态变量与代数变量,构建所述电力系统在t时刻的微分方程组与代数方程组。

上述t时刻是指任意时刻,对于某一时刻电力系统机电时域稳定仿真也可称暂态仿真,实际上是描述系统从故障起始到故障切除后数秒内的系统短期动态,而系统由多个元件构成,为了描述系统从故障起始到故障切除后数秒内的系统短期动态,就需要知道电力系统中各元件从故障起始到故障切除后数秒内的短期动态。

此时就需要求解描述电力系统的微分方程组与描述电力系统的代数方程组,微分方程组的形式为:

步骤S102,利用联立求解的隐式梯形法,对所述微分方程组与代数方程组进行处理,得到雅可比矩阵方程;其中,所述雅可比矩阵方程的等式一边包括残差向量,另一边包括雅可比矩阵。

利用联立求解的隐式梯形法,对所述微分方程组与代数方程组进行处理,可以得到第K次迭代需要求解的雅可比矩阵方程,雅可比矩阵方程为:

残差向量用于判断迭代还需不要继续进行,当残差向量表示的残差满足收敛条件时,迭代更新停止,即上式经迭代求解得到新的迭代修正量

步骤S103,利用各元件的状态变量数值与代数变量数值,对所述雅可比矩阵方程进行多次迭代更新;其中,在每次迭代时,对雅克比矩阵进行更新;在第一次迭代更新前,以元件为单位拆分所述雅可比矩阵的更新任务,得到多个子更新任务,不同的子更新任务对应不同的元件,且多个子更新任务被分配给多个核心并行执行;其中,在所述多次迭代更新中,判断每一次迭代的残差向量表示的残差是否满足收敛条件。

在雅可比矩阵中的A=[A

那么根据微分方程对于状态变量的偏微分位于雅可比矩阵的左上方即雅可比矩阵中的A,微分方程对于代数变量的偏微分位于雅可比矩阵的右上方即雅可比矩阵中的B,代数方程对于状态变量的偏微分位于雅可比矩阵的左下方即雅可比矩阵中的C,代数方程对于代数变量的偏微分位于雅可比矩阵的右下方即雅可比矩阵中的D,从所述雅克比矩阵中,提取对应于同一元件的微分方程对于状态变量的偏微分、微分方程对于代数变量的偏微分、代数方程对于状态变量的偏微分、以及代数方程对于代数变量的偏微分,就可以得到对应于所述同一元件的子更新任务。对每一个元件的子更新任务采用分布式内存架构进行存储,即根据内存地址表将同一元件的子更新任务存储在同一地址中,每一个子更新任务分配一个线程,每个线程分配一个核心以对于子更新任务进行并行计算,将计算的结果更新至雅可比矩阵。

结合图2进行说明:例如,在第一次迭代开始前,对于发电机a,根据发电机a的微分方程对于状态变量的偏微分位于雅可比矩阵左上方的A,即Aa;根据发电机a的微分方程对于代数变量的偏微分位于雅可比矩阵右上方的B,即Ba;根据发电机a的代数方程对于状态变量的偏微分位于雅可比矩阵左下方的C,即Ca;根据发电机a的代数方程对于代数变量的偏微分位于雅可比矩阵右下方的D,即Da,提取出发电机a的子更新任务并存储在地址1中,对发电机a的子更新任务1分配一个线程1,线程1自动分配一个核心1以对于子更新任务1进行计算,在每一次迭代前只需要将对应的状态变量Xa与代数变量Ya赋值到地址1中,就可以由核心1计算出子更新任务1的结果,然后将计算的结果更新至雅可比矩阵。对于发电机b、负载c、逆变器n-1和电力网络n都采用同样的方法同时进行拆分和计算。

当雅可比矩阵中的所有元件对应的子更新任务都执行完毕,则一次迭代就完成,在一次迭代完成后,会对于迭代的残差向量表示的残差是否满足收敛条件进行判断,收敛条件为残差是否收敛为0,当满足收敛条件时,则停止迭代,本次迭代更新所用的各元件的状态变量数值与代数变量数值即为t时刻的计算结果,并将本次迭代更新所用的各元件的状态变量数值与代数变量数值作为t+1时刻仿真计算的第一次迭代所用各元件的状态变量数值与代数变量数值。

步骤S104,若本次判断结果为满足,则停止迭代更新,并将本次迭代更新所用的各元件的状态变量数值与代数变量数值,对所述电力系统进行t+1时刻的时域仿真。

上述的t+1时刻中的“1”为时间间隔,即t时刻的下一时刻。

上述一种基于分布式内存架构的多核并行时域仿真方法中,基于电力系统中各元件的状态变量与代数变量,构建所述电力系统在t时刻的微分方程组与代数方程组,利用联立求解的隐式梯形法,对所述微分方程组与代数方程组进行处理,得到雅可比矩阵方程,其中,所述雅可比矩阵方程的等式一边包括残差向量,另一边包括雅可比矩阵,利用各元件的状态变量数值与代数变量数值,对所述雅可比矩阵方程进行多次迭代更新,其中,在每次迭代时,对雅克比矩阵进行更新;在第一次迭代更新前,以元件为单位拆分所述雅可比矩阵的更新任务,得到多个子更新任务,不同的子更新任务对应不同的元件,这样,就实现了对于雅可比矩阵更新任务的拆分,且多个子更新任务被分配给多个核心并行执行,其中,在所述多次迭代更新中,判断每一次迭代的残差向量表示的残差是否满足收敛条件,若本次判断结果为满足,则停止迭代更新,并将本次迭代更新所用的各元件的状态变量数值与代数变量数值,对所述电力系统进行t+1时刻的时域仿真。

这样,通过对于雅可比矩阵更新任务进行拆分,同时利用多个核心对于拆分得到的子更新任务进行并行计算,大幅提升了对与雅克比矩阵更新任务的计算效率与电力系统机电时域仿真的速度。

在一个实施例中,所述雅可比矩阵的等式另一边还包括:迭代修正量;

在所述多次迭代更新中,判断每一次迭代的残差向量表示的残差是否满足收敛条件之后,所述方法还包括:若本次不满足,则利用本次迭代更新得到的残差向量以及本次迭代更新得到的雅克比矩阵,得到本次迭代更新的迭代修正量;利用本次迭代更新的迭代修正量,修正本次迭代更新所用的各元件的状态变量值与代数变量值,得到下次迭代更新所用的各元件的状态变量值与代数变量值。

迭代修正量的表达式为

在一个实施例中,首次迭代更新所用的各元件的状态变量数值与代数变量数值为预设的。

各元件都有对应的状态变量与代数变量,用于描述各元件的短期动态,参考图2,发电机元件a有其对应的状态变量Xa与代数变量Ya,发电机b有其对应的状态变量Xb与代数变量Yb,负载c、逆变器n-1和电力网络n也都有各自对应的状态变量与代数变量,在多次迭代求解雅可比矩阵方程的过程中,实际就是通过先预设各元件的状态变量与代数变量的数值,经过多次迭代更新不断求解到趋于准确的各元件对应的状态变量与代数变量的数值。

在一个实施例中,以元件为单位拆分所述雅可比矩阵的更新任务,得到多个子更新任务,包括:

根据微分方程对于状态变量的偏微分位于雅可比矩阵的左上方,微分方程对于代数变量的偏微分位于雅可比矩阵的右上方,代数方程对于状态变量的偏微分位于雅可比矩阵的左下方,代数方程对于代数变量的偏微分位于雅可比矩阵的右下方,从所述雅克比矩阵中,提取对应于同一元件的微分方程对于状态变量的偏微分、微分方程对于代数变量的偏微分、代数方程对于状态变量的偏微分、以及代数方程对于代数变量的偏微分,得到对应于所述同一元件的子更新任务。

结合图2进行说明:例如,在第一次迭代开始前,对于发电机a,根据发电机a的微分方程对于状态变量的偏微分位于雅可比矩阵的左上方A,即Aa;根据发电机a的微分方程对于代数变量的偏微分位于雅可比矩阵的右上方B,即Ba;根据发电机a的代数方程对于状态变量的偏微分位于雅可比矩阵的左下方的C,即Ca;根据发电机a的代数方程对于代数变量的偏微分位于雅可比矩阵右下方的D,即Da,提取出发电机a的子更新任务。

对于发电机b、负载c、逆变器n-1和电力网络n都采用同样的方法提取出各自的子更新任务,就实现了将雅可比矩阵的更新任务拆分成了以元件为单位的子更新任务的效果。

在一个实施例中,多个子更新任务被分配给多个核心并行执行,包括:

当子更新任务的个数大于分配的核心个数时,给每个核心分配一个子更新任务;当其中一个核心相比于其它核心先执行完对应的子更新任务时,给所述其中一个核心分配新的子更新任务,直到所述多个子更新任务执行完毕。

结合图2进行说明,例如,有多个子更新任务,发电机a的子更新任务、发电机b的子更新任务和负载c的子更新任务,假设此时只有2个线程,线程1和线程2,线程1分配一个核心1,并将发电机a的子更新任务分配给核心1执行,线程2分配一个核心2,并将发电机b的子更新任务分配给核心2执行,若核心1先执行完发电机a的子更新任务,直接将负载c的子更新任务分配给核心1执行。

具体的执行过程为:以发电机a的子更新任务为例,在提取出发电机a的子更新任务后存储在地址1中,对发电机a的子更新任务1分配一个线程1,线程1自动分配一个核心1以对于子更新任务1进行计算,在每一次迭代前只需要将对应的状态变量Xa与代数变量Ya赋值到地址1中,就可以由核心1计算出子更新任务1的结果,然后将计算的结果更新至雅可比矩阵,对于发电机b、负载c、逆变器n-1和电力网络n的子更新任务都采用同样的方法同时进行计算。

这样,可以使所有的核心一直处于工作状态,实现动态的负载平衡,以使对于子更新任务的执行更加的快速、高效。

在一个实施例中,多个子更新任务被分配给多个核心并行执行,包括:

当子更新任务的个数等于分配的核心个数时,给每个核心分配一个子更新任务,以使所述多个子更新任务被执行完毕。

为了更好地理解上述方法,以下详细阐述一个本申请基于分布式内存架构的多核并行时域仿真方法的应用实例。

在电力系统仿真计算中电磁暂态模拟使用电力设备的高精度模型,大量的复杂的模型会极大增加待求解方程的数量,同时这些模型通常需要较小的时间步长,因此计算密集。当使用为传统计算机(单CPU)而构建的仿真软件执行此类分析时,需要很长时间。随着多处理器计算机技术及的进步以及此类计算机成为商品硬件,电力系统仿真软件需要能够利用多核心计算能力以提高计算效率。

并行计算有几种模型,例如基于共享内存的并行编程和基于分布式内存的并行编程。在前者中(共享内存架构),许多处理器使用相同的共享内存。在后者中(分布式内存架构)每个处理器都有自己的内存。

由于后者更为常见,并且更加容易将其应用于拥有庞大处理器及内存资源的云计算场景,故本专利拟采用此架构。分布式内存计算的并行过程是通过多个进程(执行多线程)来完成的;每个进程都拥有各自的内存空间,其他进程无法访问。在分布式内存方法中,这些进程分布在多台计算机、多个处理器和/或多个内核中,共同组成了一个并行程序。

通过计算机集群来分配物理进程,这种方法将并行问题的复杂度提升到了一个新水平。每个问题都要分割成更小的单元——不仅数据需要拆分,对应的任务也要分配给各台机器。以矩阵类的问题为例,在执行庞大的阵列运算时,阵列可以拆分成区块(可能是不连续的,也可能是重叠的),每个私有区块由一个进程专门负责。本申请提供了一种新的电力系统机电时域仿真的方法,可以解决如何将电力系统时域仿真的任务进行拆分并将任务分配给各个分布式计算单元进行并行计算的问题。

电力系统机电时域稳定仿真分析描述的是系统从故障起始到故障切除后数秒内的系统短期动态。目前电力系统机电时域仿真常规采用向前欧拉法和梯形法等,在算法的每一步应用满秩的雅克比矩阵来迭代计算代数变量和状态变量。

对于仿真过程中已知时间t,对Δt时的系统状态求解,此时就需要求解描述电力系统的微分方程组与描述电力系统的代数方程组,微分方程组的形式为:

其中,X为一个向量,表示系统的状态变量,由系统各元件的状态变量集合表示而成,Y也为一个向量,表示系统的代数变量,由系统各元件的代数变量集合表示而成,例如,参考图2进行说明,各元件都有对应的状态变量与代数变量,发电机元件a有其对应的状态变量Xa与代数变量Ya,发电机b有其对应的状态变量Xb与代数变量Ya,负载c、逆变器n-1和电力网络n都有各自对应的状态变量与代数变量。

利用联立求解的隐式梯形法,对所述微分方程组与代数方程组进行处理,可以得到第K次迭代需要求解的雅可比矩阵方程,雅可比矩阵方程为:

残差向量用于判断迭代还需不要继续进行,当残差向量表示的残差满足收敛条件时,迭代更新停止,即上式经迭代求解得到新的迭代修正量

在雅可比矩阵中的A=[A

那么根据微分方程对于状态变量的偏微分位于雅可比矩阵的左上方即雅可比矩阵中的A,微分方程对于代数变量的偏微分位于雅可比矩阵的右上方即雅可比矩阵中的B,代数方程对于状态变量的偏微分位于雅可比矩阵的左下方即雅可比矩阵中的C,代数方程对于代数变量的偏微分位于雅可比矩阵的右下方即雅可比矩阵中的D,从所述雅克比矩阵中,提取对应于同一元件的微分方程对于状态变量的偏微分、微分方程对于代数变量的偏微分、代数方程对于状态变量的偏微分、以及代数方程对于代数变量的偏微分,就可以得到对应于所述同一元件的子更新任务。对每一个元件的子更新任务采用分布式内存架构进行存储,即根据内存地址表将同一元件的子更新任务存储在同一地址中,每一个子更新任务分配一个线程,每个线程分配一个核心以对于子更新任务进行并行计算,将计算的结果更新至雅可比矩阵。

具体的,结合图2进行说明,首先将整个任务分割为n个子任务。将子任务传递给计算机框架,包括但不限于MultiProccessing框架,框架给每个子任务分配一个线程,每个线程自动分配一个核心进行计算。随后每个核心根据子任务对应的系统元件查找内存地址表,得到其子任务数据所在地址,并通过计算将内存数据更新。

任务采用动态分配的方法,将所有的矩阵更新任务包以队列的方式等待线程抓取。假设总的核心数为n,起始阶段则有n个线程抓取n个任务包,当某个线程相比其他线程提前完成工作,其会在队列中领取新的任务包进行计算,直到队列中所有任务都执行完毕,以保持它所在的核心一直处于工作状态,实现动态的负载平衡。

结合图2进行说明:例如,在第一次迭代开始前,对于发电机b,根据发电机b的微分方程对于状态变量的偏微分位于雅可比矩阵的A,即Ab;根据发电机b的微分方程对于代数变量的偏微分位于雅可比矩阵的B,即Bb;根据发电机b的代数方程对于状态变量的偏微分位于雅可比矩阵的C,即Cb;根据发电机b的代数方程对于代数变量的偏微分位于雅可比矩阵的D,即Db,提取出发电机b的子更新任务并存储在地址2中,对发电机b的子更新任务2分配一个线程2,线程1自动分配一个核心2以对于子更新任务2进行计算,在每一次迭代前只需要将对应的状态变量Xb与代数变量Yb赋值到地址2中,就可以由核心2计算出子更新任务2的结果,然后将计算的结果更新至雅可比矩阵。对于发电机a、负载c、逆变器n-1和电力网络n都采用同样的方法同时进行拆分和计算,当核心数n=6时,t时刻单次迭代更新雅可比矩阵的计算任务,6核心的的计算时间分配结果如图3,每一个阴影方格表示一个核心处理对应的一个子更新任务占处理这一步计算所有任务包的总时间。

当雅可比矩阵中的所有元件对应的子更新任务都执行完毕,则一次迭代就完成,在一次迭代完成后,会对于迭代的残差向量表示的残差是否满足收敛条件进行判断,收敛条件为残差是否收敛为0,当满足收敛条件时,则停止迭代,本次迭代更新所用的各元件的状态变量数值与代数变量数值即为t时刻的计算结果,并将本次迭代更新所用的各元件的状态变量数值与代数变量数值作为t+1时刻仿真计算的第一次迭代所用各元件的状态变量数值与代数变量数值,即得到t+1时刻的系统状态变量及代数变量数值,再进入下一时步计算,继续进行时域仿真。

结果显示,在联立求解微分代数方程的迭代过程中,可充分利用多线程算力,且仿真效率随着算例的增大而提高。此算法既可以应用于基于普通的多核CPU的个人电脑,也可以应用于大型云计算平台。可以预见,随着电网数字孪生概念的发展,在高算力的加持下,基于此的暂态稳定算法将可以应用于部署在云端的电网大规模在线实时仿真等领域。

应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图4所示,提供了一种基于分布式内存架构的多核并行时域仿真装置,包括:

方程构建模块401,用于基于电力系统中各元件的状态变量与代数变量,构建所述电力系统在t时刻的微分方程组与代数方程组;

矩阵方程获得模块402,用于利用联立求解的隐式梯形法,对所述微分方程组与代数方程组进行处理,得到雅可比矩阵方程;其中,所述雅可比矩阵方程的等式一边包括残差向量,另一边包括雅可比矩阵;

迭代更新模块403,用于利用各元件的状态变量数值与代数变量数值,对所述雅可比矩阵方程进行多次迭代更新;其中,在每次迭代时,对雅克比矩阵进行更新,以元件为单位拆分所述雅可比矩阵的更新任务,得到多个子更新任务,不同的子更新任务对应不同的元件,多个子更新任务被分配给多个核心并行执行;其中,用于在所述多次迭代更新中,判断每一次迭代的残差向量表示的残差是否满足收敛条件;

时域仿真模块404,用于若本次判断结果为满足,则停止迭代更新,并将本次迭代更新所用的各元件的状态变量数值与代数变量数值,对所述电力系统进行t+1时刻的时域仿真。

在一个实施例中,所述雅可比矩阵的等式另一边还包括:迭代修正量;所述矩阵方程获得模块402还包括收敛判断单元,用于在所述多次迭代更新中,判断每一次迭代的残差向量表示的残差是否满足收敛条件之后,所述方法还包括:若本次不满足,则利用本次迭代更新得到的残差向量以及本次迭代更新得到的雅克比矩阵,得到本次迭代更新的迭代修正量;利用本次迭代更新的迭代修正量,修正本次迭代更新所用的各元件的状态变量值与代数变量值,得到下次迭代更新所用的各元件的状态变量值与代数变量值。

在一个实施例中,首次迭代更新所用的各元件的状态变量数值与代数变量数值为预设的。

在一个实施例中,迭代更新模块403,还用于根据微分方程对于状态变量的偏微分位于雅可比矩阵的左上方,微分方程对于代数变量的偏微分位于雅可比矩阵的右上方,代数方程对于状态变量的偏微分位于雅可比矩阵的左下方,代数方程对于代数变量的偏微分位于雅可比矩阵的右下方,从所述雅克比矩阵中,提取对应于同一元件的微分方程对于状态变量的偏微分、微分方程对于代数变量的偏微分、代数方程对于状态变量的偏微分、以及代数方程对于代数变量的偏微分,得到对应于所述同一元件的子更新任务。

在一个实施例中,迭代更新模块403,还用于当子更新任务的个数大于分配的核心个数时,给每个核心分配一个子更新任务;当其中一个核心相比于其它核心先执行完对应的子更新任务时,给所述其中一个核心分配新的子更新任务,直到所述多个子更新任务执行完毕。

在一个实施例中,迭代更新模块403,还用于当子更新任务的个数等于分配的核心个数时,给每个核心分配一个子更新任务,以使所述多个子更新任务被执行完毕。

关于基于分布式内存架构的多核并行时域仿真装置的具体限定可以参见上文中对于基于分布式内存架构的多核并行时域仿真方法的限定,在此不再赘述。上述基于分布式内存架构的多核并行时域仿真装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储基于分布式内存架构的多核并行时域仿真数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机设备还包括输入输出接口,输入输出接口是处理器与外部设备之间交换信息的连接电路,它们通过总线与处理器相连,简称I/O接口。该计算机程序被处理器执行时以实现一种基于分布式内存架构的多核并行时域仿真方法。

本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述各个方法实施例中的步骤。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述各个方法实施例中的步骤。

在一个实施例中,提供了一种计算机程序产品,其上存储有计算机程序,所述计算机程序被处理器执行上述各个方法实施例中的步骤。

需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上的实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

技术分类

06120115636803