Processing

Please wait...

PATENTSCOPE will be unavailable a few hours for maintenance reason on Tuesday 27.07.2021 at 12:00 PM CEST
Settings

Settings

Goto Application

1. WO2018133348 - STATIC SECURITY ANALYSIS COMPUTATION METHOD, APPARATUS, AND COMPUTER STORAGE MEDIUM

Document

说明书

发明名称 0001   0002   0003   0004   0005   0006   0007   0008   0009   0010   0011   0012   0013   0014   0015   0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067   0068   0069   0070   0071   0072   0073   0074   0075   0076   0077   0078   0079   0080   0081   0082   0083   0084   0085   0086   0087   0088   0089   0090   0091   0092   0093   0094   0095   0096   0097   0098   0099   0100   0101   0102   0103   0104   0105   0106   0107   0108   0109   0110   0111   0112   0113   0114   0115   0116   0117   0118   0119   0120   0121   0122   0123   0124   0125   0126   0127   0128   0129   0130   0131   0132   0133   0134   0135   0136   0137   0138   0139   0140   0141   0142   0143   0144   0145   0146   0147   0148   0149   0150   0151   0152   0153   0154   0155   0156   0157   0158   0159   0160   0161   0162   0163   0164   0165   0166   0167   0168   0169   0170   0171   0172   0173   0174   0175   0176   0177   0178   0179   0180   0181   0182   0183   0184   0185   0186   0187   0188   0189   0190   0191  

权利要求书

1   2   3   4   5   6   7   8  

附图

0001   0002   0003   0004  

说明书

发明名称 : 一种静态安全分析计算方法、装置及计算机存储介质

[0001]
相关申请的交叉引用
[0002]
本申请基于申请号为201710037124.0、申请日为2017年01月19日的中国专利申请提出,并要求该中国专利申请的优先权,该中国专利申请的全部内容在此引入本申请作为参考。

技术领域

[0003]
本发明涉及电力系统自动化调度技术领域,尤其涉及一种CPU+多GPU异构模式静态安全分析计算方法、装置及计算机存储介质。

背景技术

[0004]
随着电力系统调度一体化技术的快速发展,电网计算规模日趋扩大。在全网状态估计断面基础上进行静态安全分析计算,计算速度将难以满足需求。一方面,需要进行开断分析的预想事故数目大幅度增大,即使通过直流法筛选,需要详细开断扫描的预想故障数目也将非常可观。另一方面,每个预想事故进行开断潮流模拟计算,计算节点数增大,造成单潮流计算速度缓慢。此外,电网规模的扩大造成需要越限监视的设备数和稳定断面数大幅度增加,计算量持续增大。因此,现代电力系统的迅速发展,对调度系统静态安全分析应用在计算上的性能问题提出了严峻的考验。传统串行算法采用直流法筛选结合基于稀疏矩阵的局部因子分解等手段进行串行工程化处理,过滤非严重故障,有效提高单次开断分析速度,但仍然无法满足工程应用需求。
[0005]
求解过程发现,静态安全分析预想故障之间相互解耦相互独立,可分解为多个独立的全潮流计算,具有并行化处理先天优势,这种特性逐渐受 到研究人员关注,并开始尝试采用并行算法寻求突破。
[0006]
近年来,计算机领域英伟达公司提出了统一计算设备架构(CUDA,Compute Unified Device Architecture),为图形处理器(GPU,Graphic Processing Unit)发展提供了良好的并行计算框架,能够适用于电力系统具有并行特性的研究领域。同时,在CPU领域,用于共享内存并行系统的OpenMP多线程技术,由编译器自动将循环并行化,能够有效提高多处理器系统应用程序性能。
[0007]
综上,对于静态安全分析快速扫描应用场景,如何有效使用GPU并行和CPU并行技术,满足工程现场对调度自动化系统静态安全分析应用计算规模及计算效率越来越高的需求,是值得深思探究的研究方向。
[0008]
发明内容
[0009]
为了克服现有技术的上述缺陷,本发明实施例期望提供一种CPU+多GPU异构模式静态安全分析计算方法、装置及计算机存储介质,针对实际工程应用中大电网静态安全分析快速扫描的需求,在统一计算设备架构(CUDA)平台上,根据系统GPU配置情况和计算需求,采用OpenMp多线程技术分配相应线程数,每个线程与单个GPU唯一对应,基于CPU与GPU混合编程开发,构建CPU+多GPU异构计算模式协同配合完成预想故障并行计算,在单个预想故障潮流计算基础上,实现多个开断潮流迭代过程高度同步并行,通过元素级细粒度并行大幅提高静态安全分析预想故障扫描并行处理能力,为互联大电网一体化调度系统在线安全分析预警扫描提供了有力的技术支撑。
[0010]
为达到上述目的,本发明实施例的技术方案是这样实现的:
[0011]
第一方面,本发明实施例提供了一种CPU+多GPU异构模式静态安全分析计算方法,所述CPU+多GPU异构模式静态安全分析计算方法包括:在统一计算设备架构(CUDA)平台上,采用基于共享内存并行系统的 OpenMP多线程技术,综合考虑GPU配置情况及预想故障计算需求,确定CPU线程数目,构建CPU+多GPU异构模式,每块GPU卡内部按照CPU+单GPU模式协同配合完成并行扫描任务,在单个预想故障潮流计算基础上,实现多个开断潮流迭代过程高度同步并行,通过元素级细粒度并行大幅提高静态安全分析预想故障扫描并行处理能力。
[0012]
在一实施例中,所述CPU+多GPU异构模式静态安全分析计算方法具体包括以下步骤:
[0013]
步骤1)、获取状态估计实时断面,基于牛顿-拉夫逊算法进行基态潮流计算,提供一个可供复用共享的数据断面;
[0014]
步骤2)、根据用户需求,对全网设备进行拓扑扫描,形成预想故障集,针对每个预想故障进行深度拓扑搜索,形成实际开断支路-节点信息;
[0015]
步骤3)、初始化CUDA架构,根据多开断并行计算需求将数据进行打包处理,并分配GPU内存空间;
[0016]
步骤4)、根据GPU配置情况和实际计算量,对开断计算资源进行合理化分配,评估需要启用的GPU数目,采用OpenMP技术生成相应的线程数,以最大程度发挥GPU并行计算能力;
[0017]
步骤5)、在CPU的统筹下,潮流计算迭代过程,包括导纳阵修正雅克比矩阵求解、修正方程求解、状态量更新、支路潮流计算及设备越限校核,全部交由GPU并行完成,所有开断故障迭代高度并行,根据每一步计算任务的并行特性构造相应的内核函数,在细粒度并行层面上完成迭代过程中元素并行计算任务;
[0018]
步骤6)、判断预想故障是否全部扫描完成,如果否,则转入步骤4),对剩余的开断故障重新进行资源分配,如果全部完成,则转入步骤7);
[0019]
步骤7)、结果展示,根据扫描结果,对故障开断造成的设备或断面越限重载信息进行展示,并根据调度系统静态安全分析模块实用化需求进行 扫描结果统计。
[0020]
在一实施例中,所述步骤4)具体包括:
[0021]
步骤(41)、根据开断计算需求和GPU配置情况,优化分配开断计算资源,评估单块GPU单次最大扫描开断数:
[0022]
[数0001]


[0023]
其中,S_max为GPU卡总内存空间,S为单个潮流计算所需内存大小,M_max为单块GPU卡所能计算的最大开断数;
[0024]
根据式(1),计算所需启动的GPU卡数目为:
[0025]
[数0002]


[0026]
其中,α表示为取整,n为本轮所需启动的GPU卡数,N为系统配置的GPU卡总数,M_cal为本轮静态安全分析所需计算的开断总数,M_max·N为多GPU一次计算开断能力;
[0027]
根据式(2),按照平均分配原则,每块卡实际计算开断数:
[0028]
[数0003]


[0029]
当M_max·N≤M_cal,意味着GPU全部参与计算无法一次完成所有开断计算,则将剩余开断M_cal′重新按照式(2-3)进行新一轮分配,分批多次计算,计算公式为:
[0030]
M_cal′=M_cal-M_max·N (4)
[0031]
步骤(42)、在共享复用的基态断面模型数据基础上,基于OpenMP多线程技术根据实际运行GPU卡数目n分配相应的CPU线程数,每个CPU线程与单个GPU唯一对应,构建CPU+多GPU异构模式,在单个GPU卡内按照CPU+单GPU异构模式进行并行运算。
[0032]
在一实施例中,所述步骤5)包括以下步骤:
[0033]
步骤(51)、在基态导纳阵Y0基础上,根据N-1开断支路-节点信息,定义内核函数fun_ker nel_1,对分配至该卡的开断故障同时进行节点导纳阵局部修正工作,并修改节点注入信息,通过导纳阵和节点信息的变化来模拟设备开断;
[0034]
步骤(52)、根据步骤(51)形成开断导纳阵Ym,完成雅克比矩阵元素并行计算任务,为便于调用CUDA内核函数,潮流计算雅克比分块矩阵中各元素采用如下计算公式:
[0035]
[数0004]


[0036]
[数0005]


[0037]
[数0006]


[0038]
[数0007]


[0039]
其中,G ii,B ii,G ij,B ij分别为导纳阵非零元,θ ij为i,j节点相角差,P i,Q i为i节点注入功率,V i,V j分别为i,j节点电压幅值;
[0040]
分块矩阵各元素均为状态量节点电压相角,导纳阵元素及三角函数的四则基本运算且求解过程互不影响,具有明显的并行特性;
[0041]
分别定义4个内核函数对应计算分块矩阵中各元素值,单卡内,m个开断故障雅克比H矩阵计算量:
[0042]
h=m×h nozero (9)
[0043]
其中,h nozero为H阵非零元数,m为开断数;
[0044]
在CUDA架构中,GPU具有多个流处理器(SM,Streaming Multiprocessors),可提供多个线程调用。h个元素之间没有任何耦合关系, 具有高度的元素级细粒度并行特性,按式(5)定义内核函数fun_ker nel_2_H完成式向量乘和向量加操作,CPU调用fun_ker nel_2_H函数,GPU根据fun_ker nel_2_H传入函数参数启用h个GPU多线程,同时完成式(5)并行操作;
[0045]
步骤(53)、根据步骤(51)形成的开断导纳阵Ym和初始节点注入量,按照式(10)进行节点注入功率残差计算:
[0046]
[数0008]


[0047]
其中,P is,Q is分别为节点i的有功、无功注入量,由上式可以看出,各节点注入量残差均为状态量节点电压相角,导纳阵元素及三角函数的四则基本运算,与其他节点功率残差求解过程互不依赖,定义fun_ker nel_3内核函数,启用流处理器(SM)中多个线程,完成m个开断故障所有计算节点功率不平衡量的并行计算任务,详细并行计算过程与步骤(52)相似;
[0048]
步骤(54)、检查功率残差是否满足收敛判断依据,如果满足,则跳转至步骤(58),如果不满足,则继续转入步骤(55)进行迭代;
[0049]
首先,定义fun_ker nel_4内核函数,GPU对各开断节点功率残差按式(11)进行收敛检查,如果满足收敛条件则记录该开断故障潮流收敛;
[0050]
||ΔP t,ΔQ t||<ε t≤T (11)
[0051]
其中,ε为功率收敛判据,ΔP t,ΔQ t分别为迭代t次的功率偏差,T为最大迭代次数;
[0052]
再次,由于各开断故障收敛迭代步数不一致,设定k≥80%开断故障已收敛,则结束潮流迭代过程,否则所有开断故障继续进行潮流迭代,直至满足k≥80%收敛条件或者达到最大迭代次数,跳转至步骤(58);
[0053]
步骤(55)、对步骤(52)所形成的雅克比矩阵进行LU分解,结合步骤(53)计算的节点功率残差进行线性方程组求解,定义fun_ker nel_5内核 函数,对线性方程组进行任务级并行求解;
[0054]
步骤(56)、由步骤(55)所得的线性方程组解对初始状态向量按式(12)进行更新
[0055]
[数0009]


[0056]
式中, 分别为线性方程组第i个潮流方程式状态向量第k次迭代前、迭代后值, 为第k次修正值,n为系统节点数,r为PV节点数;
[0057]
由上式可见,迭代过程中每一个节点向量更新前后仅与该节点增量相关,不依赖于其他任何节点计算值,具有并行天然属性,可通过GPU多线程并行实现节点电压更新任务;
[0058]
将式(12)定义为一个加运算的内核函数fun_ker nel_6,对于m个预想故障并行任务,共需要m×(2(n-1)-r)个线程同步执行fun_ker nel_6完成一次状态量更新计算;
[0059]
步骤(57)、跳转至步骤(52)继续迭代;
[0060]
步骤(58)、根据当前收敛的开断故障潮流计算结果,进行支路潮流计算,由于支路潮流仅和支路参数及两侧节点电压值相关,互不依赖,定义fun_ker nel_7内核函数,完成支路潮流并行计算;
[0061]
步骤(59)、根据步骤(58)支路潮流计算结果,对各支路或稳定断面进行重载越限校验,并保存当前所有开断故障造成的重载越限结果,定义fun_ker nel_8内核函数,完成支路或稳定断面重载越限校验并行计算。
[0062]
第二方面,本发明实施例提供了一种CPU+多GPU异构模式静态安全分析计算装置,所述装置包括:
[0063]
存储器,用于存储计算机程序;
[0064]
处理器,与所述存储器连接,用于通过执行所述计算机程序,实现前述任意一个技术方案提供的CPU+多GPU异构模式静态安全分析计算方法。
[0065]
第三方面,本发明实施例还提供了一种计算机存储介质,所述计算机 存储介质中存储有计算机可执行指令,所述计算机可执行指令用于执行前述任意一个技术方案提供的CPU+多GPU异构模式静态安全分析计算方法。
[0066]
本发明实施例所述技术方案的有益效果是:
[0067]
本发明实施例所述的OpenMP技术的CPU+多GPU异构模式静态安全分析计算方法、装置及计算机存储介质,在统一计算设备架构(CUDA)平台上,能够根据系统GPU配置情况和计算需求,采用OpenMp多线程技术分配相应线程数,构建CPU+多GPU异构计算模式协同配合完成预想故障并行计算,在单个预想故障潮流计算基础上,实现多个开断潮流迭代过程高度同步并行,有效提升静态安全分析预想故障扫描并行处理能力,适用于调度一体化大规模系统对静态安全分析预想故障快速扫描应用场景,对提升大电网静态安全分析扫描计算效率具有非常重要的应用价值。

附图说明

[0068]
图1为本发明实施例提供的CPU+多GPU异构模式计算流程图;
[0069]
图2为本发明实施例提供的CPU+多GPU异构模式结构示意图;
[0070]
图3为本发明实施例提供的雅克比分块矩阵H元素并行计算示意图;
[0071]
图4为本发明实施例提供的CPU+多GPU异构模式静态安全分析计算装置的组成结构示意图。

具体实施方式

[0072]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
[0073]
本发明的目的在于提出一种适用于静态安全分析的快速并行方法。针对实际工程应用中大电网静态安全分析快速扫描的需求,在统一计算设备架构(CUDA)平台上,根据系统GPU配置情况和计算需求,采用OpenMp多线程技术分配相应线程数,每个线程与单个GPU唯一对应,基于CPU 与GPU混合编程开发,构建CPU+多GPU异构计算模式协同配合完成预想故障并行计算,在单个预想故障潮流计算基础上,实现多个开断潮流迭代过程高度同步并行,通过元素级细粒度并行大幅提高静态安全分析预想故障扫描并行处理能力,为互联大电网一体化调度系统在线安全分析预警扫描提供了有力的技术支撑。
[0074]
本发明实施例提供了一种CPU+多GPU异构模式静态安全分析计算方法,其中,在CUDA平台上,采用基于共享内存并行系统的OpenMP多线程技术,综合考虑GPU配置情况及预想故障计算需求,确定CPU线程数目,构建CPU+多GPU异构模式,每块GPU卡内部按照CPU+单GPU模式协同配合完成并行扫描任务,在单个预想故障潮流计算基础上,实现多个开断潮流迭代过程高度同步并行,通过元素级细粒度并行大幅提高静态安全分析预想故障扫描并行处理能力。
[0075]
上述的一种CPU+多GPU异构模式静态安全分析计算方法,包括以下步骤,如图1所示:
[0076]
步骤1)、获取状态估计实时断面,基于牛顿-拉夫逊算法进行基态潮流计算,提供一个可供复用共享的数据断面;
[0077]
步骤2)、根据用户需求,对全网设备进行拓扑扫描,形成预想故障集,针对每个预想故障进行深度拓扑搜索,形成实际开断支路-节点信息;
[0078]
步骤3)、初始化CUDA架构,根据多开断并行计算需求将数据进行打包处理,并分配GPU内存空间;
[0079]
步骤4)、根据GPU配置情况和实际计算量,对开断计算资源进行合理化分配,评估需要启用的GPU数目,采用OpenMP技术生成相应的线程数,以最大程度发挥GPU并行计算能力,OpenMP技术是一套用于共享内存并行系统多线程程序设计的指导性编译处理方案;
[0080]
步骤5)、在CPU的统筹下,潮流计算迭代过程,包括导纳阵修正雅克 比矩阵求解、修正方程求解、状态量更新、支路潮流计算及设备越限校核,全部交由GPU并行完成,所有开断故障迭代高度并行,根据每一步计算任务的并行特性构造相应的内核函数,在细粒度并行层面上完成迭代过程中元素并行计算任务;
[0081]
步骤6)、判断预想故障是否全部扫描完成,如果否,则转入步骤4),对剩余的开断故障重新进行资源分配,如果全部完成,则转入步骤7);
[0082]
步骤7)、结果展示,根据扫描结果,对故障开断造成的设备或断面越限重载信息进行展示,并根据调度系统静态安全分析模块实用化需求进行扫描结果统计。
[0083]
本实施例中,所述步骤4)具体包括:
[0084]
步骤(41)、根据开断计算需求和GPU配置情况,优化分配开断计算资源,评估单块GPU单次最大扫描开断数:
[0085]
[数0010]


[0086]
其中,S_max为GPU卡总内存空间,S为单个潮流计算所需内存大小,M_max为单块GPU卡所能计算的最大开断数;
[0087]
根据式(1),计算所需启动的GPU卡数目为:
[0088]
[数0011]


[0089]
其中,α表示为取整,n为本轮所需启动的GPU卡数,N为系统配置的GPU卡总数,M_cal为本轮静态安全分析所需计算的开断总数,M_max·N为多GPU一次计算开断能力;
[0090]
根据式(2),按照平均分配原则,每块卡实际计算开断数:
[0091]
[数0012]


[0092]
当M_max·N≤M_cal,意味着GPU全部参与计算无法一次完成所有开 断计算,则将剩余开断M_cal′重新按照式(2-3)进行新一轮分配,分批多次计算,计算公式为:
[0093]
M_cal′=M_cal-M_max·N (4)
[0094]
步骤(42)、在共享复用的基态断面模型数据基础上,基于OpenMP多线程技术根据实际运行GPU卡数目n分配相应的CPU线程数,每个CPU线程与单个GPU唯一对应,构建CPU+多GPU异构模式,如图2所示,在单个GPU卡按照CPU+单GPU异构模式进行并行运算。
[0095]
本实施例中,所述步骤5)包括以下步骤:
[0096]
步骤(51)、在基态导纳阵Y0基础上,根据N-1开断支路-节点信息,定义内核函数fun_ker nel_1,对分配至该卡的开断故障同时进行节点导纳阵局部修正工作,并修改节点注入信息,通过导纳阵和节点信息的变化来模拟设备开断;
[0097]
步骤(52)、根据步骤(51)形成开断导纳阵Ym,完成雅克比矩阵元素并行计算任务,为便于调用CUDA内核函数,潮流计算雅克比分块矩阵中各元素采用如下计算公式:
[0098]
[数0013]


[0099]
[数0014]


[0100]
[数0015]


[0101]
[数0016]


[0102]
其中,G ii,B ii,G ij,B ij分别为导纳阵非零元,θ ij为i,j节点相角差,P i,Q i为i节点注入功率,V i,V j分别为i,j节点电压幅值;
[0103]
分块矩阵各元素均为状态量节点电压相角,导纳阵元素及三角函数的 四则基本运算且求解过程互不影响,具有明显的并行特性;
[0104]
分别定义4个内核函数对应计算分块矩阵中各元素值,单卡内,m个开断故障雅克比H矩阵计算量:
[0105]
h=m×h nozero (9)
[0106]
其中,h nozero为H阵非零元数,m为开断数;
[0107]
在CUDA架构中,GPU具有多个流处理器(SM),可提供多个线程调用。h个元素之间没有任何耦合关系,具有高度的元素级细粒度并行特性,按式(5)定义内核函数fun_ker nel_2_H完成式向量乘和向量加操作,H阵元素多线程并行计算如图3所示,CPU调用fun_ker nel_2_H函数,GPU根据fun_ker nel_2_H传入函数参数启用h个GPU多线程,每一个线程对应于H阵中一个非零元,在t0时刻按照式(5)并发执行,共同完成雅克比矩阵元素生成工作;
[0108]
步骤(53)、根据步骤(51)形成的开断导纳阵Ym和初始节点注入量,按照式(10)进行节点注入功率残差计算:
[0109]
[数0017]


[0110]
其中,P is,Q is分别为节点i的有功、无功注入量,由上式可以看出,各节点注入量残差均为状态量节点电压相角,导纳阵元素及三角函数的四则基本运算,与其他节点功率残差求解过程互不依赖,定义fun_ker nel_3内核函数,启用流处理器(SM)中多个线程,完成m个开断故障所有计算节点功率不平衡量的并行计算任务,详细并行计算过程与步骤(52)相似;
[0111]
步骤(54)、检查功率残差是否满足收敛判断依据,如果满足,则跳转至步骤(58),如果不满足,则继续转入步骤(55)进行迭代;
[0112]
首先,定义fun_ker nel_4内核函数,GPU对各开断节点功率残差按式(11)进行收敛检查,如果满足收敛条件则记录该开断故障潮流收敛;
[0113]
||ΔP t,ΔQ t||<ε t≤T (11)
[0114]
其中,ε为功率收敛判据,ΔP t,ΔQ t分别为迭代t次的功率偏差,T为最大迭代次数;
[0115]
再次,由于各开断故障收敛迭代步数不一致,设定k≥80%开断故障已收敛,则结束潮流迭代过程,否则所有开断故障继续进行潮流迭代,直至满足k≥80%收敛条件或者达到最大迭代次数,跳转至步骤(58);
[0116]
步骤(55)、对步骤(52)所形成的雅克比矩阵进行LU分解,结合步骤(53)计算的节点功率残差进行线性方程组求解,定义fun_ker nel_5内核函数,对线性方程组进行任务级并行求解;
[0117]
步骤(56)、由步骤(55)所得的线性方程组解对初始状态向量按式(12)进行更新,
[0118]
[数0018]


[0119]
式中, 分别为线性方程组第i个潮流方程式状态向量第k次迭代前、迭代后值, 为第k次修正值,n为系统节点数,r为PV节点数;
[0120]
由上式可见,迭代过程中每一个节点向量更新前后仅与该节点增量相关,不依赖于其他任何节点计算值,具有并行天然属性,可通过GPU多线程并行实现节点电压更新任务;
[0121]
将式(12)定义为一个加运算的内核函数fun_ker nel_6,对于M个预想故障并行任务,共需要M×(2(n-1)-r)个线程同步执行fun_ker nel_6完成一次状态量更新计算;
[0122]
步骤(57)、跳转至步骤(52)继续迭代;
[0123]
步骤(58)、根据当前收敛的开断故障潮流计算结果,进行支路潮流计算,由于支路潮流仅和支路参数及两侧节点电压值相关,互不依赖,定义fun_ker nel_7内核函数,完成支路潮流并行计算;
[0124]
步骤(59)、根据步骤(58)的支路潮流计算结果,对各支路或稳定断 面进行重载越限校验,并保存当前所有开断故障造成的重载越限结果,定义fun_ker nel_8内核函数,完成支路或稳定断面重载越限校验并行计算。
[0125]
为实现上述方法,本发明实施例还提供了一种CPU+多GPU异构模式静态安全分析计算装置,图4为本发明实施例CPU+多GPU异构模式静态安全分析计算装置的组成结构示意图,该装置包括:
[0126]
存储器10,用于存储计算机程序;
[0127]
处理器20,与所述存储器10连接,用于通过执行所述计算机程序,实现前述任意一个技术方案提供的CPU+多GPU异构模式静态安全分析计算方法。
[0128]
作为一种实施方式,所述处理器20,用于执行以下步骤:
[0129]
步骤1)、获取状态估计实时断面,基于牛顿-拉夫逊算法进行基态潮流计算,提供一个可供复用共享的数据断面;
[0130]
步骤2)、根据用户需求,对全网设备进行拓扑扫描,形成预想故障集,针对每个预想故障进行深度拓扑搜索,形成实际开断支路-节点信息;
[0131]
步骤3)初始化CUDA架构,根据多开断并行计算需求将数据进行打包处理,并分配GPU内存空间;
[0132]
步骤4)、根据GPU配置情况和实际计算量,对开断计算资源进行合理化分配,评估需要启用的GPU数目,采用OpenMP技术生成相应的线程数,以最大程度发挥GPU并行计算能力;
[0133]
步骤5)、在CPU的统筹下,潮流计算迭代过程,包括导纳阵修正雅克比矩阵求解、修正方程求解、状态量更新、支路潮流计算及设备越限校核,全部交由GPU并行完成,所有开断故障迭代高度并行,根据每一步计算任务的并行特性构造相应的内核函数,在细粒度并行层面上完成迭代过程中元素并行计算任务;
[0134]
步骤6)、判断预想故障是否全部扫描完成,如果否,则转入步骤4), 对剩余的开断故障重新进行资源分配,如果全部完成,则转入步骤7);
[0135]
步骤7)、结果展示,根据扫描结果,对故障开断造成的设备或断面越限重载信息进行展示,并根据调度系统静态安全分析模块实用化需求进行扫描结果统计。
[0136]
作为一种实施方式,所述处理器20执行步骤4)具体包括:
[0137]
步骤(41)、根据开断计算需求和GPU配置情况,优化分配开断计算资源,
[0138]
评估单块GPU单次最大扫描开断数:
[0139]
[数0019]


[0140]
其中,S_max为GPU卡总内存空间,S为单个潮流计算所需内存大小,M_max为单块GPU卡所能计算的最大开断数;
[0141]
根据式(1),计算所需启动的GPU卡数目为:
[0142]
[数0020]


[0143]
其中,α表示为取整,n为本轮所需启动的GPU卡数,N为系统配置的GPU卡总数,M_cal为本轮静态安全分析所需计算的开断总数,M_max·N为多GPU一次计算开断能力;
[0144]
根据式(2),按照平均分配原则,每块卡实际计算开断数:
[0145]
[数0021]


