CN105955712B - 一种基于gpu加速的直流故障筛选方法 - Google Patents
一种基于gpu加速的直流故障筛选方法 Download PDFInfo
- Publication number
- CN105955712B CN105955712B CN201610265499.8A CN201610265499A CN105955712B CN 105955712 B CN105955712 B CN 105955712B CN 201610265499 A CN201610265499 A CN 201610265499A CN 105955712 B CN105955712 B CN 105955712B
- Authority
- CN
- China
- Prior art keywords
- thread
- branch
- threads
- node
- blocks
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
- G06Q50/06—Electricity, gas or water supply
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开了一种基于GPU加速的直流故障筛选方法,包括:对直流潮流算法进行优化;CPU读取电网数据,计算节点电抗矩阵X0;计算基态电网的节点电压相角θ0,将电网基础数据传送给GPU;GPU内核函数1计算支路开断时的节点电压相角θ1;GPU内核函数2计算支路开断时各支路的有功功率,筛选出支路开断故障集S1并回传至CPU中;GPU内核函数3计算发电机开断时的节点电压相角θ2;GPU内核函数4计算发电机开断时各支路的有功功率,筛选出发电机开断故障集S2并回传至CPU中。本文提出了一种基于GPU加速的直流故障筛选方法,提高了计算效率,解决了电力系统静态安全性分析中故障直流筛选耗时大的难题。
Description
技术领域
本发明属于电力系统高性能计算应用领域,涉及电力系统故障筛选,尤其涉及一种基于GPU加速的直流故障筛选方法。
背景技术
GPU是一种众核并行处理器,在处理单元的数量上要远远超过CPU。传统上的GPU只负责图形渲染,而大部分的处理都交给了CPU。现在的GPU已经法阵为一种多核,多线程,具有强大计算能力和极高存储器带宽,可编程的处理器。在通用计算模型下,GPU作为CPU的协处理器工作,通过任务合理分配分解完成高性能计算。目前GPU已经成功应用于医学影像,计算流体动力学,环境科学,石油勘测等领域。
在电力系统中,直流潮流计算,交流潮流计算,暂态稳定性分析,大型稀疏线性方程组求解等都是比较耗时的部分。根据不同线性稀疏系统的特点,对不同的解决方法提出了基于GPU加速策略,例如,LU分解,共轭梯度算法,雅克比矩阵迭代,在这些算法中可以达到3到10倍的加速比。N-1静态安全性分析用来检测电网中单一元件断开时电网的静态安全性。对于一个具有N个元件的电力系统,严格的安全分析需要N次交流潮流计算,这是非常耗时的。在实际应用中,只有一部分严重的故障会威胁到电网的安全性,因此,先用直流潮流来筛选严重的故障集,再用交流潮流来进一步分析。目前广泛使用N-1静态安全性分析来检测电网中单一元件断开时电网的静态安全性。对于一个具有N个元件的电力系统,在实际应用中,用直流潮流来筛选一部分可能会威胁到电网安全性的严重故障,CPU处理是比较耗时的。
发明内容
发明目的:针对现有技术的不足,本发明提供了一种可以大幅度减少直流故障的计算时间,为在线静态安全性分析提供了可能的一种基于GPU加速的直流故障筛选方法。
技术方案:本发明提出了一种基于GPU加速的直流故障筛选方法。
直流潮流:电力学名词,指在给定电力系统网络拓扑、元件参数和发电、负荷参量条件下,计算有功功率、电压相角在电力网中的分布。
并行计算:相对于串行运算,是一种一次可执行多个指令的算法,目的是提高计算速度,及通过扩大问题求解规模,解决大型而复杂的计算问题。
GPU:图形处理器(英语:Graphics Processing Unit,缩写:GPU)。
导纳矩阵:以系统元件的等值导纳为基础所建立的、描述电力网络各节点电压和注入电流之间关系的矩阵。
本发明一种基于GPU加速的直流故障筛选方法,所述方法包括:
(1)根据不同故障的特点对直流潮流算法进行优化;
(2)CPU读取电网数据,生成节点电纳矩阵B,计算节点电抗矩阵X0;利用直流潮流算法计算基态电网的节点电压相角θ0,将直流筛选所需的电网基础数据传送给GPU;
(3)GPU中的内核函数1计算支路开断时的节点电压相角θ1;
(4)GPU中的内核函数2计算支路开断时各支路的有功功率并与有功功率限额比较,筛选出支路开断故障集S1并回传至CPU中;
(5)GPU中的内核函数3计算发电机开断时的节点电压相角θ2;
(6)GPU中的内核函数4计算发电机开断时各支路的有功功率并与有功功率限额比较,筛选出发电机开断故障集S2并回传至CPU中。
其中,所述步骤(1)中所述故障包括支路开断故障和发电机开断故障,当支路断开时,电网电抗矩阵发生变化,各节点注入功率增量ΔP为零;当发电机断开时,电网电抗矩阵不变,即电抗矩阵增量ΔX=0。
优选的,所述步骤(2)中所述电网基本数据包括电网节点数N、支路数Nbranches、每条支路首尾所连节点编号df[Nbranches]和dt[Nbranches]、支路电抗X、支路有功功率限额Pb[Nbranches]、发电机数量Ngen、发电机所连节点编号dg[Ngen]、发电机所发有功功率Pg[Ngen]、节点电压相角θ0、基态节点注入有功功率P0、节点电抗矩阵X0。
进一步,所述步骤(3)中内核函数1为Kernel_1<Nblocks,Nthreads>,Kernel_1的线程块大小Nthreads固定为128,线程块数量Nblocks=(Nbranches+Nthreads–1)/Nthreads;Kernel_1的第b个线程计算第b条支路断开时的电压相角向量θ1=θ0+Δθ,设第b条支路的首尾节点编号分别为i、j,其中Δθ=c(θ0i-θ0j)ΧL,式中:XL=[X1i-X1j,L,Xni-Xnj]T,Δxij为断开支路的电抗值,Xij为基态的节点电抗矩阵X0的第(i,j)号元素,θ0i为节点电压相角向量θ0的第i号元素;
Kernel_1<Nblocks,Nthreads>的具体计算方法为:
(3.1)CUDA自动为每个线程分配线程索引threadID作为线程号;
(3.2)将线程号赋值给变量tid,通过变量tid来指定线程;
(3.3)第tid号线程计算第b条支路开断时各节点电压的相角
(3.4)判断线程号变量tid的值是否小于支路数Nbranches,小于继续执行以下步骤,否则该线程结束运算;
(3.5)将第b条支路首尾两个节点编号分别赋值给变量i,j,即:i←df[b],j←dt[b];
(3.6)用公式c=(Xii+Xjj-2×Xij-Δxij)计算c,如果c为0,置S1[b]为2,若不为0,c=1/c;
(3.7)循环变量k从1到N-1循环,计算第b条支路开断时的电压相角向量:
其中,表示第b条支路开断时第k节点的电压相角,(θ0)k表示基态时k节点的电压相角;
(3.8)Nblocks个线程块中的全部线程计算结束得到节点电压相角θ1和故障集S1。
再者,所述步骤(4)中所述内核函数2为Kernel_2<Nblocks,Nthreads>,Kernel_2的线程块大小Nthreads固定为128,线程块数量Nblocks=(Nbranches+Nthreads–1)/Nthreads;
Kernel_2<Nblocks,Nthreads>使用Kernel_1的计算结果θ1和S1,其具体计算方法为:
(4.1)CUDA自动为每个线程分配线程索引threadID作为线程的编号;
(4.2)将线程号赋值给变量tid,通过变量tid来指定线程;
(4.3)设第tid号线程计算第b条支路开断时的各支路的有功功率并与限额比较;
(4.4)判断线程号tid是否小于支路数Nbranches,小于继续执行以下步骤,否则该线程结束运算;
(4.5)tid号线程中循环变量k从1到Nbranches循环,循环内部:a)第k条支路的首尾节点编号df[k]和dt[k]分别赋值给变量i,j,即:i←df[k],j←dt[k];;b)判断S1[b]不为2且k不等于b继续执行;否则循环结束。c)用下式计算第k条支路的有功功率:式中:Pij b为第b条支路开断时第k条支路的有功功率,是内核函数1计算支路开断时的节点电压相角θ1的第(i,b)和(j,b)元素,即第b条支路开断时i,j节点电压相角;并将结果与有功功率限额比较,大于限额,置S1[b]为1;
(4.6)Nblocks个线程块中的全部线程计算结束,得到S1并传回CPU处理。
优选的,所述步骤(5)中所述内核函数3为Kernel_3<Nblocks,Nthreads>,
Kernel_3<Nblocks,Nthreads>的线程块大小Nthreads固定为128,线程块数量Nblocks=(Ngen+Nthreads–1)/Nthreads;
其中,Kernel_3<Nblocks,Nthreads>的具体计算方法为:
(5.1)CUDA自动为每个线程分配线程索引thread ID作为线程的编号;
(5.2)将线程号赋值给变量tid,通过变量tid来指定线程;
(5.3)第tid号线程计算第b台发电机开断时各节点电压相角
(5.4)判断线程号变量tid的值是否小于发电机数Ngen,小于继续执行以下步骤,否则该线程结束运算;
(5.5)将第tid台发电机所连节点号赋值给变量j:j=dg(tid);
(5.6)循环变量k从1到N-1循环,计算第b台发电机开断时的节点电压的相角向量:其中,表示j节点发电机开断时k节点电压相角,(θ0)k表示稳态时k节点电压相角;
(5.7)Nblocks个线程块中的全部线程计算结束得到节点电压相角θ2,供内核函数4使用。
进一步,所述步骤(6)中所述内核函数4为Kernel_4<Nblocks,Nthreads>,Kernel_4的线程块大小Nthreads固定为128,线程块数量Nblocks=(Ngen+Nthreads–1)/Nthreads;
其中,Kernel_4<Nblocks,Nthreads>的具体计算方法为:
(6.1)CUDA自动为每个线程分配线程索引thread ID作为线程的编号;
(6.2)将线程号赋值给变量tid,通过变量tid来指定线程;
(6.3)设第tid号线程计算第b台发电机开断时的各支路的有功功率并与限额比较;
(6.4)判断线程号tid是否小于发电机Ngen,小于继续执行以下步骤,否则该线程结束运算;
(6.5)第tid号线程中循环变量k从1到Nbranches循环,循环内部:a)第k条支路的首尾节点编号df[k]和dt[k]分别赋值给变量i,j;b)计算第k条支路的有功功率:
式中:Pij b为第b台发电机开断时第k条支路的有功功率,是内核函数4计算发电机开断时的节点电压相角θ2的第(i,b)和(j,b)元素,并将结果与限额比较,大于限额,置S2[b]为1;
(6.6)Nblocks个线程块中的全部线程计算结束,得到S2并传回CPU处理。
有益效果:与现有技术相比,本发明具有以下显著优点:首先该基于GPU加速的直流故障筛选方法根据不同故障特点对直流潮流算法进行优化,避免了不必要的浮点计算量;其次使用CPU处理电网基本数据,利用电网数据形成节点电抗矩阵,一定程度上减少了电网数据在CPU和GPU之间的传输的次数,且效率更高;再者GPU的浮点计算能力和内存带宽是相应CPU的5到10倍,在处理相同的浮点运算时,GPU的能耗只有CPU的20%左右,该方法利用CPU控制程序的流程并处理基础数据和GPU处理密集的浮点运算相结合的模式提高了直流故障筛选方法的计算效率,解决了电力系统静态安全性分析中故障直流筛选耗时大的难题。
附图说明
图1为本发明基于GPU加速的直流故障筛选方法的算法流程图;
图2为本发明基于GPU加速的直流故障筛选方法中内核函数1的算法流程图;
图3为本发明基于GPU加速的直流故障筛选方法中电网算例基本数据;
图4为本发明基于GPU加速的直流故障筛选方法中GPU与CPU测试结果对比。
具体实施方式
本发明公开了一种基于GPU加速的直流故障筛选方法,所述方法包括:
(3)GPU中的内核函数1计算支路开断时的节点电压相角θ1;
(4)GPU中的内核函数2计算支路开断时各支路的有功功率并与有功功率限额比较,筛选出支路开断故障集S1并回传至CPU中;
(5)GPU中的内核函数3计算发电机开断时的节点电压相角θ2;
(6)GPU中的内核函数4计算发电机开断时各支路的有功功率并与有功功率限额比较,筛选出发电机开断故障集S2并回传至CPU中。
一、根据不同故障的特点对直流潮流算法进行优化;简化直流潮流计算公式,避免不必要的浮点计算量;
(1)直流潮流的计算公式为:
P=Bn×nθ或者θ=Xn×nP (1)
其中,
n是电网节点个数;
B是节点电纳矩阵,n*n维矩阵;
P是节点有功注入功率,n维向量;
θ是节点电压角度,n维向量;
θi,θj是节点i和节点j电压相角;
X=B-1是节点电抗矩阵,n*n维矩阵;
xij表示节点i和节点j之间的支路电抗值;
在基态时,直流潮流计算公式可以表示为:θ0=X0P0。
当发生故障的时,公式(1)可以表示为:
θ1=X1P1=(X0+ΔX)(P0+ΔP)=θ0+Δθ (3)
Δθ=ΔXP0+X0ΔP+ΔXΔP (4)
其中,下标0和1分别表示故障前状态和故障后状态;Δ表示故障前到故障后的改变;
如果节点i和节点j之间增加一条支路,电抗矩阵的增量ΔX可以表示为:
其中,M=ei-ej,Δxij为增加支路的电抗值,如果是开断支路,Δxij为负值,xij为基态的节点电抗矩阵的第(i,j)号元素,ei,ej为标准基。
(2)直流开断的算法流程如下:
1)在CPU上只计算一次电网基态下的节点电抗矩阵X0。
2)用式5计算支路开断后的电抗矩阵增量ΔX。
3)用式3和4计算节点电压相角Δθ和θ1,
4)用式2计算各支路有功功率,并检查支路是否过负荷。
当c的分母为0时,说明节点i和j之间支路断开会导致系统解列。
(3)根据支路开断故障和发电机开断故障的不同特点对直流潮流算法进行优化。当节点i和节点j之间的支路断开时,电网电抗矩阵发生变化,各节点注入功率增量为零,即ΔP=0。式4可以简化为:
Δθ=ΔXP0=cX0MMTX0P0=cXLMTθ0=c(θ0i-θ0j)XL (6)
其中,XL=X0M=X0(ei-ej)=[X1i-X1j,L,Xni-Xnj]T。
当连接于节点j的发电机断开时,电网电抗矩阵不变,即ΔX=0,节点注入功率增量ΔP是稀疏向量,只有ΔPj非零。式4可以简化为:
Δθ=Χ0ΔP=ΔPjXj (7)
这里,ΔP=[0…ΔPj…0]T,Xj=[X1j…Xnj]T,Xj为基态下的节点电抗矩阵X0的第j列元素,Xij为基态下的节点电抗矩阵X0的第(i,j)号元素,ΔPj为连接于节点j的发电机的有功功率。
二、算法设计:本算法将程序分为CPU和GPU两个部分。
CPU读取电网数据,生成待分析电网的节点电纳矩阵B,为GPU准备基本数据,处理GPU的计算结果,并控制整个程序的流程。GPU主要处理密集的浮点运算,共采用四个内核函数来完成故障筛选功能,具体包括:内核函数Kernel_1计算支路开断时的节点电压相角θ1;内核函数Kernel_2计算支路开断时各支路的有功功率并与有功功率限额比较,筛选出支路开断故障集S1;内核函数Kernel_3计算发电机开断时的节点电压相角θ2;内核函数Kernel_4计算发电机开断时各支路的有功功率并与有功功率限额比较,筛选出发电机开断故障集S2,具体流程如图1所示。
三、CPU生成基态下的节点电抗矩阵X0,传输基础数据
CPU读取电网数据,生成节点电纳矩阵B,使用KLU库函数计算其逆矩阵节点电抗矩阵X0。利用公式:θ0=X0P0,计算基态电网各节点电压相角θ0。将直流筛选所需的数据传送给GPU,具体包括:开断所需的基础数据:电网节点数N,支路数Nbranches,每条支路首尾所连节点编号df[Nbranches]和dt[Nbranches],支路电抗X,支路有功功率限额Pb[Nbranches],发电机数量Ngen,发电机所连节点编号dg[Ngen],发电机所发有功功率Pg[Ngen],节点电压相角θ0、基态节点注入有功功率P0、节点电抗矩阵X0。
四、计算支路开断时的节点电压相角θ1
GPU内核函数1中,电网支路数Nbranches,支路所连节点编号向量df[Nbranches]和dt[Nbranches],节点电压相角θ1(Nbranches×N维矩阵),故障集S1[Nbranches]。
(1)内核函数1定义为Kernel_1<Nblocks,Nthreads>。使用一个线程thread计算一条支路开断,共需要的线程数等于支路数Nbranches,线程块大小Nthreads固定为128,线程块数量Nblocks为(Nbranches+Nthreads–1)/Nthreads。
(2)Kernel_1<Nblocks,Nthreads>流程:1)CUDA自动为每个线程分配线程索引threadID作为线程的编号;2)将线程号赋值给变量tid,通过变量tid来指定线程;3)第tid号线程计算第b条支路开断时各节点电压的相角4)判断线程号变量tid的值是否小于支路数Nbranches,小于继续执行以下步骤,否则该线程结束运算;5)将b条支路首尾两个节点编号分别赋值给变量i,j,即:i←df[b],j←dt[b];6)用公式c=(Xii+Xjj-2×Xij-Δxij)计算c,如果c为0,置S1[b]为2,若不为0,c=1/c;7)循环变量k从1到N-1循环,用下式计算第b条支路开断时的电压相角向量:
其中,表示第b条支路开断时第k节点的电压相角,(θ0)k表示基态时k节点的电压相角;7)Nblocks个线程块中的全部线程计算结束得到节点电压相角θ1和故障集S1,供内核函数2使用,如图2所示。
五、计算支路开断时各支路的有功功率并筛选出支路开断故障集S1
GPU内核函数2中,电网支路数为Nbranches,支路所连节点编号向量df[Nbranches]和dt[Nbranches],节点电压相角矩阵θ1,节点电压相角θ0,故障集S1。
(1)内核函数2定义为Kernel_2<Nblocks,Nthreads>。使用一个线程thread计算一条支路开断时的各支路有功功率,共需要的线程数等于支路数Nbranches。线程块大小Nthreads固定为128,线程块数量Nblocks为(Nbranches+Nthreads–1)/Nthreads。
(2)Kernel_2<Nblocks,Nthreads>流程:使用Kernel_1的计算结果θ1和S1。1)CUDA自动为每个线程分配线程索引thread ID作为线程的编号;2)将线程号赋值给变量tid,通过变量tid来指定线程;3)设第tid号线程计算第b条支路开断时的各支路的有功功率并与限额比较;4)判断线程号tid是否小于支路数Nbranches,小于继续执行以下步骤,否则该线程结束运算;5)tid号线程中循环变量k从1到Nbranches循环,循环内部:a)第k条支路的首尾节点编号df[k]和dt[k]分别赋值给变量i,j,即:i←df[k],j←dt[k];;b)判断S1[b]不为2且k不等于b继续执行;否则循环结束。c)用下式计算第k条支路的有功功率:
式中:为第b条支路开断时第k条支路的有功功率,是内核函数1计算支路开断时的节点电压相角θ1的第(i,b)和(j,b)元素,即第b条支路开断时i,j节点电压相角。并将结果与有功功率限额比较,大于限额,置S1[b]为1;6)Nblocks个线程块中的全部线程计算结束,得到S1并传回CPU处理。
六、计算发电机开断时的节点电压的相角θ2
GPU内核函数3中,电网发电机数为Ngen,发电机所连节点编号dg[Ngen],节点电压相角θ2(Ngen×N维矩阵)。
(1)内核函数3定义为Kernel_3<Nblocks,Nthreads>。使用一个线程thread计算一台发电机开断,共需要的线程数等于支路数Ngen,线程块大小Nthreads固定为128,线程块数量Nblocks为(Ngen+Nthreads–1)/Nthreads。
(2)Kernel_3<Nblocks,Nthreads>流程:1)CUDA自动为每个线程分配线程索引threadID作为线程的编号;2)将线程号赋值给变量tid,通过变量tid来指定线程;3)第tid号线程计算第b台发电机开断时各节点电压相角4)判断线程号变量tid的值是否小于发电机数Ngen,小于继续执行以下步骤,否则该线程结束运算;5)将第tid台发电机所连节点号赋值给变量j:j=dg(tid);6)循环变量k从1到N-1循环,用下式计算第b台发电机开断时的节点电压的相角向量:
其中,表示j节点发电机开断时k节点电压相角,(θ0)k表示稳态时k节点电压相角;7)Nblocks个线程块中的全部线程计算结束得到节点电压相角θ2,供内核函数4使用。
七、计算发电机开断时各支路的有功功率并筛选发电机开断故障集S2
GPU内核函数4中,电网发电机数为Ngen,发电机所连节点编号dg[Ngen],节点电压相角θ2,故障集向量S2[Ngen]。
(1)内核函数4定义为Kernel_2<Nblocks,Nthreads>。使用一个线程thread计算一台发电机开断时的各支路有功功率,共需要的线程数等于支路数Ngen。线程块大小Nthreads固定为128,线程块数量Nblocks为(Ngen+Nthreads–1)/Nthreads。
(2)Kernel_4<Nblocks,Nthreads>流程:使用Kernel_3的计算结果θ2和S2。1)CUDA自动为每个线程分配线程索引thread ID作为线程的编号;2)将线程号赋值给变量tid,通过变量tid来指定线程;3)设第tid号线程计算第b台发电机开断时的各支路的有功功率并与限额比较;4)判断线程号tid是否小于发电机Ngen,小于继续执行以下步骤,否则该线程结束运算;5)第tid号线程中循环变量k从1到Nbranches循环,循环内部:a)第k条支路的首尾节点编号df[k]和dt[k]分别赋值给变量i,j;b)用下式计算第k条支路的有功功率:
式中:为第b台发电机开断时第k条支路的有功功率,是内核函数3计算发电机开断时的节点电压相角θ2的第(i,b)和(j,b)元素。并将结果与限额比较,大于限额,置S2[b]为1;6)Nblocks个线程块中的全部线程计算结束,得到S2并传回CPU处理。
八、GPU将计算结果传回CPU进一步处理
GPU将内核函数2和4计算出来的故障集S1和S2传回CPU。若S1[b]为1,则第b条支路断开属于故障集,若S1[b]为2,则第b条支路断开导致系统解列;若S2[b]为1,则第b台发电机断开属于故障集。
本发明所使用的GPU计算平台配备一张Tesla K20C GPU卡和Intel Xeon E5-2620CPU,GPU的峰值带宽可达208GB/s,单精度浮点计算量峰值可达3.52Tflops,CPU主频为2GHz。CPU计算平台配备Intel Core i7-3520M 2.90GHz的CPU。在CPU和GPU计算平台上分别对3个电网实例进行了测试,具体实例如图3所示。整个程序的计算时间主要分为数据传输和核函数执行两个部分,其中数据传输超过总时间的30%。对于规模比较小的电网,GPU内核函数节约的时间不能够弥补数据传输所耗费的时间,因此没有加速比,如图4所示,算例1中CPU计算时间是7ms,GPU计算时间也是7ms,但是这其中有4.76ms是数据传输所耗费的,加速比为1;算例2中CPU计算时间为260ms,GPU计算时间为95ms,其中44.85ms用在数据传输,加速比为2.73。当电网规模比较大时,就能达到理想的加速比,算例3中CPU计算时间为3621ms,GPU计算时间是733ms,其中242.36ms是数据传输所耗费的,占总时间比例相对小,加速比为4.94。虽然CPU与GPU结合增加了数据传输这部分时间,但是当电网规模比较大的时候,加速比还是很可观的,计算速度大幅提高,可以实现电力系统的在线静态安全分析,解决了电力系统静态安全性分析中故障直流筛选耗时大的难题。
Claims (6)
1.一种基于GPU加速的直流故障筛选方法,其特征在于:所述方法包括:
(1)根据不同故障的特点对直流潮流算法进行优化;
(2)CPU读取电网数据,生成节点电纳矩阵B,计算节点电抗矩阵X0;利用直流潮流算法计算基态电网的节点电压相角θ0,将直流筛选所需的电网基础数据传送给GPU;
(3)GPU中的内核函数1计算支路开断时的节点电压相角θ1,其中内核函数1为Kernel_1<Nblocks,Nthreads>,Kernel_1的线程块大小Nthreads固定为128,线程块数量Nblocks=(Nbranches+Nthreads–1)/Nthreads,支路数Nbranches;Kernel_1的第b个线程计算第b条支路断开时的节点电压相角设第b条支路的首尾节点编号分别为i、j,其中Δθ=c(θ0i-θ0j)XL,式中:XL=[X1i-X1j,…,Xni-Xnj]T,Δxij为断开支路的电抗值,Xij为基态的节点电抗矩阵X0的第(i,j)号元素,θ0i为基态电网的节点电压相角θ0的第i号元素;
Kernel_1<Nblocks,Nthreads>的具体计算方法为:
(3.1)CUDA自动为每个线程分配线程索引threadID作为线程号;
(3.2)将线程号赋值给变量tid,通过变量tid来指定线程;
(3.3)第tid号线程计算第b条支路开断时各节点电压的相角θ1 b;
(3.4)判断线程号变量tid的值是否小于支路数Nbranches,小于继续执行以下步骤,否则该线程结束运算;
(3.5)将第b条支路首尾两个节点编号df[b]和dt[b]分别赋值给变量i,j,即:i←df[b],j←dt[b];
(3.6)用公式c1=(Xii+Xjj-2×Xij+Δxij)计算c1,如果c1为0,置S1[b]为2,若不为0,c=1/c1,S1表示支路开断导致的故障集向量,用于存储支路开断引起的故障状态,S1[b]表示第b条支路开断时的故障状态;
(3.7)循环变量k从1到N-1循环,其中N为基态电网的节点数量,计算第b条支路开断时的电压相角向量:
其中,表示第b条支路开断时第k节点的电压相角,(θ0)k表示基态时k节点的电压相角;
(3.8)Nblocks个线程块中的全部线程计算结束得到节点电压相角θ1和故障集S1,供内核函数2使用;
(4)GPU中的内核函数2计算支路开断时各支路的有功功率并与有功功率限额比较,筛选出支路开断故障集S1并回传至CPU中;
(5)GPU中的内核函数3计算发电机开断时的节点电压相角θ2;
(6)GPU中的内核函数4计算发电机开断时各支路的有功功率并与有功功率限额比较,筛选出发电机开断故障集S2并回传至CPU中。
2.根据权利要求1所述的基于GPU加速的直流故障筛选方法,其特征在于:所述步骤(1)中所述故障包括支路开断故障和发电机开断故障,当支路断开时,电网电抗矩阵发生变化,各节点注入功率增量ΔP为零;当发电机断开时,电网电抗矩阵不变,即电抗矩阵增量ΔX=0。
3.根据权利要求1所述的基于GPU加速的直流故障筛选方法,其特征在于:所述步骤(2)中所述电网基础数据包括电网节点数N、支路数Nbranches、每条支路首尾所连节点编号df[Nbranches]和dt[Nbranches]、支路电抗X、支路有功功率限额Pb[Nbranches]、发电机数量Ngen、发电机所连节点编号dg[Ngen]、发电机所发有功功率Pg[Ngen]、基态电网的节点电压相角θ0、基态节点注入有功功率P0、节点电抗矩阵X0。
4.根据权利要求1所述的基于GPU加速的直流故障筛选方法,其特征在于:所述步骤(4)中所述内核函数2为Kernel_2<Nblocks,Nthreads>,Kernel_2的线程块大小Nthreads固定为128,线程块数量Nblocks=(Nbranches+Nthreads–1)/Nthreads;
Kernel_2<Nblocks,Nthreads>使用Kernel_1的计算结果θ1和S1,其具体计算方法为:
(4.1)CUDA自动为每个线程分配线程索引threadID作为线程的编号;
(4.2)将线程号赋值给变量tid,通过变量tid来指定线程;
(4.3)设第tid号线程计算第b条支路开断时的各支路的有功功率并与有功功率限额比较;
(4.4)判断线程号tid是否小于支路数Nbranches,小于继续执行以下步骤,否则该线程结束运算;
(4.5)tid号线程中循环变量k从1到Nbranches循环,循环内部:a)第k条支路的首尾节点编号df[k]和dt[k]分别赋值给变量i,j,即:i←df[k],j←dt[k];b)判断S1[b]不为2且k不等于b继续执行;否则循环结束;c)用下式计算第k条支路的有功功率:式中:xij表示支路k的电抗,Pij b为第b条支路开断时第k条支路的有功功率,是内核函数1计算支路开断时的节点电压相角θ1的第(i,b)和(j,b)元素,即第b条支路开断时i,j节点电压相角;并将结果与有功功率限额比较,大于限额,置S1[b]为1;
(4.6)Nblocks个线程块中的全部线程计算结束,得到Kernel_2的计算结果S1并传回CPU处理。
5.根据权利要求1所述的基于GPU加速的直流故障筛选方法,其特征在于:所述步骤(5)中所述内核函数3为Kernel_3<Nblocks,Nthreads>,
Kernel_3<Nblocks,Nthreads>的线程块大小Nthreads固定为128,线程块数量Nblocks=(Ngen+Nthreads–1)/Nthreads,发电机数量Ngen;
其中,Kernel_3<Nblocks,Nthreads>的具体计算方法为:
(5.1)CUDA自动为每个线程分配线程索引thread ID作为线程的编号;
(5.2)将线程号赋值给变量tid,通过变量tid来指定线程;
(5.3)第tid号线程计算第b台发电机开断时各节点电压相角
(5.4)判断线程号变量tid的值是否小于发电机数Ngen,小于继续执行以下步骤,否则该线程结束运算;
(5.5)将第tid台发电机所连节点号dg(tid)赋值给变量j:j=dg(tid);
(5.6)循环变量k从1到N-1循环,其中N为基态电网的节点数量,计算第b台发电机开断时的节点电压的相角向量:其中,表示第b台发电机开断时k节点电压相角,(θ0)k表示稳态时k节点电压相角;
(5.7)Nblocks个线程块中的全部线程计算结束得到节点电压相角θ2,供内核函数4使用。
6.根据权利要求1所述的基于GPU加速的直流故障筛选方法,其特征在于:所述步骤(6)中所述内核函数4为Kernel_4<Nblocks,Nthreads>,Kernel_4的线程块大小Nthreads固定为128,线程块数量Nblocks=(Ngen+Nthreads–1)/Nthreads,发电机数量Ngen;
其中,Kernel_4<Nblocks,Nthreads>的具体计算方法为:
(6.1)CUDA自动为每个线程分配线程索引thread ID作为线程的编号;
(6.2)将线程号赋值给变量tid,通过变量tid来指定线程;
(6.3)设第tid号线程计算第b台发电机开断时的各支路的有功功率并与有功功率限额比较;
(6.4)判断线程号tid是否小于发电机Ngen,小于继续执行以下步骤,否则该线程结束运算;
(6.5)第tid号线程中循环变量k从1到Nbranches循环,支路数Nbranches,循环内部:a)第k条支路的首尾节点编号df[k]和dt[k]分别赋值给变量i,j;b)计算第k条支路的有功功率:
式中:xij表示第k条支路的电抗,Pij b为第b台发电机开断时第k条支路的有功功率,是内核函数4计算发电机开断时的节点电压相角θ2的第(i,b)和(j,b)元素,并将Pij b的结果与有功功率限额比较,大于限额,置S2[b]为1,S2表示发电机开断导致的故障集向量,用于存储发电机开断引起的故障状态,S2[b]表示第b台发电机开开断时的故障状态;
(6.6)Nblocks个线程块中的全部线程计算结束,得到S2并传回CPU处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610265499.8A CN105955712B (zh) | 2016-04-26 | 2016-04-26 | 一种基于gpu加速的直流故障筛选方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610265499.8A CN105955712B (zh) | 2016-04-26 | 2016-04-26 | 一种基于gpu加速的直流故障筛选方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105955712A CN105955712A (zh) | 2016-09-21 |
CN105955712B true CN105955712B (zh) | 2018-08-21 |
Family
ID=56916662
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610265499.8A Active CN105955712B (zh) | 2016-04-26 | 2016-04-26 | 一种基于gpu加速的直流故障筛选方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105955712B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109697539A (zh) * | 2017-10-23 | 2019-04-30 | 云南电网有限责任公司 | 一种配网风险的高效识别方法 |
CN108804765B (zh) * | 2018-05-07 | 2020-09-22 | 武汉大学 | 高效的明渠非恒定流数值模拟方法 |
CN110718919B (zh) * | 2019-09-25 | 2021-06-01 | 北京交通大学 | 基于gpu加速的大电网静态安全分析故障筛选的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103793590A (zh) * | 2012-11-01 | 2014-05-14 | 同济大学 | 一种基于gpu的快速求解配电网潮流的计算方法 |
CN103904648A (zh) * | 2014-03-28 | 2014-07-02 | 南方电网科学研究院有限责任公司 | 一种实现电力系统的n-1支路开断的模拟方法 |
CN104092210A (zh) * | 2014-07-14 | 2014-10-08 | 国家电网公司 | 一种具备n-2开断快速扫描功能的在线静态安全分析方法 |
-
2016
- 2016-04-26 CN CN201610265499.8A patent/CN105955712B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103793590A (zh) * | 2012-11-01 | 2014-05-14 | 同济大学 | 一种基于gpu的快速求解配电网潮流的计算方法 |
CN103904648A (zh) * | 2014-03-28 | 2014-07-02 | 南方电网科学研究院有限责任公司 | 一种实现电力系统的n-1支路开断的模拟方法 |
CN104092210A (zh) * | 2014-07-14 | 2014-10-08 | 国家电网公司 | 一种具备n-2开断快速扫描功能的在线静态安全分析方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105955712A (zh) | 2016-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106407158B (zh) | 一种gpu加速的批处理同构稀疏矩阵乘满向量的处理方法 | |
CN105955712B (zh) | 一种基于gpu加速的直流故障筛选方法 | |
CN105576648B (zh) | 一种基于gpu-cpu异构计算平台的静态安全分析双层并行方法 | |
CN106410789B (zh) | 一种针对孤网的电力系统黑启动分区方法 | |
CN106157176A (zh) | 一种gpu加速的电力潮流雅可比矩阵的lu分解方法 | |
CN106021943B (zh) | 一种结合gpu软硬件架构特点设计的直流故障筛选方法 | |
CN102593823A (zh) | 一种基于叠加原理的配电网在线潮流计算方法 | |
CN105391057A (zh) | 一种电力潮流雅克比阵计算的gpu线程设计方法 | |
CN104899396A (zh) | 一种修正系数矩阵的快速分解法潮流计算方法 | |
CN106026107A (zh) | 一种gpu加速的电力潮流雅可比矩阵的qr分解方法 | |
CN106354479B (zh) | 一种大量同构稀疏矩阵的gpu加速qr分解方法 | |
Li et al. | Multi-objective optimal design for passive power filters in hybrid power filter system based on multi-island particle swarm optimization | |
Ambrosov et al. | Sensing stochasticity of atomic systems in crossed electric and magnetic fields by analysis of level statistics for continuous energy spectra | |
Narasimhulu et al. | Detection and classification of high impedance fault in power distribution system using hybrid technique | |
CN106055730B (zh) | 一种适应于大规模电网的电力系统碳流仿真分析方法 | |
Gunadin et al. | Steady state stability assessment using extreme learning machine based on modal analysis | |
Adebayo et al. | Prediction of voltage collapse through voltage collapse proximity index and inherent structural characteristics of power system | |
CN107423259A (zh) | 一种多米诺优化的gpu加速电力上三角方程组回代方法 | |
CN108539737A (zh) | 一种工程实用的电力系统动态等值优化方法 | |
Fang et al. | Identification of Abnormal Electricity Consumption Behavior Based on Bi-LSTM Recurrent Neural Network | |
CN107436995A (zh) | 考虑外网对地支路和灵敏度信息的等值三相短路计算方法 | |
CN110233476A (zh) | 一种黑启动过程中的电压稳定性测评方法及相关装置 | |
Yang et al. | Dynamic equivalents of power system based on extended two particle swarm optimization | |
Shang et al. | GPU-accelerated batch solution for short-circuit current calculation of large-scale power systems | |
Lo et al. | Application of Kohonen self-organising neural network to static security assessment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |