CN108984483B - 基于dag及矩阵重排的电力系统稀疏矩阵求解方法和系统 - Google Patents

基于dag及矩阵重排的电力系统稀疏矩阵求解方法和系统 Download PDF

Info

Publication number
CN108984483B
CN108984483B CN201810771319.2A CN201810771319A CN108984483B CN 108984483 B CN108984483 B CN 108984483B CN 201810771319 A CN201810771319 A CN 201810771319A CN 108984483 B CN108984483 B CN 108984483B
Authority
CN
China
Prior art keywords
matrix
dag
node
layering
nodes
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
Application number
CN201810771319.2A
Other languages
English (en)
Other versions
CN108984483A (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.)
Tsinghua University
State Grid Corp of China SGCC
State Grid Jiangsu Electric Power Co Ltd
Global Energy Interconnection Research Institute
Original Assignee
Tsinghua University
State Grid Corp of China SGCC
State Grid Jiangsu Electric Power Co Ltd
Global Energy Interconnection Research Institute
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 Tsinghua University, State Grid Corp of China SGCC, State Grid Jiangsu Electric Power Co Ltd, Global Energy Interconnection Research Institute filed Critical Tsinghua University
Priority to CN201810771319.2A priority Critical patent/CN108984483B/zh
Publication of CN108984483A publication Critical patent/CN108984483A/zh
Application granted granted Critical
Publication of CN108984483B publication Critical patent/CN108984483B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization

Abstract

本发明提供一种基于DAG及矩阵重排的电力系统稀疏矩阵求解方法和系统,所述方法包括:获取描述输电网络状态或描述设备运行情况的方程组在迭代求解过程中修正方程对应的稀疏矩阵;基于所述稀疏矩阵生成包含全部依赖关系信息的有向无环图DAG,并对所述DAG进行分层;根据DAG分层结果对所述稀疏矩阵的L矩阵、所述稀疏矩阵的U矩阵、所述稀疏矩阵对应的待解向量及所述稀疏矩阵对应的结果向量进行矩阵重排;矩阵重排后对所述稀疏矩阵进行前代回代求解。使用多种方法调整节点所在层的编号,通过矩阵重排使得同一层内存访问能够连续进行,提高了并行前代回代计算的效率,能够有效提升在并行处理器上的稀疏前代回代的并行度和运算速度。

Description

