一種電力潮流雅克比陣計算的gpu線程設計方法
【技術領域】
[0001] 本發(fā)明屬于電力系統(tǒng)高性能計算應用領域,尤其設及一種電力潮流雅克比陣計算 的GPU線程設計方法。
【背景技術】
[0002] 潮流計算是電力系統(tǒng)中應用最廣泛、最基本和最重要的一種電氣運算。在電力系 統(tǒng)運行方式和規(guī)劃方案的研究中,都需要進行潮流計算W比較運行方式或規(guī)劃供電方案的 可行性、可靠性和經(jīng)濟性。同時,為了實時監(jiān)控電力系統(tǒng)的運行狀態(tài),也需要進行大量而快 速的潮流計算。因此,在系統(tǒng)規(guī)劃設計和安排系統(tǒng)的運行方式時,采用離線潮流計算;在電 力系統(tǒng)運行狀態(tài)的實時監(jiān)控中,則采用在線潮流計算。
[0003] 而實際生產(chǎn)過程中,無論離線潮流和在線潮流計算都對潮流的計算速度有運比較 高的要求。在設及規(guī)劃設計和安排運行方式的離線潮流中,因設備落地方案等情況復雜,需 要仿真運行的種類多,潮流計算量大,單個潮流計算時間影響整體仿真時長;而在電力系統(tǒng) 運行中進行的在線潮流計算對計算時間敏感度高,需要實時給出潮流計算結(jié)果,如在預想 事故、設備退出運行對靜態(tài)安全的影響的潮流計算中,系統(tǒng)需要計算大量預想事故下潮流 分布,并實時地做出預想的運行方式調(diào)整方案。
[0004] 傳統(tǒng)的牛頓拉夫遜法潮流計算中,雅克比矩陣的計算時間占潮流總計算時間 30%,雅克比矩陣的計算速度影響程序的整體性能。而隨著CPU計算速度提升的放緩,現(xiàn)階 段的單個潮流計算計算時間已經(jīng)達到一個瓶頸。目前對潮流計算的加速方法主要集中在使 用集群和多核服務器對多潮流進行粗粒度加速,實際成產(chǎn)中對單個潮流內(nèi)部運算加速的研 究較少。 陽0化]GPU是一種眾核并行處理器,在處理單元的數(shù)量上要遠遠超過CPU。傳統(tǒng)上的GPU 只負責圖形擅染,而大部分的處理都交給了 CPU。現(xiàn)在的GPU已經(jīng)法陣為一種多核,多線程, 具有強大計算能力和極高存儲器帶寬,可編程的處理器。在通用計算模型下,GPU作為CPU 的協(xié)處理器工作,通過任務合理分配分解完成高性能計算。
[0006] 雅克比矩陣計算具有并行性,其中每一個非零元素的計算相互獨立,沒有依賴關 系,天然可W被并行的計算處理,適合GPU加速。因此通過CPU和GPU之間合理的調(diào)度可W 快速完成雅克比矩陣的計算,國內(nèi)外學者已經(jīng)開始對GPU進行雅克比加速的方法進行了研 究,但是沒有深入的優(yōu)化線程設計,單純從計算量的分配上研究計算線程設計,對線程計算 方式,數(shù)據(jù)索引方式?jīng)]有進行深入研究,無法使程序充分發(fā)揮GPU的優(yōu)勢。
[0007] 因此,亟待解決上述問題。
【發(fā)明內(nèi)容】
[0008] 發(fā)明目的:針對現(xiàn)有技術的不足,本發(fā)明提供一種能大幅減少雅克比矩陣計算時 間并能提升潮流計算速度的一種電力潮流雅克比陣計算的GPU線程設計方法。
[0009] 技術方案:本發(fā)明提出一種利用映射關系分配計算資源的基于GPU的一種電力潮 流雅克比矩陣計算的GPU線程設計方法。
[0010] 潮流計算:電力學名詞,指在給定電力系統(tǒng)網(wǎng)絡拓撲、元件參數(shù)和發(fā)電、負荷參量 條件下,計算有功功率、無功功率及電壓在電力網(wǎng)中的分布。
[0011] 并行計算:相對于串行運算,是一種一次可執(zhí)行多個指令的算法,目的是提高計算 速度,及通過擴大問題求解規(guī)模,解決大型而復雜的計算問題。
[0012] GPU :圖形處理器(英語:Gra地icsProcessingUnit,縮寫:GPU)。
[0013] 導納矩陣:W系統(tǒng)元件的等值導納為基礎所建立的、描述電力網(wǎng)絡各節(jié)點電壓和 注入電流之間關系的矩陣。
[0014] 本發(fā)明公開了一種電力潮流雅克比陣計算的GPU線程設計方法,所述方法包括: 陽〇1引 (1)輸入電網(wǎng)數(shù)據(jù),預處理節(jié)點導納陣Y ;
[0016] 似CPU分別計算H、N、J、L四個子矩陣非零元素與節(jié)點導納陣Y非零元素位置映 射關系表 Mh2Y、Mn2Y、Mj2Y、Ml2Y;
[0017] (3) CPU分別計算H、N、J、L四個子矩陣非零元素與雅克比矩陣非零元素位置映射 關系表 Mn2Ja、Mn2Js、Mj2Ja、Ml2J3; 陽01引 (4) GPU中節(jié)點注入功率核函數(shù)S計算所有節(jié)點注入功率;
[0019] (5)GPU中雅克比子矩陣計算核函數(shù)H、M、N、L分別計算H、N、J、L四個子矩陣中非 零元素并存入雅克比矩陣中。
[0020] 其中,所述步驟(1)中電網(wǎng)的節(jié)點數(shù)為n,電網(wǎng)的節(jié)點導納陣Y{i,j,G,B} W行號 i、列號j、電導G、電納B的Coordinate稀疏格式存儲,將節(jié)點導納陣每行數(shù)據(jù)在Y中的相 對偏移位置存放在行偏移向量R中,定義節(jié)點電壓相角向量為0,電壓幅值向量為V。
[0021] 其中,所述步驟(4)中節(jié)點注入功率的計算方式為核函數(shù)S的k號線程計算k號 節(jié)點的有功和無功功率注入,計算公式為:
[0024] 其中,
[0025] k為GPU編程設計中并行線程號; 陽0%] Pk為k號節(jié)點的有功功率注入;
[0027] Qk為k號節(jié)點的無功功率注入;
[002引 kb為導納陣Y第k行非零元素的起始索引,k b= R比];
[0029] ke為導納陣Y第k行非零元素的終止索引,ke=R比+1]-1 ;
[0030] j,G,B為導納陣Y中第1個位置存放的數(shù)據(jù);
[0031] Vk為k號節(jié)點的電壓幅值;
[0032] V,為j號節(jié)點的電壓幅值; 陽〇3引 0 k為k號節(jié)點的電壓相角;
[0034] 0 i為j號節(jié)點的電壓相角。
[0035] 其中,所述步驟巧)中,H子矩陣中非零元素的計算方法為:
[0036]按照步驟(2)中得到的H子矩陣非零元素和節(jié)點導納陣Y的映射關系表Mh2y,H核 函數(shù)的t號線程計算時,查詢表Mh2Y的t號位置取出Y陣的索引號kH2Y,取出Y比H2Y]元素中 相應的數(shù)據(jù)a, j,G,B}進行計算,雅克比矩陣中子矩陣H的第t個非零元素的計算公式為:
陽03引其中,
[0039]t為GPU編程設計中并行線程號化為H子矩陣COO格式中第t個位置的非零元 素; W40] i,j,G,B為導納陣Y中第kw2Y個位置存放的數(shù)據(jù);
[0041] Qi為節(jié)點i的注入無功功率;
[0042] 再按照步驟(3)中得到的H子矩陣非零元素和矩陣化的映射關系Mh2;。,查詢Mh2j。 的t號位置取出Ht的計算結(jié)果在化矩陣中的存儲索引號kH2W然后將Ht的計算結(jié)果存入 J曰比H2Ja]。
[0043] 有益效果:與現(xiàn)有技術比,本發(fā)明的有益效果為:首先,本發(fā)明采用GPU處理器對 雅克比矩陣計算進行了加速,相比CPU獲得16倍的加速比;其次,本發(fā)明的線程設計方法 對GPU程序的性能進行了優(yōu)化,在雅克比矩陣非零元計算過程中通過子矩陣計算W避免使 用單一核函數(shù)直接計算時判斷元素所屬子矩陣區(qū)域過程的分支結(jié)構,提升GPU分支執(zhí)行效 率;并通過集中計算具有相同計算公式的子矩陣內(nèi)非零元素解決了線程負載不均衡問題, 提升并行計算效率。
【附圖說明】 W44]圖1為本發(fā)明一種電力潮流雅克比陣計算的GPU線程設計方法的流程圖【具體實施方式】 W45]如圖1所示,本發(fā)明提出一種利用映射關系分配計算資源的基于GPU的一種電力 潮流雅克比矩陣計算的GPU線程設計方法,該方法包含W下步驟:
[0046] 設電網(wǎng)的節(jié)點數(shù)為n,電網(wǎng)的節(jié)點導納陣Y{i,j,G,B} W行號、列號、電導、電納的 COO稀疏格式存儲,將COO格式中索引轉(zhuǎn)化為CompressedSparseRow(CSR)行壓縮格式,行偏 移數(shù)組向量為R,節(jié)點電壓相角向量為0,電壓幅值向量為V ; W47]步驟 1 :生成查詢表 Mh2Y、Mw2Y、Mj2Y、Ml2Y
[0048] I)掃描COO格式的節(jié)點導納陣Y,選取其中對應于H矩陣計算的元素加入集合 W例 Hy,生成查詢表Mh2y;
[0050] a)掃描COO格式中每個元素的行號i,當其屬于有功無功PQ節(jié)點或有功電壓PV 節(jié)點時,記i = pqpv[x],其中pqpv為PQ、PV節(jié)點的索引,X為索引號;再掃描列號j,當j 屬于PQ或PV節(jié)點時,記j = pqpv[y],選中該元素加入到集合Hy; 陽05U b)每加入一個元素到集合Hy時,記錄集合H Y當前元素數(shù)量k,化及該元素在矩陣 Y的COO格式中位置hk;記錄i在PQ、PV節(jié)點中位置X k,j在PQ、PV節(jié)點中位置yk;集合H Y 中元素表示為化,hk,Xk, yj ; 陽化引C)生成k一hk的映射表MH2Y;
[0053] 2)掃描COO格式的節(jié)點導納陣Y,選取其中對應于N矩陣計算的元素加入集合Ny, 生成映射表Mwy; 陽054] a)掃描COO格式中每個元素的行號i,當其屬于PQ或PV節(jié)點時,記i = pqpv[x], 再掃描列號j,當j屬于PQ節(jié)點時,記j =pq[y],其中pq為PQ節(jié)點的索引,y為索引號, 選中該元素加入到集合Ny; 陽化5] b)每加入一個元素到集合Ny時,記錄集合N