[0146]
当M_max·N≤M_cal,意味着GPU全部参与计算无法一次完成所有开断计算,则将剩余开断M_cal′重新按照式(2-3)进行新一轮分配,分批多次计算,计算公式为:
[0147]
M_cal′=M_cal-M_max·N (4)
[0148]
步骤(42)、在共享复用的基态断面模型数据基础上,基于OpenMP多线程技术根据实际运行GPU卡数目n分配相应的CPU线程数,每个CPU线程与单个GPU唯一对应,构建CPU+多GPU异构模式,在单个GPU卡内按照CPU+单GPU异构模式进行并行运算。
[0149]
作为一种实施方式,所述处理器20执行步骤5)具体包括:
[0150]
步骤(51)、在基态导纳阵Y0基础上,根据N-1开断支路-节点信息,定义内核函数fun_ker nel_1,对分配至该卡的开断故障同时进行节点导纳阵局部修正工作,并修改节点注入信息,通过导纳阵和节点信息的变化来模拟设备开断;
[0151]
步骤(52)、根据步骤(51)形成开断导纳阵Ym,完成雅克比矩阵元素并行计算任务,为便于调用CUDA内核函数,潮流计算雅克比分块矩阵中各元素采用如下计算公式:
[0152]
[数0022]


[0153]
[数0023]


[0154]
[数0024]


[0155]
[数0025]


[0156]
其中,G ii,B ii,G ij,B ij分别为导纳阵非零元,θ ij为i,j节点相角差,P i,Q i为i节点注入功率,V i,V j分别为i,j节点电压幅值;
[0157]
分块矩阵各元素均为状态量节点电压相角,导纳阵元素及三角函数的四则基本运算且求解过程互不影响,具有明显的并行特性;
[0158]
分别定义4个内核函数对应计算分块矩阵中各元素值,单卡内,m个开断故障雅克比H矩阵计算量:
[0159]
h=m×h nozero (9)
[0160]
其中,h nozero为H阵非零元数,m为开断数;
[0161]
在CUDA架构中,GPU具有多个流处理器(SM),可提供多个线程调用。h个元素之间没有任何耦合关系,具有高度的元素级细粒度并行特性,按式(5)定义内核函数fun_ker nel_2_H完成式向量乘和向量加操作,CPU调用fun_ker nel_2_H函数,GPU根据fun_ker nel_2_H传入函数参数启用h个GPU多线程,同时完成式(5)并行操作;
[0162]
步骤(53)、根据步骤(51)形成的开断导纳阵Ym和初始节点注入量,按照式(10)进行节点注入功率残差计算:
[0163]
[数0026]


[0164]
其中,P is,Q is分别为节点i的有功、无功注入量,由上式可以看出,各节点注入量残差均为状态量节点电压相角,导纳阵元素及三角函数的四则基本运算,与其他节点功率残差求解过程互不依赖,定义fun_ker nel_3内核函数,启用流处理器(SM)中多个线程,完成m个开断故障所有计算节点功率不平衡量的并行计算任务,详细并行计算过程与步骤(52)相似;
[0165]
步骤(54)、检查功率残差是否满足收敛判断依据,如果满足,则跳转至步骤(58),如果不满足,则继续转入步骤(55)进行迭代;
[0166]
步骤(55)、对步骤(52)所形成的雅克比矩阵进行LU分解,结合步骤(53)计算的节点功率残差进行线性方程组求解,定义fun_ker nel_5内核函数,对线性方程组进行任务级并行求解;
[0167]
步骤(56)、定义为一个加运算的内核函数fun_ker nel_6,对于M个预想故障并行任务,共需要M×(2(n-1)-r)个线程同步执行fun_ker nel_6完成一次状态量更新计算;
[0168]
步骤(57)、跳转至步骤(52)继续迭代;
[0169]
步骤(58)、根据当前收敛的开断故障潮流计算结果,进行支路潮流计算,由于支路潮流仅和支路参数及两侧节点电压值相关,互不依赖,定义fun_ker nel_7内核函数,完成支路潮流并行计算;
[0170]
步骤(59)、根据步骤(58)的支路潮流计算结果,对各支路或稳定断面进行重载越限校验,并保存当前所有开断故障造成的重载越限结果,定义fun_ker nel_8内核函数,完成支路或稳定断面重载越限校验并行计算。
[0171]
其中,所述步骤5)的第(54)步具体为:
[0172]
首先,定义fun_ker nel_4内核函数,GPU对各开断节点功率残差按式(11)进行收敛检查,如果满足收敛条件则记录该开断故障潮流收敛;
[0173]
||ΔP t,ΔQ t||<ε t≤T (11)
[0174]
其中,ε为功率收敛判据,ΔP t,ΔQ t分别为迭代t次的功率偏差,T为最大迭代次数;
[0175]
再次,由于各开断故障收敛迭代步数不一致,设定k≥80%开断故障已收敛,则结束潮流迭代过程,否则所有开断故障继续进行潮流迭代,直至满足k≥80%收敛条件或者达到最大迭代次数,跳转至步骤(58)。
[0176]
其中,所述步骤5)的第(56)步定义为一个加运算的内核函数fun_ker nel_6为:
[0177]
[数0027]