基于DAG及矩阵重排的电力系统稀疏矩阵求解方法和系统
技术领域
本发明涉及电力系统分析计算技术领域,更具体地,涉及一种基于DAG及矩阵重排的电力系统稀疏矩阵求解方法和系统。
背景技术
在电力系统计算过程中,线性方程组的求解是一个经常遇到的问题。潮流计算与状态估计中,牛顿拉夫逊法及其各类改进算法的实现,离不开迭代过程中对修正方程(Jacobi矩阵)的求解;在暂态仿真中,描述输电网络状态的方程和描述设备运行情况的方程都属于高阶非线性方程组,对其进行求解需要进行数值积分,一般需要使用牛顿法将其差分化为相应的线性方程后迭代求解,而在此类迭代求解的过程中也需要对大型线性方程组进行求解。因此,对线性方程组的求解过程进行优化,加快其求解速度,可以有效减少各类电力系统计算的用时,提高求解的实时性。
并行计算是计算机科学中重要的研究内容,已有几十年的发展历程。用并行计算求解问题的大致过程为:对于一个给定的应用问题,首先,计算科学家将这个应用转化为一个数值或非数值的计算问题;然后计算机科学家对此计算问题设计并行算法,并通过某种并行编程语言实现它;最后应用领域的专家在某台具体的并行计算机上运行应用软件求解此问题。由此,可以很自然的发现并行计算由以下几个部分构成:并行计算机(并行计算的硬件平台),并行算法(并行计算的理论基础),并行程序设计(并行计算的软件支撑),并行应用(并行计算的发展动力)。
现有的方法并非针对电力系统问题而设计,是一个基于稀疏矩阵的通用求解方法,其在开始分析时便以层为单位进行组织,其大致思路是将没有数据依赖的节点提取至新的一层,并除去其他节点对已经分析节点的数据依赖,重复此流程直至节点全部处理完成。这种方法简单有效,适应性强,但其生成的分层结果倾向于将节点划分至编号较小的层,使得整个算法的分层结果集中在前几层,算法的并行平均度较差,尤其是在对于前代矩阵的分析中,形成的DAG(Directed Acyclic Graph,有向无环图)图极不均匀,大大拖慢了并行求解的速度。
发明内容
本发明提供一种克服上述问题或者至少部分地解决上述问题的一种基于DAG及矩阵重排的电力系统稀疏矩阵求解方法和系统。
根据本发明的一个方面,提供一种基于DAG及矩阵重排的电力系统稀疏矩阵求解方法,包括:
获取描述输电网络状态或描述设备运行情况的方程组在迭代求解过程中修正方程对应的稀疏矩阵;
于所述稀疏矩阵生成包含全部依赖关系信息的有向无环图DAG,并对所述DAG进行分层,调整DAG中节点所在层的编号,将节点均匀的放入到各分层中;
根据DAG分层结果对所述稀疏矩阵的L矩阵、所述稀疏矩阵的U矩阵、所述稀疏矩阵对应的待解向量及所述稀疏矩阵对应的结果向量进行矩阵重排;
根据矩阵重排后的所述L矩阵、所述U矩阵、所述待解向量及所述结果向量,对所述稀疏矩阵进行前代回代求解。
作为优选的,所述根据DAG分层结果对所述稀疏矩阵的L矩阵、所述稀疏矩阵的U矩阵、所述稀疏矩阵对应的待解向量及所述稀疏矩阵对应的结果向量进行矩阵重排,具体包括:
根据DAG分层结果获取每层中的所有节点,分别将所述L矩阵、所述U矩阵、所述待解向量及所述结果向量中与同一层中各节点对应的元素调整至相邻行,即完成对所述L矩阵、所述U矩阵、所述待解向量及所述结果向量的矩阵重排。
作为优选的,基于所述稀疏矩阵生成包含全部依赖关系信息的有向无环图DAG后还包括:
构造基于节点的数据结构,对DAG中的所有信息原样保存,每一个节点都包含两个列表,分别保存了自己的所有父节点和子节点的指针。
作为优选的,并对所述DAG进行分层具体包括:
在前代环节通过懒惰分层算法对所述DAG进行分层,在回代环节通过贪婪分层算法对所述DAG进行分层。
作为优选的,在前代环节通过懒惰分层算法对所述DAG进行分层,具体包括:
对DAG树中的每个节点i,若节点i没有子节点,则设置节点i的层编号ei为最大值,并按以下流程设置节点i的父节点的层编号:对节点i的每个父节点k,将k的层编号ek和ei-1中较小者设为节点k的层编号;
重复上述步骤,递归地设置节点k的父节点的层编号。
作为优选的,在回代环节通过贪婪分层算法对所述DAG进行分层,具体包括:
对DAG树中的每个节点i,若节点i没有父节点,则设置节点i的层编号ei为0,并按以下流程设置节点i的子节点的层编号:对于节点i的每个子节点k,将k的层编号ek和ei+1中较大者设为节点k的层编号;
重复上述步骤,递归地设置节点k的子节点的层编号。
作为优选的,并对所述DAG进行分层后,还包括:
将同一层内的节点顺序进行调整,将同样大小的节点聚集在同一线程组中;
增加指示每个线程组需要循环次数的变量,通过无效节点填充线程组中的未填充剩余线程,使各种大小的节点正确地对应到线程组中。
一种基于DAG及矩阵重排的电力系统稀疏矩阵求解系统,包括电力系统信息获取模块、分层模块、矩阵重排模块和前代回代求解模块;
电力系统信息获取模块用于获取描述输电网络状态或描述设备运行情况的方程组在迭代求解过程中修正方程对应的稀疏矩阵;
分层模块用于基于所述稀疏矩阵生成包含全部依赖关系信息的有向无环图DAG,并对所述DAG进行分层,调整DAG中节点所在层的编号,将节点均匀的放入到各分层中;
矩阵重排模块根据DAG分层结果对所述稀疏矩阵的L矩阵、所述稀疏矩阵的U矩阵、所述稀疏矩阵对应的待解向量及所述稀疏矩阵对应的结果向量进行矩阵重排;
前代回代求解模块用于根据矩阵重排后的所述L矩阵、所述U矩阵、所述待解向量及所述结果向量,对所述稀疏矩阵进行前代回代求解。
一种基于DAG及矩阵重排的电力系统稀疏矩阵求解设备,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如上述的基于DAG的电力系统稀疏矩阵求解方法。
一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如上述的基于DAG的电力系统稀疏矩阵求解方法。
本发明提出一种基于DAG及矩阵重排的电力系统稀疏矩阵求解方法和系统,通过对电力系统稀疏矩阵的结构分析,对前代回代求解过程中的DAG生成算法进行了改进,将矩阵生成包含全部依赖关系信息的DAG图,再在此基础上,对DAG进行分层,使用多种方法调整节点所在层的编号,将节点尽可能均匀地放入各层,并根据分层结果对稀疏矩阵的L矩阵、稀疏矩阵的U矩阵、稀疏矩阵对应的待解向量及稀疏矩阵对应的结果向量进行矩阵重排,提高了并行前代回代计算的效率,能够有效提升在并行处理器上的稀疏前代回代的并行度和运算速度。
附图说明
图1为根据本发明实施例的基于DAG及矩阵重排的电力系统稀疏矩阵求解方法示意图;
图2为根据本发明实施例的稀疏矩阵求解的流程示意图;
图3为根据本发明实施例的基于节点的数据结构示意图;
图4为根据本发明实施例的基于DAG及矩阵重排的电力系统稀疏矩阵求解设备结构示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
如图1所示,图中示出了一种基于DAG及矩阵重排的电力系统稀疏矩阵求解方法,包括:
获取描述输电网络状态或描述设备运行情况的方程组在迭代求解过程中修正方程对应的稀疏矩阵;
基于所述稀疏矩阵生成包含全部依赖关系信息的有向无环图DAG,并对所述DAG进行分层,调整DAG中节点所在层的编号,将节点均匀的放入到各分层中;
根据DAG分层结果对所述稀疏矩阵的L矩阵、所述稀疏矩阵的U矩阵、所述稀疏矩阵对应的待解向量及所述稀疏矩阵对应的结果向量进行矩阵重排;
根据矩阵重排后的所述L矩阵、所述U矩阵、所述待解向量及所述结果向量,多所述稀疏矩阵进行前代回代求解。
在电力系统问题中,常常需要对多个结构相同的稀疏矩阵进行求解。为此,一般依据矩阵的结构进行符号分析,再根据符号分析的结果带入数据进行数值求解。对于同一结构的多个矩阵,符号分解只需进行一次,而数值求解需要进行多次。当数值求解进行的次数足够多时,符号分解的开销相当于均摊至每次符号分解的过程中,因此符号分解的算法效果的重要性要大大高于其速度的重要性。
稀疏矩阵求解的流程图如图2所示,包括稀疏矩阵结构符号分解,得到矩阵数值,并对矩阵数值进行数值求解。在本实施例中,主要对符号分解部分进行改进处理,具体方案为对矩阵进行DAG分析。
对于上述处理过程而言,DAG分层中每一层的节点编号并不连续,因而在访问GPU全局内存的过程中,只有对单一节点进行访问的部分具有局部性,对同一层的所有节点而言,内存的访问是相对随机的。通过对矩阵的重排,可以使得同一层中所需的数据集中在一起,使得内存访问能够连续进行,可以通过直接存储器访问(Direct Memory Access)等技术进行加速。
具体地,所述根据DAG分层结果对所述稀疏矩阵的L矩阵、所述稀疏矩阵的U矩阵、所述稀疏矩阵对应的待解向量及所述稀疏矩阵对应的结果向量进行矩阵重排,具体包括:
根据DAG分层结果获取每层中的所有节点,分别将所述L矩阵、所述U矩阵、所述待解向量及所述结果向量中与同一层中各节点对应的元素调整至相邻行,即完成对所述L矩阵、所述U矩阵、所述待解向量及所述结果向量的矩阵重排。
在本实施例中,为了能够保留足够的信息以对DAG进行更多的调整,本实施例中重写了DAG的分析算法,构造了基于节点的数据结构,将DAG中的所有信息原样保存,以便于进一步的优化,具体的,数据结构如图3所示。在此结构中,每一个节点都包含两个列表,分别保存了自己的所有父节点和子节点的指针,完整保留了所有原始信息。
在本实施例中,并对所述DAG进行分层具体包括:
在前代环节通过懒惰分层算法对所述DAG进行分层,在回代环节通过贪婪分层算法对所述DAG进行分层。
在本实施例中,在回代环节通过贪婪分层算法对所述DAG进行分层,具体包括:
对DAG树中的每个节点i,若节点i没有父节点,则设置节点i的层编号ei为0,并按以下流程设置节点i的子节点的层编号:对于节点i的每个子节点k,将k的层编号ek和ei+1中较大者设为节点k的层编号;
重复上述步骤,递归地设置节点k的子节点的层编号。
具体的,在本实施例中,采用基于图的DAG贪婪分层算法,如下所示,对DAG树中的每个节点i:
如果节点i没有父节点:
1、设置i的层编号ei为0;
2、设置节点i的子节点的层编号;
子节点的层编号的设置流程如下,对于节点i的每个子节点k:
1、设置k的层编号ek为ek和ei+1中较大者;
2、按相同流程设置k的子节点的层编号。
通过上述贪婪分层算法,可以得到与基于广度优先搜索的简单分层算法一致的结果,但由于其数据结构复杂度的上升,性能有一定损失。由于分层处理在多次求解过程中只进行一次,该部分带来的额外开销可以在后续的求解中被分摊。
具体的,在本实施例中,在前代环节通过懒惰分层算法(即从叶节点向根节点计算层数)对所述DAG进行分层,具体包括:
对DAG树中的每个节点i,若节点i没有子节点,则设置节点i的层编号ei为最大值,并按以下流程设置节点i的父节点的层编号:对节点i的每个父节点k,将k的层编号ek和ei-1中较小者设为节点k的层编号;
重复上述步骤,递归地设置节点k的父节点的层编号。
对于电力系统问题中的L矩阵而言,其DAG分层结果倾向于前几层并行度大,后续层数并行度快速减小。因此考虑使用与以上算法相对的算法,仅在下一层需要该节点结果时开始计算,称其为懒惰分层算法。与贪婪分层算法相对应,此算法从叶节点(没有子节点的节点)出发。懒惰分层算法(即从根节点向叶节点计算层数)的流程如下所示,对DAG树中的每个节点i:
如果节点i没有子节点:
1、设置i的层编号ei为最大值;
2、设置i的父节点的层编号;
父节点的层编号的设置流程如下,对于节点i的每个父节点k:
1、设置k的层编号ek为ek和ei-1中较小者;
2、按相同流程设置k的父节点的层编号。
L、U矩阵的使用两种算法的分层结果存在对称性,即L矩阵使用贪婪分层算法与U矩阵使用懒惰分层算法的结果对称;U矩阵使用贪婪分层算法与L矩阵使用懒惰分层算法的结果对称。这种对称性实际是由于对称矩阵的LU分解结果的对称性导致的。以分层的平均程度为指标对分层的结果进行评估,懒惰分层算法对于L矩阵的DAG分层结果相比之前有很大程度上的优化,而U矩阵则正相反。
据此,在本实施例中,在前代回代的流程中综合使用两种算法,即在前代环节使用懒惰分层算法,在回代阶段使用贪婪分层算法。此时,两个环节的DAG分层结果都相对较优,对后续求解过程的速度提升有一定帮助。
在本实施例中,并对所述DAG进行分层后,还包括:
将同一层内的节点顺序进行调整,将同样大小的节点聚集在同一线程组中;
增加指示每个线程组需要循环次数的变量,通过无效节点填充线程组中的未填充剩余线程,使各种大小的节点正确地对应到线程组中。
在本实施例中,采用CUDA(Compute Unified Device Architecture)来作为GPU通用计算(GPGPU)平台和编程模型,在CUDA C中,每个线程都有一个唯一的线程ID。CUDA使用一个3维向量threadIdx作为线程ID,以便于开发者在操作向量、矩阵、3阶张量时可以使用更自然的语法对各元素进行访问。在实际组织线程时,线程ID是以x、y、z的顺序组织的,即(x,y,z)的线程ID为x+yDx+zDxDy,其中Dx、Dy为线程块(block)在x、y方向上的规模。由于每个线程块上的线程需要居留于同一个流式多处理器(streaming multiprocessor),共享其存储资源,故线程块的规模是有限的,目前来说,每个线程块最多包含1024个线程。
在每个流式多处理器中,包含着多个流处理器(streaming processor)。在实际的执行过程中,流式多处理器将每32个线程组织为一个线程组(warp),这是GPU上进行线程调度的最小单位。同一个线程组中包含的32个线程是基于SIMT模式运行的,同一个线程组的所有线程都使用不同的数据执行同一条指令。这意味着程序在执行过程中发生分支时,线程组会串行地执行各个分支,这样的行为导致了线程组中未处于活动分支的部分线程处于不活动状态,降低了流处理器的使用率,造成计算资源的浪费。
线程块以相似的方式组织为线程网格(grid),线程网格的规模一般由数据的规模或系统流式多处理器数目决定,但不受流式多处理器数目的限制。
使用单个线程完成整个节点的计算过程,其计算流程包含了根据该行非零元位置和数目的多次求积和累加操作,需要使用循环的方式来进行运算。上述的关于线程调度方面的内容可知,由单个节点的线程处于一个32线程组成的线程组中,其中各线程处理的节点情况各不相同,导致了分支的产生,使得线程组的执行效率下降。
为了减少线程组内的分支,需要使其中的线程执行相同的逻辑。因此,在生成DAG分层的过程中,应将同一层内的节点顺序进行调整,将同样大小的节点聚集在同一线程组中,实现对齐。
在本实施例中,为了实现上述的优化,在DAG分层的生成过程中,额外增加了指示每个线程组需要循环次数的变量。同时,由于每一层的各种大小的节点不一定能够依次填充并对齐至各线程组,因此,在本实施例中,使用了一些无效节点填充了线程组中的剩余线程,使各种大小的节点能够正确地对齐到线程组,这些无效节点使用节点编号-1进行表示。
在本实施例中,将节点均匀的放入到各分层中后还包括:
在所述DAG中搜寻关键路径,保证所述关键路径上的节点在上一个节点完成之后立刻开始计算,而对其他节点的计算时机依据每层的并行度和节点关键程度进行调整;
所述每个分层中位于关键路径上的节点关键程度最高,关键路径外节点的关键程度按照不影响DAG用时的灵活程度增加依次降低。
本实施例中,以贪婪分层算法(即从根节点向叶节点计算层数)和懒惰分层算法(即从叶节点向根节点计算层数)为基础,参考了AOE(Activity On Edge)网AOV(ActivityOn Vertex)网中的关键路径计算的相关思想和方法,设计了基于关键路径分析的DAG分层算法,其基本方法如下:
1、在DAG中,设置至少一条关键路径,其所有节点必须在上一个节点完成之后立刻开始计算,否则会影响到整个DAG的用时;
2、在整个DAG中,每一个节点所具有的关键程度是不同的,位于关键路径上的节点关键程度最高,其他节点依据其能够在不影响整个DAG用时的情况下的灵活程度的增加依次降低;
3、在安排每一层的节点时,位于关键路径上的节点必须安排,其余节点的优先级应依照其关键程度而定。
在本实施例中,通过节点关键程度算法实现节点的关键程度计算,具体计算流程包括:
1、使用贪婪算法计算所需的层数nlevel
2、将DAG树的所有节点加入等待列表U;
对于每一层l,l的值从0至nlevel
1、遍历等待列表U,将其中所有没有依赖的节点移动到候选列表C;
2、遍历候选列表C,将其中所有关键程度为0的节点层编号设置为l,并移除出候选列表、移除后续节点的对其的依赖关系;
3、依关键程度数值从小到大(关键程序从高到低)遍历候选列表C,直至当前层达到平均并行度;
4、更新候选列表C包含节点及其子节点组成的子树的关键程度;
更新子树g的关键程度的算法流程如下:
1、使用懒惰算法计算g中所有节点的层编号;
2、使用贪婪算法计算g中所有节点的层编号;
3、将每个节点由两种算法计算得到层数的差作为节点的关键程度。
在本实施例中,还提出以下对DAG分层进行微调,以减小同一层节点种类,提高并行度的算法。其基本思路是将相同大小的节点调整至同一层,具体算法如下:
1、对于每一个节点i,定义其节点大小(入度)为degˉ(i),所在的DAG层为ei
2、给定系数k,计算δ(i)=[degˉ(i)+level(i)]mod k;
3、对所有节点ei顺序进行调整,使δ(i)=0。
如果对于所有节点的调整都能完成(即满足3中给定的条件),则整个DAG分层中每一层的节点大小的种类将下降至原先的1/k。
在实际算法实现中,对以贪婪算法得到的DAG分层,从后向前遍历节点,调整时将节点向后移动;懒惰算法则相反。
本实施例中还提供了一种基于DAG及矩阵重排的电力系统稀疏矩阵求解系统,包括电力系统信息获取模块、分层模块、矩阵重排模块和前代回代求解模块;
电力系统信息获取模块用于获取描述输电网络状态或描述设备运行情况的方程组在迭代求解过程中修正方程对应的稀疏矩阵;
分层模块用于基于所述稀疏矩阵生成包含全部依赖关系信息的有向无环图DAG,并对所述DAG进行分层,调整DAG中节点所在层的编号,将节点均匀的放入到各分层中;
矩阵重排模块根据DAG分层结果对所述稀疏矩阵的L矩阵、所述稀疏矩阵的U矩阵、所述稀疏矩阵对应的待解向量及所述稀疏矩阵对应的结果向量进行矩阵重排;
前代回代求解模块用于根据矩阵重排后的所述L矩阵、所述U矩阵、所述待解向量及所述结果向量,多所述稀疏矩阵进行前代回代求解。
图4是示出本申请实施例的基于DAG的电力系统稀疏矩阵求解设备的结构框图。
参照图4,所述基于DAG的电力系统稀疏矩阵求解设备,包括:处理器(processor)810、存储器(memory)830、通信接口(Communications Interface)820和总线840;
其中,
所述处理器810、存储器830、通信接口820通过所述总线840完成相互间的通信;
所述通信接口820用于该测试设备与显示装置的通信设备之间的信息传输;
所述处理器810用于调用所述存储器830中的程序指令,以执行上述各方法实施例所提供的基于DAG的电力系统稀疏矩阵求解方法,例如包括:
获取描述输电网络状态或描述设备运行情况的方程组在迭代求解过程中修正方程对应的稀疏矩阵;
基于所述稀疏矩阵生成包含全部依赖关系信息的有向无环图DAG,并对所述DAG进行分层,调整DAG中节点所在层的编号,将节点均匀的放入到各分层中,对分层后得到的矩阵数值进行前代回代求解。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行如上述的基于DAG的电力系统稀疏矩阵求解方法,例如包括:
获取描述输电网络状态或描述设备运行情况的方程组在迭代求解过程中修正方程对应的稀疏矩阵;
基于所述稀疏矩阵生成包含全部依赖关系信息的有向无环图DAG,并对所述DAG进行分层,调整DAG中节点所在层的编号,将节点均匀的放入到各分层中,对分层后得到的矩阵数值进行前代回代求解。
本实施例中还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如上述的基于DAG的电力系统稀疏矩阵求解方法,例如包括:
获取描述输电网络状态或描述设备运行情况的方程组在迭代求解过程中修正方程对应的稀疏矩阵;
基于所述稀疏矩阵生成包含全部依赖关系信息的有向无环图DAG,并对所述DAG进行分层,调整DAG中节点所在层的编号,将节点均匀的放入到各分层中,对分层后得到的矩阵数值进行前代回代求解。
综上所述,本发明提出一种基于DAG及矩阵重排的电力系统稀疏矩阵求解方法和系统,通过对电力系统稀疏矩阵的结构分析,对前代回代求解过程中的DAG生成算法进行了改进,将矩阵生成包含全部依赖关系信息的DAG图,再在此基础上,对DAG进行分层,使用多种方法调整节点所在层的编号,将节点尽可能均匀地放入各层,并根据分层结果对稀疏矩阵的L矩阵、稀疏矩阵的U矩阵、稀疏矩阵对应的待解向量及稀疏矩阵对应的结果向量进行矩阵重排,提高了并行前代回代计算的效率,能够有效提升在并行处理器上的稀疏前代回代的并行度和运算速度。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的显示装置的测试设备等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上各实施例仅用以说明本发明的实施例的技术方案,而非对其限制;尽管参照前述各实施例对本发明的实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明的实施例各实施例技术方案的范围。

