CN117077607A - 大规模线性电路仿真方法、系统、电路仿真器及存储介质 - Google Patents

大规模线性电路仿真方法、系统、电路仿真器及存储介质 Download PDF

Info

Publication number
CN117077607A
CN117077607A CN202310929719.2A CN202310929719A CN117077607A CN 117077607 A CN117077607 A CN 117077607A CN 202310929719 A CN202310929719 A CN 202310929719A CN 117077607 A CN117077607 A CN 117077607A
Authority
CN
China
Prior art keywords
matrix
diagonal
distributed
boundary
linear circuit
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.)
Granted
Application number
CN202310929719.2A
Other languages
English (en)
Other versions
CN117077607B (zh
Inventor
陈�全
周航
夏鼎伦
吴小马
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Southern University of Science and Technology
Original Assignee
Southern University of Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Southern University of Science and Technology filed Critical Southern University of Science and Technology
Priority to CN202310929719.2A priority Critical patent/CN117077607B/zh
Publication of CN117077607A publication Critical patent/CN117077607A/zh
Application granted granted Critical
Publication of CN117077607B publication Critical patent/CN117077607B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/392Floor-planning or layout, e.g. partitioning or placement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/10Numerical modelling

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Architecture (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供的大规模线性电路仿真方法、系统、电路仿真器及存储介质,具体涉及模拟电路数值仿真技术领域,本方案通过构建线性电路的常微分方程,并根据欧拉迭代方法转换为大规模稀疏线性方程组;利用图划分算法,对方程组的系数矩阵进行行列重排,获得双边界对角矩阵;采用若干个计算节点构成分布式节点,采用并行计算的方式求解各个分布式节点的局部舒尔补,并求和获得全局舒尔补;根据全局舒尔补和各个分布式节点在上一时刻的状态,获得各个分布式节点当前时刻的状态,进而获得大规模线性电路仿真结果。该方案能够控制电路矩阵的分块数量和大小,在保障仿真流程顺利进行的前提下,能够显著地提高电路仿真效率。

Description

大规模线性电路仿真方法、系统、电路仿真器及存储介质
技术领域
本发明涉及模拟电路数值仿真技术领域,尤其涉及的是一种大规模线性电路仿真方法、系统、电路仿真器及存储介质。
背景技术
大规模电路在先进节点下已经到达千万其至亿级规模,电路仿真器面临巨大的挑战。例如,在现代电子产品的多功能以及新兴混合域设计需求下,超大规模集成电路设计的芯片、封装及系统层级的各种模拟、数字、电磁、射频和热的模块性能需求越来越高。又如,持续增加的工作频率带来了不可忽略的多种效应,例如延迟、失真、反射及串扰等。
现有技术中,针对大规模电路仿真的核心步骤在于稀疏矩阵分解,目前大多采用对稀疏矩阵重排的方法对稀疏矩阵进行分解,但是无法获取与控制划分矩阵块的数量和各个矩阵块的大小,导致电路仿真效率较低。
发明内容
鉴于上述现有技术的不足,本发明的目的在于提供一种大规模线性电路仿真方法、系统、电路仿真器及存储介质,旨在解决现有技术中存在的大规模线性电路仿真效率较低的问题。
为了实现上述目的,本发明第一方面提供一种大规模线性电路仿真方法,包括以下步骤:
根据线性电路的规模构建线性电路的常微分方程,根据欧拉迭代方法将所述线性电路的常微分方程转换为大规模稀疏线性方程组;
将所述大规模稀疏线性方程组的系数矩阵进行列重排,使所述系数矩阵对角线上全为非零元,获得预重排矩阵;
利用图划分算法,对所述预重排矩阵进行行列重排,使得所述预重排矩阵的非零元分布在对角线和右、下两个边界,获得双边界对角矩阵;
采用若干个计算节点构成分布式节点,基于所述双边界对角矩阵数据,求解所述各个分布式节点的局部舒尔补,并对各个所述局部舒尔补求和,获得全局舒尔补;
根据所述全局舒尔补和各个所述分布式节点在上一时刻的求解结果,并行求解各个所述分布式节点当前时刻的状态;根据所述列重排和行列重排,将各个所述分布式节点所有时刻的求解结果转化成所述大规模线性电路仿真结果。
可选的,所述利用图划分算法,对所述预重排矩阵进行行列重排,使得所述预重排矩阵的非零元分布在对角线和右、下两个边界,获得双边界对角矩阵,包括:
创建一个用于储存原图的原图栈和一个用于储存二分得到的子图的子图栈,所述原图是指所述预重排矩阵对应的无向图;
将所述原图逐个出所述原图栈之后二分为子图,获得二分子图;并将所述二分子图入所述子图栈,直至所述原图栈为空,交换所述原图栈和所述子图栈;
重复将各个所述原图二分为子图并交换所述原图栈和所述子图栈的过程,直至所述子图栈中所述二分子图的数量或所述原图栈和所述子图栈交换次数达到预设的数量;
利用所有所述二分子图对所述预重排矩阵进行行列重排,使得所述预重排矩阵的非零元分布在对角线和右、下两个边界,获得双边界对角矩阵。
可选的,所述将所述原图逐个出所述原图栈之后二分为子图,获得二分子图,包括:
获取所有从所述原图栈出栈的原图大小;
基于上一次二分得到的所有所述二分子图的全局信息预设二分图大小阈值,若所述原图大小超过预设的二分图大小阈值,则将所述原图二分为子图,获得二分子图;否则,将所述原图设为所述二分子图。
可选的,所述利用所有所述二分子图对所述预重排矩阵进行行列重排,使得所述预重排矩阵的非零元分布在对角线和右、下两个边界,获得双边界对角矩阵,包括:
基于所述系数矩阵的维度,预设列重排矩阵、双边界对角重排矩阵、行伸缩矩阵和列伸缩矩阵;
基于所述列重排矩阵、所述行伸缩矩阵和所述列伸缩矩阵,使得所述系数矩阵对角线上均有元素且绝对值为1,除对角线上的元素以外的元素绝对值不超过1,获得预重排矩阵;
基于所述图划分算法构造双边界对角重排形式,基于所述双边界对角重排形式对所述预重排矩阵进行列、行重排,获得双边界对角矩阵。
可选的,所述采用若干个计算节点构成分布式节点,基于所述双边界对角矩阵数据,求解所述各个分布式节点的局部舒尔补,并对各个所述局部舒尔补求和,获得全局舒尔补,包括:
采用若干个计算节点构成分布式节点,将所述双边界对角矩阵的数据存放于目标节点上,并将所述目标节点记为主节点,将除所述主节点之外的节点记为子节点;
通过第一消息传递接口函数将所述主节点上的数据广播到各个所述子节点,求解所有所述分布式节点的局部舒尔补;
通过第二消息传递接口函数对各个所述局部舒尔补求和,获得全局舒尔补。
可选的,所述通过第一消息传递接口函数将所述主节点上的数据广播到各个所述子节点,求解所有所述分布式节点的局部舒尔补,包括:
基于所述主节点上的数据,筛选出与各个所述分布式节点相对应的所述双边界对角矩阵中的元素,利用每个所述分布式节点对应的所述元素构建一个分块矩阵;
采用并行计算的方式求解各个所述分块矩阵,获得各个所述分布式节点的局部舒尔补。
可选的,将各个所述分布式节点所有时刻的求解结果转化成所述大规模线性电路仿真结果,包括:
根据所述全局舒尔补和各个所述分布式节点在上一时刻的求解结果并行求解当前时刻各个所述分布式节点的状态;
根据所述列重排矩阵和所述双边界对角重排矩阵,找到各个所述分布式节点所有时刻的求解结果对应的所述大规模线性电路仿真结果的行;
根据所述列伸缩矩阵对所述行上的所有元素进行缩放,获得所述大规模线性电路仿真结果。
本发明第二方面提供一种大规模线性电路仿真系统,所述系统包括:
初始化模块,用于根据线性电路的规模构建线性电路的常微分方程,根据欧拉迭代方法将所述线性电路的常微分方程转换为大规模稀疏线性方程组;
矩阵重排模块,用于将所述大规模稀疏线性方程组的系数矩阵进行列重排,使所述系数矩阵对角线上全为非零元,获得预重排矩阵;并利用图划分算法,对所述预重排矩阵进行行列重排,使得双边界对角矩阵的非零元分布在对角线和右、下两个边界,获得双边界对角矩阵;
舒尔补计算模块,用于采用若干个计算节点构成分布式节点,基于所述双边界对角矩阵数据,求解所述各个分布式节点的局部舒尔补,并对各个所述局部舒尔补求和,获得全局舒尔补;
电路仿真模块,用于根据所述全局舒尔补和各个所述分布式节点在上一时刻的求解结果,并行求解各个所述分布式节点当前时刻的状态;根据所述列重排和行列重排,将各个所述分布式节点所有时刻的求解结果转化成所述大规模线性电路仿真结果。
本发明第三方面提供一种电路仿真器,所述电路仿真器包括仿真芯片、存储器以及存储在所述存储器上并可在所述仿真芯片上运行的大规模线性电路仿真程序,所述大规模线性电路仿真程序被所述仿真芯片执行时实任意一项上述大规模线性电路仿真方法的步骤。
本发明第四方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有大规模线性电路仿真程序,所述大规模线性电路仿真程序被处理器执行时实现任意一项上述大规模线性电路仿真方法的步骤。
与现有技术相比,本发明方案的有益效果如下:
本发明首先根据线性电路的规模构建线性电路的常微分方程,根据欧拉迭代方法将线性电路的常微分方程转换为大规模稀疏线性方程组,以将其系数矩阵先进行列重排之后转换为对角线上全为非零元,再利用图划分算法进一步进行行列重排,以获得预期维度的双边界对角矩阵,能够有效控制大规模线性电路的分块数量和大小,从而保障后续仿真流程正常进行;然后采用多个计算节点构成分布式节点,基于双边界对角矩阵数据,求解各个分布式节点的局部舒尔补,并通过对各个局部舒尔补简单求和的方式获得全局舒尔补,提高了仿真效率;接着通过各个分布式节点在上一时刻的求解结果和全局舒尔补,并行求解各个分布式节点当前时刻的状态,加快了电路仿真效率;最后将各个分布式节点所有时刻的求解结果转化为电路仿真结果。
可见,本发明基于大规模线性电路的规模,将线性电路的常微分方程转换为合适维度的大规模稀疏线性方程组,以控制电路矩阵的分块数量和大小,能够在保障仿真流程顺利进行的前提下,通过并行处理各个子节点的方式进行电路仿真,能够显著地提高电路仿真效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本发明的大规模线性电路仿真方法流程图;
图2为本发明的大规模线性电路仿真方法具体过程流程图;
图3为现有技术中的将矩阵重排成BBD形式的原理示意图;
图4为本发明的系统结构示意图;
图5为本发明的电路仿真器结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况下,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
下面结合本发明实施例的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其它不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
本发明针对线性电路,基于Metis库将稀疏矩阵重排成非零元集中分布在对角线、右侧和下方的形式,简称为BBD形式。基于线性电路的规模构建线性电路的常微分方程,根据欧拉迭代方法将线性电路的常微分方程转换为大规模稀疏线性方程组,通过修改Metis的现有分块策略,将基于递归的深度优先分块策略修改为基于循环的广度优先分块策略,能够控制电路矩阵的分块数量和大小;对于每个分布式节点采用针对电路矩阵的高效求解器,从而显著降低仿真时间;根据线性电路方程的特点做相应的数学变换处理,使仿真过程中各个分布式节点不需要获得完整的仿真结果以及计算完整的仿真输入,从而降低计算量,减少内存占用,减少分布式节点通信次数,增加加速比。
示例性方法
本发明实施例提供一种大规模线性电路仿真方法,部署于电脑、服务器等电子设备上,应用场景为大规模线性电路仿真,针对的是稀疏矩阵重排及并行处理的情况。上述大规模线性电路各个节点所代表的物理量的类型不做限制,可以是电压、电流等各种线性电路中存在的物理量。具体的,如图1和图2所示,本实施例方法的流程包括:
步骤S100:根据线性电路的规模构建线性电路的常微分方程,根据欧拉迭代方法将线性电路的常微分方程转换为大规模稀疏线性方程组。
具体地,由于电路仿真的核心是求解大型稀疏线性方程组Ax=b,本实施例根据线性电路的规模,设置开启的进程数量N,并根据所开启的进程数量N构建BBD形式的大型稀疏线性方程组Ax=b,其中A是N阶非奇异方阵,x和b都是长度为N的向量。
首先说明BBD矩阵求解的数学形式,这里定义A具有非零元集中分布在对角线、右侧和下方的BBD形式。非零元在对角线附近成分块分布,记为A0,...,AN-1。在下侧边界和右侧边界分布的非零元根据对角线上的分块大小分成构成矩阵块E0,...,EN-1和F0,...,FN-1。两个边界和对角线交叉的区域记为矩阵块AN。向量x和b根据A的分块方式分成相应的段。对应的大型稀疏线性方程组为
对于x0到xN-1
Aixi=bi-FixN,i=0,…,N-1 (2)
对于xN所在行的方程,将x0到xN-1根据公式(2)替换成xN之后,整理得到
其中,称为局部舒尔补,而/>为全局舒尔补,记为S。
需要声明的是,公式(1)中N的大小和开启的进程数量相同,表示电路矩阵(即系数矩阵)中主节点和子节点之和,且只有一个主节点。
根据欧拉迭代方法将线性电路的常微分方程转换为大规模稀疏线性方程组,本实施例定义大规模线性电路的常微分方程为:
其中,x为电路各节点的电压值和部分支路的电流值,u是电路的输入,C表示电路的电容和电感部分,G表示电路的电阻部分,B为电路的输入矩阵。
由于并非所有节点都有输入,所以需要对u进行处理,本实施例将微分项以h为步长进行线性近似,并将该常微分方程离散化成后向欧拉迭代的形式为
(C+hG)x(k+1)=Cx(k)+hBu(k+1) (5)
该形式为Ax=b形式,C+hG为稀疏矩阵。本实施例以上述矩阵作为输入,进行电路仿真。
步骤S200:将大规模稀疏线性方程组的系数矩阵进行列重排,使系数矩阵对角线上全为非零元,获得预重排矩阵。
具体地,为了应用BBD算法,首先将原矩阵行列重排成BBD形式,BBD矩阵求解可行的前提是对角线上各个子矩阵可逆。由于子矩阵绝对可逆很难保证,于是将条件放宽为结构性可逆,其中稀疏矩阵结构性可逆等价于该矩阵存在重排方法使得行列双边界对角矩阵对角线上全为非零元。因此本实施例先采用现有的MC64库重排矩阵,其中,MC64库是英国研究与创新署下的计算数学组与其他专家开发的用于大规模科学计算的数学库的集合HSL中的一个库。经过MC64处理后对应的结果为
C+hG→U(C+hG)QV
其中,Q是列重排矩阵,能使双边界对角矩阵对角线全部非零;U和V分别是行和列的伸缩矩阵,能使MC64处理后的矩阵对角线上均有元素且绝对值为1,其他元素绝对值不超过1,获得预重排矩阵,以方便后续LU分解。
步骤S300:利用图划分算法,对预重排矩阵进行行列重排,使得预重排矩阵的非零元分布在对角线和右、下两个边界,获得双边界对角矩阵。
具体地,基于Metis,利用图划分算法将矩阵重排成BBD的形式,其原理示意图如图3所示,图3(a)是预重排矩阵对应的无向图,图3(b)是将二分后的子图重排成BBD形式矩阵。重排成BBD形式等价于在无向图找到一组顶点,一般称为顶点分离器(以下简称VS),即图3(a)中用曲线圈起来的部分,通过顶点分离器能够将无向图分成若干个互不相连的子图。现有技术中基于Metis寻找VS的方式为:首先对矩阵对应的无向图二分,得到左图、右图和VS;然后递归地对左图二分,直到子图足够小,然后按照对左图二分的方式,同样地对右图二分;最后得到各个子图的VS,所有子图的VS也就是原图的VS。由于这种对无向图二分的方式属于深度优先递归,无法获得所有子图的信息,因而很难控制块的数量以及得到各个块的大小。其根本原因是Metis的目标是重排矩阵以降低其LU分解的复杂度,而不是获得BBD矩阵。
基于此,本实施例将其修改为基于循环的广度优先遍历算法,其实现方式为:创建一个用于储存原图的原图栈和一个用于储存二分得到的子图的子图栈,原图是指系数矩阵对应的无向图;将原图逐个出原图栈之后二分为子图,获得二分子图;并将二分子图入子图栈,直至原图栈为空,交换原图栈和子图栈;重复将各个原图二分为子图并交换原图栈和子图栈的过程,直至子图栈中二分子图的数量或原图栈和子图栈交换次数达到预设的数量;利用所有二分子图对预重排矩阵进行行列重排,使得预重排矩阵的非零元分布在对角线和右、下两个边界,获得双边界对角矩阵。
具体地,首先准备两个栈,一个用于储存无向图中的各个原图的原图栈,一个用于储存二分后得到的子图的子图栈,初始状态下原图栈中为电路矩阵对应的原图,子图栈为空;然后从原图栈中逐个出栈原图,对每个原图二分,并将二分得到的子图入子图栈,直至原图栈为空,交换两个栈;重复上述对原图二分的步骤,直至子图栈中子图数量为期望的数量,最后将获得的所有子图对应的矩阵块存放在容器中。例如,如果对每个原图执行二分操作的次数为n,那么最终划分出的矩阵块(即无向图中的子图)的数量为2n,实际仿真过程中,可以先预设矩阵块的数量,并根据预设的矩阵块的数量设置需要对各个原图执行二分操作的次数。在二分操作过程中,本实施例采用的图划分算法本身可以在一定程度上控制将一个图二分之后得到的两个子图的大小相差在一定范围内,也就是通过设置图划分算法职工的相应参数可以在一定程度上控制二分操作获得的子图的大小。
同时,还可以通过存放矩阵块的容器查询子图栈中的各个对应的子图的大小,并根据查询到的矩阵块的大小有针对性地二次分块,从而实现对电路矩阵分块的数量和大小的控制,进而保证后续电路仿真流程正常进行。在最后的子图栈中,各个子图的大小即为分块的大小。将这些子图按照一定顺序排列,可以是在子图栈中的顺序,也可以根据子图大小和各个节点的计算能力根据计算负载重排,还可以是任意顺序。由于子图对应矩阵块,这里子图的顺序也就是BBD矩阵对角线矩阵块的左右(上下)顺序。
需要声明的是,结束二分原图栈中的任意一个原图并将得到的子图入子图栈后,能得到当前原图栈和子图栈中所有原图和子图的大小等信息,且这些原图和子图互不依赖,可以独立操作。
进一步地,作为其他优选实施方式,还可以基于修改后的Metis进行平衡性处理,使最终得到的BBD矩阵主对角线上各个矩阵块的大小大致相等。具体实现方式是,获取所有从原图栈出栈的原图大小;基于上一次二分得到的所有二分子图的全局信息预设二分图大小阈值,若原图大小超过预设的二分图大小阈值,则将原图二分为子图,获得二分子图;否则,将原图设为二分子图。可见,该方法只需将子图的大小超过设定的阈值的子图进行二分处理,而无需对原图栈中的所有图进行相同次数的二分,从而实现对电路矩阵分块的数量和大小的控制,进而保证后续电路仿真流程正常进行。
本实施例通过对Metis修改后得到的基于循环的广度优先遍历算法,在对原图栈的各个原图或子图进行二分时,可以根据实际需求选择串行处理或者并行处理的方式。
基于公式(1)中所构造的双边界对角重排形式,利用双边界对角重排形式对上述步骤获得的预重排矩阵进行列、行重排,由于Metis对系数矩阵的行和列做了相同的重排,重排后的结果为
U(C+hG)VQ→PU(C+hG)QVPT
其中,P为重排矩阵,它和列重排矩阵Q是相同大小的矩阵,区别仅在于在进行重排过程中二者的位置关系,使得预重排矩阵的非零元分布在对角线和右、下两个边界,获得双边界对角矩阵。
步骤S400:采用若干个计算节点构成分布式节点,基于双边界对角矩阵数据,求解各个分布式节点的局部舒尔补,并对各个局部舒尔补求和,获得全局舒尔补。
具体地,采用若干个计算节点构成分布式节点,将双边界对角矩阵的数据存放于目标节点上,并将目标节点记为主节点,将除主节点之外的节点记为子节点;通过第一消息传递接口函数将主节点上的数据广播到各个子节点,求解所有分布式节点的局部舒尔补;通过第二消息传递接口函数对各个局部舒尔补求和,获得全局舒尔补。
本实施例采用消息传递接口(Message Passing Interface,MPI)求解各个节点的局部舒尔补和全局舒尔补,MPI是一种用于并行计算的消息传递编程模型和标准,MPI允许在多个处理器或计算节点之间进行通信和同步,从而实现程序的并行计算。在MPI中,进程之间通过发送和接收消息来进行通信。本实施例主要使用两个MPI通信函数:广播消息函数(MPI_Bcast)和全局规约函数(MPI_Allreduce),前者的功能是把数据从一个节点广播到其他所有节点。后者的功能是收集所有节点的数据,对其进行操作然后将结果返回给所有节点。在本实施例中使用的操作为相加,即获取所有节点数据的加和。
采用多个计算节点构成分布式节点之后,通常矩阵数据存放于某一个节点,记该节点为主节点,编号为0,其余的节点为子节点。由于电路矩阵左右两边都乘了矩阵,所以式(5)重写为
PU(C+hG)QVPT·(QVPT)-1x(k+1)=PUCx(k)+hPUBu(k+1)=b(k+1) (6)
出于简便,记
A=PU(C+hG)QVPT (7)
式(6)重写为
式(6)的第一个等号一边是另一边是x,这意味着每一次求解都要算一次式(5)。重写式(6)有:
出于简便,记
将式(8),(5)代入式(6)有
求解各个分布式节点的局部舒尔补和全局舒尔补的过程,其实是求解公式(3)中的局部舒尔补和全局舒尔补/>
首先计算局部舒尔补,为了充分利用硬件资源,每个分布式节点都计算相应的局部舒尔补。子节点需要从主节点处获取矩阵Ai,Ei,Fi,AN来计算局部舒尔补。最直接的做法是主节点取出各个子矩阵然后发送给子节点,但是在子节点数量多的情况会浪费硬件资源。由于函数MPI_Bcast速度较快,且矩阵A是稀疏矩阵,基于主节点上的数据,筛选出与各个分布式节点相对应的双边界对角矩阵中的元素,利用每个分布式节点对应的元素构建一个分块矩阵;采用并行计算的方式求解各个分块矩阵,获得各个分布式节点的局部舒尔补。
本实施例选择使用该函数把A广播到所有子节点,然后子节点再获取相应的分块。对于所有节点,构造式(13)的分块矩阵,即
使用支持部分LU分解的求解器求解局部舒尔补,以提高求解速度,有利于降低仿真时间,然后调用函数MPI_Allreduce获得局部舒尔补的总和,再将其加上AN就得到了全局舒尔补。
步骤S500:根据全局舒尔补和各个分布式节点在上一时刻的求解结果,并行求解各个分布式节点当前时刻的状态;根据列重排和行列重排,将各个分布式节点所有时刻的求解结果转化成大规模线性电路仿真结果。
然后,计算公式(12)的等号右侧。对比式(7),(11),注意到矩阵C的非零元位置的集合是C+hG的非零元集合的子集,因此C+hG的行列重排矩阵会把C也重排成BBD矩阵。也就是说,矩阵是BBD矩阵,即
的各个子矩阵和对应的A的各个子矩阵大小一致。
hPUB=[B0 T … BN-1 T BN T]T (15)
其中Bi的行数和Ci的行数一致,结合公式(12),(14),(15)
为了尽可能的利用硬件资源,本实施例要求每个节点都要求解式(3)。同时,由于仿真结果是稠密向量,为了减少内存占用,利用矩阵C可以和C+hG通过相同的方式转化为BBD形式矩阵的特点,得到的变形公式(16),根据公式(16)可知每个节点只需要储存就可以独立求解bi (k+1),因此等号右侧的求和可以通过函数MPI_Allreduce实现。
结合公式(12),(14),(15)得到
将式(16),(17)代入式(3)得
于是
进而
于是有
至此,求得了各个分布式节点所有时刻的求解结果并根据公式(23)得到电路仿真结果X。
具体地,根据全局舒尔补和各个分布式节点在上一时刻的求解结果并行求解当前时刻各个分布式节点的状态;根据列重排矩阵和双边界对角重排矩阵,找到各个分布式节点所有时刻的求解结果对应的大规模线性电路仿真结果的行;根据列伸缩矩阵对行上的所有元素进行缩放,获得大规模线性电路仿真结果。
本实施例利用矩阵C可以和C+hG通过相同的方式转化为BBD形式矩阵的特点,使得每个分布式节点只需要储存对应矩阵块的未知量(xi (k))和耦合部分的未知量并独立计算矩阵块对应的等号右侧向量/>相比传统的流程直接计算式(5)等号右侧向量具有三个方面的优势:一是求解b(k+1)的计算量被分摊给了各个节点,计算量相比传统的流程平均减少至1/N;二是储存x(k)所需要的内存也被分摊给了各个节点,内存占用相比传统流程平均减少至1/N;三是由于不需要储存整个x(k),相比传统流程减少了从各个节点收集的通信,本发明相对传统流程通信次数至少减少一次。
本发明基于线性电路的规模构建线性电路的常微分方程,根据欧拉迭代方法将线性电路的常微分方程转换为大规模稀疏线性方程组,能够有效控制大规模线性电路的分块数量和大小,从而保障后续仿真流程正常进行;并按照设定的规则对系数矩阵进行多次数学变换处理,以获得满足BBD形式的系数矩阵,并简化大规模稀疏线性方程组,使得仿真过程中各个分布式节点不需要获得完整的仿真结果,以及计算完整的仿真输入,即可获得电路仿真结果,从而降低计算量,减少内存占用,减少分布式节点通信次数,增加加速比。
示例性系统
如图4所示,对应于上述大规模线性电路仿真方法,本发明实施例还提供一种大规模线性电路仿真系统,上述大规模线性电路仿真系统包括:
初始化模块410,用于根据线性电路的规模构建线性电路的常微分方程,根据欧拉迭代方法将线性电路的常微分方程转换为大规模稀疏线性方程组;
矩阵预重排模块420,用于将大规模稀疏线性方程组的系数矩阵进行行或列重排,使系数矩阵对角线上全为非零元,获得预重排矩阵;
矩阵重排模块430,用于利用图划分算法,对预重排矩阵进行行列重排,使得预重排矩阵的非零元分布在对角线和右、下两个边界,获得双边界对角矩阵;
舒尔补计算模块440,用于采用若干个计算节点构成分布式节点,基于双边界对角矩阵数据,求解各个分布式节点的局部舒尔补,并对各个局部舒尔补求和,获得全局舒尔补;
电路仿真模块450,用于根据全局舒尔补和各个分布式节点在上一时刻的求解结果,并行求解各个分布式节点当前时刻的状态;根据列重排和行列重排,将各个分布式节点所有时刻的求解结果转化成大规模线性电路仿真结果。
具体的,本实施例中,上述大规模线性电路仿真系统的具体功能还可以参照上述大规模线性电路仿真方法中的对应描述,在此不再赘述。
基于上述实施例,本发明还提供了一种电路仿真器,其原理框图可以如图5所示。上述电路仿真器包括仿真芯片、存储器以及存储在存储器上并可在仿真芯片上运行的大规模线性电路仿真程序,大规模线性电路仿真程序被仿真芯片执行时实现上述任意一项大规模线性电路仿真方法的步骤。
本领域技术人员可以理解,图5中示出的原理框图,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的电路仿真器的限定,具体的电路仿真器可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本发明实施例还提供一种计算机可读存储介质,上述计算机可读存储介质上存储有大规模线性电路仿真程序,上述大规模线性电路仿真程序被处理器执行时实现本发明实施例提供的任意一种大规模线性电路仿真方法的步骤。
应理解,上述实施例中各步骤的序号大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将上述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟是以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,上述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以由另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不是相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

Claims (10)

1.一种大规模线性电路仿真方法,其特征在于,包括以下步骤:
根据线性电路的规模构建线性电路的常微分方程,根据欧拉迭代方法将所述线性电路的常微分方程转换为大规模稀疏线性方程组;
将所述大规模稀疏线性方程组的系数矩阵进行列重排,使所述系数矩阵对角线上全为非零元,获得预重排矩阵;
利用图划分算法,对所述预重排矩阵进行行列重排,使得所述预重排矩阵的非零元分布在对角线和右、下两个边界,获得双边界对角矩阵;
采用若干个计算节点构成分布式节点,基于所述双边界对角矩阵数据,求解所述各个分布式节点的局部舒尔补,并对各个所述局部舒尔补求和,获得全局舒尔补;
根据所述全局舒尔补和各个所述分布式节点在上一时刻的求解结果,并行求解各个所述分布式节点当前时刻的状态;根据所述列重排和行列重排,将各个所述分布式节点所有时刻的求解结果转化成所述大规模线性电路仿真结果。
2.根据权利要求1所述的大规模线性电路仿真方法,其特征在于,所述利用图划分算法,对所述预重排矩阵进行行列重排,使得所述预重排矩阵的非零元分布在对角线和右、下两个边界,获得双边界对角矩阵,包括:
创建一个用于储存原图的原图栈和一个用于储存二分得到的子图的子图栈,所述原图是指所述预重排矩阵对应的无向图;
将所述原图逐个出所述原图栈之后二分为子图,获得二分子图;并将所述二分子图入所述子图栈,直至所述原图栈为空,交换所述原图栈和所述子图栈;
重复将各个所述原图二分为子图并交换所述原图栈和所述子图栈的过程,直至所述子图栈中所述二分子图的数量或所述原图栈和所述子图栈交换次数达到预设的数量;
利用所有所述二分子图对所述预重排矩阵进行行列重排,使得所述预重排矩阵的非零元分布在对角线和右、下两个边界,获得双边界对角矩阵。
3.根据权利要求2所述的大规模线性电路仿真方法,其特征在于,所述将所述原图逐个出所述原图栈之后二分为子图,获得二分子图,包括:
获取所有从所述原图栈出栈的原图大小;
基于上一次二分得到的所有所述二分子图的全局信息预设二分图大小阈值,若所述原图大小超过预设的二分图大小阈值,则将所述原图二分为子图,获得二分子图;否则,将所述原图设为所述二分子图。
4.根据权利要求2或3所述的大规模线性电路仿真方法,其特征在于,所述利用所有所述二分子图对所述预重排矩阵进行行列重排,使得所述预重排矩阵的非零元分布在对角线和右、下两个边界,获得双边界对角矩阵,包括:
基于所述系数矩阵的维度,预设列重排矩阵、双边界对角重排矩阵、行伸缩矩阵和列伸缩矩阵;
基于所述列重排矩阵、所述行伸缩矩阵和所述列伸缩矩阵,使得所述系数矩阵对角线上均有元素且绝对值为1,除对角线上的元素以外的元素绝对值不超过1,获得预重排矩阵;
基于所述图划分算法构造双边界对角重排形式,利用所述双边界对角重排形式对所述预重排矩阵进行列、行重排,获得双边界对角矩阵。
5.根据权利要求1所述的大规模线性电路仿真方法,其特征在于,所述采用若干个计算节点构成分布式节点,基于所述双边界对角矩阵数据,求解所述各个分布式节点的局部舒尔补,并对各个所述局部舒尔补求和,获得全局舒尔补,包括:
采用若干个计算节点构成分布式节点,将所述双边界对角矩阵的数据存放于目标节点上,并将所述目标节点记为主节点,将除所述主节点之外的节点记为子节点;
通过第一消息传递接口函数将所述主节点上的数据广播到各个所述子节点,求解所有所述分布式节点的局部舒尔补;
通过第二消息传递接口函数对各个所述局部舒尔补求和,获得全局舒尔补。
6.根据权利要求5所述的大规模线性电路仿真方法,其特征在于,所述通过第一消息传递接口函数将所述主节点上的数据广播到各个所述子节点,求解所有所述分布式节点的局部舒尔补,包括:
基于所述主节点上的数据,筛选出与各个所述分布式节点相对应的所述双边界对角矩阵中的元素,利用每个所述分布式节点对应的所述元素构建一个分块矩阵;
采用并行计算的方式求解各个所述分块矩阵,获得各个所述分布式节点的局部舒尔补。
7.根据权利要求4所述的大规模线性电路仿真方法,其特征在于,将各个所述分布式节点所有时刻的求解结果转化成所述大规模线性电路仿真结果,包括:
根据所述全局舒尔补和各个所述分布式节点在上一时刻的求解结果并行求解当前时刻各个所述分布式节点的状态;
根据所述列重排矩阵和所述双边界对角重排矩阵,找到各个所述分布式节点所有时刻的求解结果对应的所述大规模线性电路仿真结果的行;
根据所述列伸缩矩阵对所述行上的所有元素进行缩放,获得所述大规模线性电路仿真结果。
8.大规模线性电路仿真系统,其特征在于,所述系统包括:
初始化模块,用于根据线性电路的规模构建线性电路的常微分方程,根据欧拉迭代方法将所述线性电路的常微分方程转换为大规模稀疏线性方程组;
矩阵预重排模块,用于将所述大规模稀疏线性方程组的系数矩阵进行列重排,使所述系数矩阵对角线上全为非零元,获得预重排矩阵;
矩阵重排模块,用于利用图划分算法,对所述预重排矩阵进行行列重排,使得所述预重排矩阵的非零元分布在对角线和右、下两个边界,获得双边界对角矩阵;
舒尔补计算模块,用于采用若干个计算节点构成分布式节点,基于所述双边界对角矩阵数据,求解所述各个分布式节点的局部舒尔补,并对各个所述局部舒尔补求和,获得全局舒尔补;
电路仿真模块,用于根据所述全局舒尔补和各个所述分布式节点在上一时刻的求解结果,并行求解各个所述分布式节点当前时刻的状态;根据所述列重排和行列重排,将各个所述分布式节点所有时刻的求解结果转化成所述大规模线性电路仿真结果。
9.电路仿真器,其特征在于,所述电路仿真器包括仿真芯片、存储器以及存储在所述存储器上并可在所述仿真芯片上运行的大规模线性电路仿真程序,所述大规模线性电路仿真程序被所述仿真芯片执行时实现如权利要求1-7任意一项所述大规模线性电路仿真方法的步骤。
10.计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有大规模线性电路仿真程序,所述大规模线性电路仿真程序被处理器执行时实现如权利要求1-7任意一项所述大规模线性电路仿真方法的步骤。
CN202310929719.2A 2023-07-26 2023-07-26 大规模线性电路仿真方法、系统、电路仿真器及存储介质 Active CN117077607B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310929719.2A CN117077607B (zh) 2023-07-26 2023-07-26 大规模线性电路仿真方法、系统、电路仿真器及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310929719.2A CN117077607B (zh) 2023-07-26 2023-07-26 大规模线性电路仿真方法、系统、电路仿真器及存储介质

Publications (2)

Publication Number Publication Date
CN117077607A true CN117077607A (zh) 2023-11-17
CN117077607B CN117077607B (zh) 2024-06-18

Family

ID=88717762

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310929719.2A Active CN117077607B (zh) 2023-07-26 2023-07-26 大规模线性电路仿真方法、系统、电路仿真器及存储介质

Country Status (1)

Country Link
CN (1) CN117077607B (zh)

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10334129A (ja) * 1997-06-02 1998-12-18 Nec Corp データ処理装置および方法、情報記憶媒体
US20070157135A1 (en) * 2005-12-19 2007-07-05 Baolin Yang Parallel multi-rate circuit simulation
US20100082724A1 (en) * 2008-09-30 2010-04-01 Oleg Diyankov Method For Solving Reservoir Simulation Matrix Equation Using Parallel Multi-Level Incomplete Factorizations
CN102087678A (zh) * 2011-01-07 2011-06-08 清华大学 通过时域划分实现并行计算的电路仿真方法
US8065129B1 (en) * 2004-11-19 2011-11-22 Synopsys, Inc. Methods and apparatuses for circuit simulation
US20140324398A1 (en) * 2013-04-30 2014-10-30 Freescale Semiconductor, Inc. Method and apparatus for accelerating sparse matrix operations in full accuracy circuit simulation
CN113032722A (zh) * 2021-03-29 2021-06-25 北京华大九天科技股份有限公司 一种电路仿真中减少矩阵分解的方法
CN113255259A (zh) * 2021-05-21 2021-08-13 北京华大九天科技股份有限公司 一种基于大规模集成电路划分的并行求解方法
CN113486616A (zh) * 2021-07-21 2021-10-08 成都华大九天科技有限公司 一种电路仿真中的分块矩阵存储方法
CN113723032A (zh) * 2021-08-30 2021-11-30 全球能源互联网研究院有限公司 一种面向大规模节点的电路快速解算方法及系统
CN114580345A (zh) * 2022-04-29 2022-06-03 深圳鸿芯微纳技术有限公司 电路仿真方法、装置、计算机设备及计算机可读存储介质
CN116070584A (zh) * 2023-03-06 2023-05-05 深圳市比昂芯科技有限公司 电路仿真方法、装置、电子设备及计算机可读存储介质

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10334129A (ja) * 1997-06-02 1998-12-18 Nec Corp データ処理装置および方法、情報記憶媒体
US8065129B1 (en) * 2004-11-19 2011-11-22 Synopsys, Inc. Methods and apparatuses for circuit simulation
US20070157135A1 (en) * 2005-12-19 2007-07-05 Baolin Yang Parallel multi-rate circuit simulation
US20100082724A1 (en) * 2008-09-30 2010-04-01 Oleg Diyankov Method For Solving Reservoir Simulation Matrix Equation Using Parallel Multi-Level Incomplete Factorizations
CN102087678A (zh) * 2011-01-07 2011-06-08 清华大学 通过时域划分实现并行计算的电路仿真方法
US20140324398A1 (en) * 2013-04-30 2014-10-30 Freescale Semiconductor, Inc. Method and apparatus for accelerating sparse matrix operations in full accuracy circuit simulation
CN113032722A (zh) * 2021-03-29 2021-06-25 北京华大九天科技股份有限公司 一种电路仿真中减少矩阵分解的方法
CN113255259A (zh) * 2021-05-21 2021-08-13 北京华大九天科技股份有限公司 一种基于大规模集成电路划分的并行求解方法
CN113486616A (zh) * 2021-07-21 2021-10-08 成都华大九天科技有限公司 一种电路仿真中的分块矩阵存储方法
CN113723032A (zh) * 2021-08-30 2021-11-30 全球能源互联网研究院有限公司 一种面向大规模节点的电路快速解算方法及系统
CN114580345A (zh) * 2022-04-29 2022-06-03 深圳鸿芯微纳技术有限公司 电路仿真方法、装置、计算机设备及计算机可读存储介质
CN116070584A (zh) * 2023-03-06 2023-05-05 深圳市比昂芯科技有限公司 电路仿真方法、装置、电子设备及计算机可读存储介质

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
A. S. MAUNDER;CISCO SYSTEMS;G. CHOUDHURY;AT AMP;AMP;AMP;T LABS;: "Explicit Marking and Prioritized Treatment of Specific IGP Packets for Faster IGP Convergence and Improved Network Scalability and Stability", IETF, 31 March 2001 (2001-03-31) *
丁硕;张放;巫庆辉: "基于MATLAB/Simulink的正弦稳态电路建模与仿真", 国外电子测量技术, 15 April 2015 (2015-04-15) *
杨帆: "模拟集成电路的仿真与优化方法概述", 微纳电子与智能制造, 15 June 2021 (2021-06-15) *
薛巍, 舒继武, 严剑峰, 王心丰, 韩英铎: "基于集群机的大规模电力系统暂态过程并行仿真", 中国电机工程学报, no. 08, 30 August 2003 (2003-08-30) *

Also Published As

Publication number Publication date
CN117077607B (zh) 2024-06-18

Similar Documents

Publication Publication Date Title
CN110197270B (zh) 集成电路芯片装置及相关产品
US9858369B2 (en) Large-scale power grid analysis on parallel architectures
WO2023045445A1 (zh) 数据处理装置、数据处理方法及相关产品
CN111796796A (zh) 基于稀疏矩阵乘法的fpga存储方法、计算方法、模块和fpga板
CN114781629B (zh) 基于并行复用的卷积神经网络的硬件加速器及并行复用方法
CN114764615A (zh) 卷积运算的实现方法、数据处理方法及装置
CN117077607B (zh) 大规模线性电路仿真方法、系统、电路仿真器及存储介质
CN114004186A (zh) 基于谱图稀疏化的芯片内超大规模供电网络并行仿真方法
CN111667052B (zh) 专用神经网络加速器的标准与非标准卷积一致性变换方法
CN112513861B (zh) 使用并行处理进行层次电路模拟的方法和系统
CN116348882A (zh) 一种卷积神经网络数据处理方法及其相关设备
Childs et al. Exact sampling from nonattractive distributions using summary states
JP4612546B2 (ja) 並列計算方法及び装置
CN110598174B (zh) 一种基于gpu架构的稀疏矩阵的回代求解方法
CN110197275B (zh) 集成电路芯片装置及相关产品
CN114764618B (zh) 一种针对线性系统的量子预处理方法及装置
CN115310614B (zh) 量子线路构建方法、装置及量子计算机操作系统
CN112257323B (zh) 基于电磁暂态并行计算的自动分网方法、装置及终端设备
US11113623B2 (en) Multi-sample system for emulating a quantum computer and methods for use therewith
TWI828185B (zh) 三維卷積運算裝置與三維卷積運算方法
CN116781484B (zh) 数据处理方法、装置、计算机设备及存储介质
EP4401012A1 (en) Quantum circuit optimization method and apparatus, and electronic device, computer-readable storage medium and computer program product
CN117972276A (zh) 一种基于dcu加速器的并行浸没边界方法及装置
Verbosio High performance selected inversion methods for sparse matrices
Dong et al. Caching Hybrid Rotation: A Memory Access Optimization Method for CNN on FPGA

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