[0178]
式中, 分别为线性方程组第i个潮流方程式状态向量第k次迭代前、迭代后值, 为第k次修正值,n为系统节点数,r为PV节点数。
[0179]
在实际应用中,本实施例所述存储器10可为包括各种存储介质的存储结构,例如,可包括随机存储介质、只读存储介质、闪存等存储介质,可用于非瞬间的存储所述计算机程序。
[0180]
在实际应用中,所述处理器20可为中央处理器(CPU,Central Processing Unit)、或图像处理器(GPU,Graphic Processing Unit)或微处理器(MPU, Microprocessor Unit)、或数字信号处理器(DSP,Digital Signal Processor)、或现场可编程门阵列(FPGA,Field-Programmable Gate Array)等实现,可以通过执行存储器10存储的计算机程序实现上述操作。
[0181]
在本实施例中所述处理器20和所述存储器10可通过总线接口30(在图4中未示出)连接,在本实施例中所述总线接口30可包括:集成电路(IIC,Inter-Integrated Circuit)总线等。
[0182]
本实施例还提供一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行之后,能够实现前述任意一项所述的CPU+多GPU异构模式静态安全分析计算方法。
[0183]
所述计算机存储介质可为各种类型的存储介质,在本实施例中可优选为非瞬间存储介质。
[0184]
本领域技术人员应当理解,本实施例的存储介质中各程序的功能,可参照实施例所述的CPU+多GPU异构模式静态安全分析计算方法的相关描述而理解。
[0185]
本领域技术人员应当理解,本实施例的存储介质中各程序的功能,可参照实施例所述的任务调度方法的相关描述而理解。
[0186]
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
[0187]
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地 方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
[0188]
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理模块中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0189]
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0190]
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思做出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

工业实用性

[0191]
本发明实施例的技术方案针对实际工程应用中大电网静态安全分析快速扫描的需求,在CUDA平台上,根据系统GPU配置情况和计算需求,采用OpenMp多线程技术分配相应线程数,每个线程与单个GPU唯一对应,基于CPU与GPU混合编程开发,构建CPU+多GPU异构计算模式协同配合完成预想故障并行计算,在单个预想故障潮流计算基础上,实现多个开断潮流迭代过程高度同步并行,通过元素级细粒度并行大幅提高静态安全分析预想故障扫描并行处理能力,为互联大电网一体化调度系统在线安全 分析预警扫描提供了有力的技术支撑。

权利要求书

[权利要求 1]
一种CPU+多GPU异构模式静态安全分析计算方法,包括:在统一计算设备架构CUDA平台上,采用基于共享内存并行系统的OpenMP多线程技术,综合考虑GPU配置情况及预想故障计算需求,确定CPU线程数目,构建CPU+多GPU异构模式,每块GPU卡内部按照CPU+单GPU模式协同配合完成并行扫描任务,在单个预想故障潮流计算基础上,实现多个开断潮流迭代过程同步并行,通过在元素级细粒度并行层面上完成迭代过程中元素并行计算任务。
[权利要求 2]
如权利要求1所述的一种CPU+多GPU异构模式静态安全分析计算方法,其中,所述CPU+多GPU异构模式静态安全分析计算方法包括以下步骤: 步骤1)、获取状态估计实时断面,基于牛顿-拉夫逊算法进行基态潮流计算,提供一个可供复用共享的数据断面; 步骤2)、根据用户需求,对全网设备进行拓扑扫描,形成预想故障集,针对每个预想故障进行深度拓扑搜索,形成实际开断支路-节点信息; 步骤3)、初始化CUDA架构,根据多开断并行计算需求将数据进行打包处理,并分配GPU内存空间; 步骤4)、根据GPU配置情况和实际计算量,对开断计算资源进行合理化分配,评估需要启用的GPU数目,采用OpenMP技术生成相应的线程数,以最大程度发挥GPU并行计算能力; 步骤5)、在CPU的统筹下,潮流计算迭代过程,包括导纳阵修正雅克比矩阵求解、修正方程求解、状态量更新、支路潮流计算及设备越限校核,全部交由GPU并行完成,所有开断故障迭代高度并行,根据每一步计算任务的并行特性构造相应的内核函数,在细粒度并行层面上完成迭代过程中元素并行计算任务; 步骤6)、判断预想故障是否全部扫描完成,如果否,则转入步骤4),对剩余的开断故障重新进行资源分配,如果全部完成,则转入步骤7); 步骤7)、结果展示,根据扫描结果,对故障开断造成的设备或断面越限重载信息进行展示,并根据调度系统静态安全分析模块实用化需求进行扫描结果统计。
[权利要求 3]
如权利要求2所述的一种CPU+多GPU异构模式静态安全分析计算方法,其中,所述步骤4)具体包括: 步骤(41)、根据开断计算需求和GPU配置情况,优化分配开断计算资源, 评估单块GPU单次最大扫描开断数: [数0001]


其中,S_max为GPU卡总内存空间,S为单个潮流计算所需内存大小,M_max为单块GPU卡所能计算的最大开断数; 根据式(1),计算所需启动的GPU卡数目为: [数0002]


其中,α表示为取整,n为本轮所需启动的GPU卡数,N为系统配置的GPU卡总数,M_cal为本轮静态安全分析所需计算的开断总数,M_max·N为多GPU一次计算开断能力; 根据式(2),按照平均分配原则,每块卡实际计算开断数: [数0003]