Claims (9)

1.一种基于DAG及矩阵重排的电力系统稀疏矩阵求解方法,其特征在于,包括:
获取描述输电网络状态或描述设备运行情况的方程组在迭代求解过程中修正方程对应的稀疏矩阵;
基于所述稀疏矩阵生成包含全部依赖关系信息的有向无环图DAG,并对所述DAG进行分层,调整DAG中节点所在层的编号,将节点均匀的放入到各分层中;
根据DAG分层结果对所述稀疏矩阵的L矩阵、所述稀疏矩阵的U矩阵、所述稀疏矩阵对应的待解向量及所述稀疏矩阵对应的结果向量进行矩阵重排;
根据矩阵重排后的所述L矩阵、所述U矩阵、所述待解向量及所述结果向量,对所述稀疏矩阵进行前代回代求解;
所述根据DAG分层结果对所述稀疏矩阵的L矩阵、所述稀疏矩阵的U矩阵、所述稀疏矩阵对应的待解向量及所述稀疏矩阵对应的结果向量进行矩阵重排,具体包括:
根据DAG分层结果获取每层中的所有节点,分别将所述L矩阵、所述U矩阵、所述待解向量及所述结果向量中与同一层中各节点对应的元素调整至相邻行,即完成对所述L矩阵、所述U矩阵、所述待解向量及所述结果向量的矩阵重排。
2.根据权利要求1所述的方法,其特征在于,基于所述稀疏矩阵生成包含全部依赖关系信息的有向无环图DAG后还包括:
构造基于节点的数据结构,对DAG中的所有信息原样保存,每一个节点都包含两个列表,分别保存了自己的所有父节点和子节点的指针。
3.根据权利要求2所述的方法,其特征在于,并对所述DAG进行分层具体包括:
在前代环节通过懒惰分层算法对所述DAG进行分层,在回代环节通过贪婪分层算法对所述DAG进行分层。
4.根据权利要求3所述的方法,其特征在于,在前代环节通过懒惰分层算法对所述DAG进行分层,具体包括:
对DAG树中的每个节点i,若节点i没有子节点,则设置节点i的层编号ei为最大值,并按以下流程设置节点i的父节点的层编号:对节点i的每个父节点k,将k的层编号ek和ei-1中较小者设为节点k的层编号;
重复上述步骤,递归地设置节点k的父节点的层编号。
5.根据权利要求3所述的方法,其特征在于,在回代环节通过贪婪分层算法对所述DAG进行分层,具体包括:
对DAG树中的每个节点i,若节点i没有父节点,则设置节点i的层编号ei为0,并按以下流程设置节点i的子节点的层编号:对于节点i的每个子节点k,将k的层编号ek和ei+1中较大者设为节点k的层编号;
重复上述步骤,递归地设置节点k的子节点的层编号。
6.根据权利要求1所述的方法,其特征在于,并对所述DAG进行分层后,还包括:
将同一层内的节点顺序进行调整,将同样大小的节点聚集在同一线程组中;
增加指示每个线程组需要循环次数的变量,通过无效节点填充线程组中的未填充剩余线程,使各种大小的节点正确地对应到线程组中。
7.一种基于DAG及矩阵重排的电力系统稀疏矩阵求解系统,其特征在于,包括电力系统信息获取模块、分层模块、矩阵重排模块和前代回代求解模块;
电力系统信息获取模块用于获取描述输电网络状态或描述设备运行情况的方程组在迭代求解过程中修正方程对应的稀疏矩阵;
分层模块用于基于所述稀疏矩阵生成包含全部依赖关系信息的有向无环图DAG,并对所述DAG进行分层,调整DAG中节点所在层的编号,将节点均匀的放入到各分层中;
矩阵重排模块根据DAG分层结果对所述稀疏矩阵的L矩阵、所述稀疏矩阵的U矩阵、所述稀疏矩阵对应的待解向量及所述稀疏矩阵对应的结果向量进行矩阵重排;
前代回代求解模块用于根据矩阵重排后的所述L矩阵、所述U矩阵、所述待解向量及所述结果向量,多所述稀疏矩阵进行前代回代求解;
所述矩阵重排模块具体用于:
根据DAG分层结果获取每层中的所有节点,分别将所述L矩阵、所述U矩阵、所述待解向量及所述结果向量中与同一层中各节点对应的元素调整至相邻行,即完成对所述L矩阵、所述U矩阵、所述待解向量及所述结果向量的矩阵重排。
8.一种基于DAG及矩阵重排的电力系统稀疏矩阵求解设备,其特征在于,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至6任一所述的方法。
9.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至6任一所述的方法。
CN201810771319.2A 2018-07-13 2018-07-13 基于dag及矩阵重排的电力系统稀疏矩阵求解方法和系统 Active CN108984483B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810771319.2A CN108984483B (zh) 2018-07-13 2018-07-13 基于dag及矩阵重排的电力系统稀疏矩阵求解方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810771319.2A CN108984483B (zh) 2018-07-13 2018-07-13 基于dag及矩阵重排的电力系统稀疏矩阵求解方法和系统

Publications (2)

Publication Number Publication Date
CN108984483A CN108984483A (zh) 2018-12-11
CN108984483B true CN108984483B (zh) 2020-06-09

Family

ID=64537435

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810771319.2A Active CN108984483B (zh) 2018-07-13 2018-07-13 基于dag及矩阵重排的电力系统稀疏矩阵求解方法和系统

Country Status (1)

Country Link
CN (1) CN108984483B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110598174B (zh) * 2019-09-11 2022-06-21 北京华大九天科技股份有限公司 一种基于gpu架构的稀疏矩阵的回代求解方法
WO2021146910A1 (zh) * 2020-01-21 2021-07-29 深圳元戎启行科技有限公司 基于图计算的车辆驾驶数据处理方法、装置和计算机设备
CN113111619A (zh) * 2021-04-16 2021-07-13 清华大学 基于谱图稀疏化的供电网络仿真方法及系统
CN115167813A (zh) * 2022-07-06 2022-10-11 芯和半导体科技(上海)有限公司 一种大型稀疏矩阵加速求解方法、系统及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102142052A (zh) * 2011-03-28 2011-08-03 清华大学 一种针对电路仿真中电路稀疏矩阵的快速lu分解方法
CN102156777A (zh) * 2011-04-08 2011-08-17 清华大学 电路仿真时电路稀疏矩阵的基于消去图的并行分解方法
CN102426619A (zh) * 2011-10-31 2012-04-25 清华大学 针对电路仿真的自适应并行lu分解方法
CN102708250A (zh) * 2012-05-10 2012-10-03 天津大学 基于树形分层双向迭代的电力系统数字混合仿真方法
CN103399841A (zh) * 2013-07-31 2013-11-20 清华大学 基于gpu的稀疏矩阵lu分解方法
CN103617342A (zh) * 2013-10-22 2014-03-05 芜湖大学科技园发展有限公司 一种电网状态估计多算法融合系统
CN103793590A (zh) * 2012-11-01 2014-05-14 同济大学 一种基于gpu的快速求解配电网潮流的计算方法
CN105117488A (zh) * 2015-09-19 2015-12-02 大连理工大学 一种基于混合层次聚类的rdf数据平衡分割算法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10467528B2 (en) * 2015-08-11 2019-11-05 Oracle International Corporation Accelerated TR-L-BFGS algorithm for neural network

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102142052A (zh) * 2011-03-28 2011-08-03 清华大学 一种针对电路仿真中电路稀疏矩阵的快速lu分解方法
CN102156777A (zh) * 2011-04-08 2011-08-17 清华大学 电路仿真时电路稀疏矩阵的基于消去图的并行分解方法
CN102426619A (zh) * 2011-10-31 2012-04-25 清华大学 针对电路仿真的自适应并行lu分解方法
CN102708250A (zh) * 2012-05-10 2012-10-03 天津大学 基于树形分层双向迭代的电力系统数字混合仿真方法
CN103793590A (zh) * 2012-11-01 2014-05-14 同济大学 一种基于gpu的快速求解配电网潮流的计算方法
CN103399841A (zh) * 2013-07-31 2013-11-20 清华大学 基于gpu的稀疏矩阵lu分解方法
CN103617342A (zh) * 2013-10-22 2014-03-05 芜湖大学科技园发展有限公司 一种电网状态估计多算法融合系统
CN105117488A (zh) * 2015-09-19 2015-12-02 大连理工大学 一种基于混合层次聚类的rdf数据平衡分割算法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
应用有向图分层的控制系统暂态仿真并行算法及其GPU实现;宋炎侃 等;《电力系统自动化》;20160625;第40卷(第12期);第137-143页 *