当M_max·N≤M_cal,意味着GPU全部参与计算无法一次完成所有开断计算,则将剩余开断M_cal′重新按照式(2-3)进行新一轮分配,分批多 次计算,计算公式为: M_cal′=M_cal-M_max·N (4) 步骤(42)、在共享复用的基态断面模型数据基础上,基于OpenMP多线程技术根据实际运行GPU卡数目n分配相应的CPU线程数,每个CPU线程与单个GPU唯一对应,构建CPU+多GPU异构模式,在单个GPU卡内按照CPU+单GPU异构模式进行并行运算。
[权利要求 4]
如权利要求2所述的一种CPU+多GPU异构模式静态安全分析计算方法,其中,所述步骤5)包括以下步骤: 步骤(51)、在基态导纳阵Y0基础上,根据N-1开断支路-节点信息,定义内核函数fun_kernel_1,对分配至该卡的开断故障同时进行节点导纳阵局部修正工作,并修改节点注入信息,通过导纳阵和节点信息的变化来模拟设备开断; 步骤(52)、根据步骤(51)形成开断导纳阵Ym,完成雅克比矩阵元素并行计算任务,为便于调用CUDA内核函数,潮流计算雅克比分块矩阵中各元素采用如下计算公式: [数0004]


[数0005]


[数0006]


[数0007]


其中,G ii,B ii,G ij,B ij分别为导纳阵非零元,θ ij为i,j节点相角差,P i,Q i为i节点注入功率,V i,V j分别为i,j节点电压幅值; 分块矩阵各元素均为状态量节点电压相角,导纳阵元素及三角函数的 四则基本运算且求解过程互不影响,具有明显的并行特性; 分别定义4个内核函数对应计算分块矩阵中各元素值,单卡内,m个开断故障雅克比H矩阵计算量: h=m×h nozero (9) 其中,h nozero为H阵非零元数,m为开断数; 在CUDA架构中,GPU具有多个SM流处理器,可提供多个线程调用。h个元素之间没有任何耦合关系,具有高度的元素级细粒度并行特性,按式(5)定义内核函数fun_kernel_2_H完成式向量乘和向量加操作,CPU调用fun_kernel_2_H函数,GPU根据fun_kernel_2_H传入函数参数启用h个GPU多线程,同时完成式(5)并行操作; 步骤(53)、根据步骤(51)形成的开断导纳阵Ym和初始节点注入量,按照式(10)进行节点注入功率残差计算: [数0008]


其中,P is,Q is分别为节点i的有功、无功注入量,由上式可以看出,各节点注入量残差均为状态量节点电压相角,导纳阵元素及三角函数的四则基本运算,与其他节点功率残差求解过程互不依赖,定义fun_kernel_3内核函数,启用流处理器SM中多个线程,完成m个开断故障所有计算节点功率不平衡量的并行计算任务,详细并行计算过程与步骤(52)相似; 步骤(54)、检查功率残差是否满足收敛判断依据,如果满足,则跳转至步骤(58),如果不满足,则继续转入步骤(55)进行迭代; 步骤(55)、对步骤(52)所形成的雅克比矩阵进行LU分解,结合步骤(53)计算的节点功率残差进行线性方程组求解,定义fun_kernel_5内核函数,对线性方程组进行任务级并行求解; 步骤(56)、定义为一个加运算的内核函数fun_kernel_6,对于m个预 想故障并行任务,共需要m×(2(n-1)-r)个线程同步执行fun_kernel_6完成一次状态量更新计算; 步骤(57)、跳转至步骤(52)继续迭代; 步骤(58)、根据当前收敛的开断故障潮流计算结果,进行支路潮流计算,由于支路潮流仅和支路参数及两侧节点电压值相关,互不依赖,定义fun_kernel_7内核函数,完成支路潮流并行计算; 步骤(59)、根据步骤(58)支路潮流计算结果,对各支路或稳定断面进行重载越限校验,并保存当前所有开断故障造成的重载越限结果,定义fun_kernel_8内核函数,完成支路或稳定断面重载越限校验并行计算。
[权利要求 5]
如权利要求4所述的一种CPU+多GPU异构模式静态安全分析计算方法,其中,所述步骤5)的第(54)步具体为: 首先,定义fun_kernel_4内核函数,GPU对各开断节点功率残差按式(11)进行收敛检查如果满足收敛条件则记录该开断故障潮流收敛; ||ΔP t,ΔQ t||<ε t≤T (11) 其中,ε为功率收敛判据,ΔP t,ΔQ t分别为迭代t次的功率偏差,T为最大迭代次数; 再次,由于各开断故障收敛迭代步数不一致,设定k≥80%开断故障已收敛,则结束潮流迭代过程,否则所有开断故障继续进行潮流迭代,直至满足k≥80%收敛条件或者达到最大迭代次数,跳转至步骤(58)。
[权利要求 6]
如权利要求4所述的一种CPU+多GPU异构模式静态安全分析计算方法,其中,所述步骤5)的第(56)步定义为一个加运算的内核函数fun_kernel_6为: [数0009]


式中, 分别为线性方程组第i个潮流方程式状态向量第k次迭代前、迭代后值, 为第k次修正值,n为系统节点数,r为PV节点数。
[权利要求 7]
一种CPU+多GPU异构模式静态安全分析计算装置,所述装置包括: 存储器,用于存储计算机程序; 处理器,与所述存储器连接,用于通过执行所述计算机程序,实现权利要求1至6任一项所述的CPU+多GPU异构模式静态安全分析计算方法。
[权利要求 8]
一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序被处理器执行之后,能够实现权利要求1至6任一项所述的CPU+多GPU异构模式静态安全分析计算方法。

附图

[ 图 0001]  
[ 图 0002]  
[ 图 0003]  
[ 图 0004]