Also Published As

Publication number Publication date
CN108984483A (zh) 2018-12-11

Similar Documents

Publication Publication Date Title
CN108984483B (zh) 基于dag及矩阵重排的电力系统稀疏矩阵求解方法和系统
CN110135573B (zh) 一种深度学习模型的训练方法、计算设备以及系统
Plimpton et al. Mapreduce in MPI for large-scale graph algorithms
CN105739951B (zh) 一种基于gpu的l1最小化问题快速求解方法
CN111371616B (zh) 一种面向numa架构服务器的虚拟网络功能链部署方法和系统
CN109978171B (zh) 一种基于云计算的Grover量子仿真算法优化方法
Azad et al. Distributed-memory algorithms for maximum cardinality matching in bipartite graphs
CN113553288B (zh) 针对hpcg基准测试的两层分块多色并行优化方法
CN108985622B (zh) 一种基于dag的电力系统稀疏矩阵并行求解方法和系统
Migliorini et al. Machine learning pipelines with modern big data tools for high energy physics
Perepelkina et al. Extending the problem data size for GPU simulation beyond the GPU memory storage with LRnLA algorithms
Zhou et al. DistTGL: Distributed Memory-Based Temporal Graph Neural Network Training
CN109062865B (zh) 基于懒惰分层的电力系统下三角方程组求解方法和系统
CN109062866B (zh) 基于贪婪分层的电力系统上三角方程组求解方法和系统
CN111722923A (zh) 一种异构资源的调用方法、装置和计算机可读存储介质
CN108599173B (zh) 一种批量潮流的求解方法及装置
CN108062249A (zh) 基于大数据的云端数据分配调度方法
CA3161314A1 (en) Fast quantum circuit simulations with parallel task-based tensor network contraction
Zou et al. Direction-optimizing breadth-first search on CPU-GPU heterogeneous platforms
Sreedhar et al. Efficient training of convolutional neural nets on large distributed systems
Kuźnik et al. Graph grammar-based multi-frontal parallel direct solver for two-dimensional isogeometric analysis
Li et al. cuFasterTucker: A Stochastic Optimization Strategy for Parallel Sparse FastTucker Decomposition on GPU Platform
Kumar et al. Efficient training of convolutional neural nets on large distributed systems
Bharadwaj et al. Distributed-Memory Randomized Algorithms for Sparse Tensor CP Decomposition
CN109992860A (zh) 基于gpu的电磁暂态并行仿真方法和系统

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