亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        匹配GPU編程架構(gòu)的直流故障篩選算法設(shè)計

        2017-05-22 02:44:54溫柏堅謝恩彥劉明波
        電力自動化設(shè)備 2017年5期
        關(guān)鍵詞:浮點算例支路

        溫柏堅 ,謝恩彥 ,劉明波

        (1.華南理工大學 電力學院,廣東 廣州 510640;2.廣東電網(wǎng)有限責任公司電力調(diào)度控制中心,廣東 廣州 510600;3.國電南瑞科技股份有限公司,江蘇 南京 211106)

        0 引言

        靜態(tài)安全分析用來校驗電網(wǎng)中輸變電設(shè)備退出運行后的系統(tǒng)運行狀態(tài),一般要求滿足N-1校驗,完整的N-1校驗需要對電網(wǎng)中所有N個設(shè)備進行開斷和潮流分析,計算量巨大[1]。為了縮短分析時間,最常用的技術(shù)手段是采用多CPU核進行并行計算加速,中國電科院在4路×4核CPU配置的服務器上對10000節(jié)點電網(wǎng)只取得了不到4的加速比,遠小于總核數(shù)16,這主要是由于內(nèi)存帶寬飽和(內(nèi)存墻)問題。解決上述內(nèi)存墻問題需要部署多個具有獨立物理內(nèi)存的計算節(jié)點,這將大幅增加系統(tǒng)費用、機房空間和計算功耗[2-3]。

        2007年起,GPU逐漸被應用于通用科學計算,隨著NVIDIA公司推出了統(tǒng)一編程架構(gòu)CUDA(Compute Unified Device Architecture)和第3代專用計算卡,GPU已經(jīng)成為最重要的高性能計算HPC(High Performance Computing)硬件之一[4]。和多核 CPU 相比,GPU的特點是浮點計算能力和內(nèi)存帶寬高,以NVIDIA K20型GPU和Intel Xeon E5-2690型CPU為例進行對比,GPU的單精度和雙精度浮點計算峰值分別為CPU的18倍和6倍,GPU的內(nèi)存帶寬為CPU的4倍,但GPU的價格和功耗僅比CPU分別高10%和70%。

        目前,GPU在石油勘探、大規(guī)模集成電路仿真、有限元分析等領(lǐng)域已實現(xiàn)了工程應用,電力系統(tǒng)中GPU的研究主要集中在暫態(tài)穩(wěn)定分析和潮流計算2個領(lǐng)域,其中又特別聚焦于大規(guī)模稀疏線性方程組求解上。文獻[5-13]對LU分解、共軛梯度迭代、多波前等經(jīng)典求解方法進行了GPU加速研究,相對于各自開發(fā)的CPU串行算法取得了顯著加速比,缺點是這種比較方法對CPU算法的性能比較敏感,更為客觀的方法是同時給出絕對計算時間。CUDA官方手冊指出GPU編程無法做到硬件透明,必須結(jié)合GPU軟硬件特點進行充分優(yōu)化才能發(fā)揮硬件能力,但已有的電力領(lǐng)域GPU算法文獻鮮有結(jié)合GPU架構(gòu)進行優(yōu)化設(shè)計的[14]。

        為了減少分析時間,實用化的靜態(tài)安全分析程序都包括嚴重故障集篩選和只針對嚴重故障集進行的詳細潮流分析2個步驟,一般而言,嚴重故障集篩選過程占整個靜態(tài)安全分析時間的25%~30%,由此可見,加速故障集篩選過程是加速整個靜態(tài)安全分析的重要環(huán)節(jié),具有工程意義。本文首先介紹了基于直流潮流模型的故障篩選算法,然后對GPU的軟硬件架構(gòu)特點進行了詳細剖析,基于此提出了GPU算法設(shè)計在任務分配、數(shù)據(jù)交互、線程分配、內(nèi)存訪問4個方面應遵循的通用設(shè)計準則,最后對GPU加速的故障篩選算法進行了詳細設(shè)計和優(yōu)化,提出了一種匹配GPU軟硬件架構(gòu)的并行直流故障篩選算法。

        1 基于直流潮流模型的故障篩選算法

        本節(jié)引入基于直流潮流模型的故障篩選算法,并對其進行工程優(yōu)化。

        1.1 算法模型

        故障篩選關(guān)注功率越限,所以一般采用直流潮流模型來進行分析,相關(guān)公式主要包括[1]:

        其中,B為去除平衡節(jié)點的節(jié)點電納陣,X=B-1為節(jié)點電抗陣,B為稀疏陣,X則為稠密陣;P和θ分別為節(jié)點有功注入向量和電壓相角向量,θ(i)為向量θ的第i個分量,文中所有向量都遵循同樣的表達方式;下標i和j分別為支路的首、末節(jié)點編號;xij、Pij分別為支路電抗和支路有功。

        設(shè)電網(wǎng)在基態(tài)斷面下發(fā)生開斷故障,可推導出式(2)的增量表達式為:

        進一步可推導出:

        其中,X0、θ0和P0分別為基態(tài)斷面下的節(jié)點電抗陣、電壓相角向量和節(jié)點有功向量;ΔX、Δθ和ΔP為開斷故障后相關(guān)量的增量。

        具體計算步驟為:預先求出特定電網(wǎng)的基態(tài)電抗陣X0,由于對特定電網(wǎng)只需計算1次,X0的計算時間不計入算法總時間;由支路追加法求出電抗增量陣ΔX,由負荷和發(fā)電機開斷情況求出ΔP;將ΔX、ΔP代入式(5)求出電壓相角增量Δθ,再代入式(4)求出θ;將θ代入式(3)計算支路功率,并檢查是否越限。所述支路追加法的計算公式如下[1]:

        其中,ei和 ej為標準正交基;X0(i,j)為電抗矩陣 X0的第i行、第j列元素;Δxij為追加支路的電抗,支路斷開時追加負值電抗。

        1.2 工程優(yōu)化

        式(4)—(6)是以矩陣形式表達的理論模型,工程上會對其進行優(yōu)化來減少浮點計算量,具體可分成支路開斷和發(fā)電機開斷2類情況來討論。

        當首、末節(jié)點編號為i和j的支路發(fā)生開斷時,只有電抗陣X0發(fā)生增量變化ΔX,節(jié)點有功增量ΔP=0,利用M的稀疏性,式(5)可以化簡為:

        其中,X0(:,i)為由矩陣 X0的第i列構(gòu)成的向量,其他類似。

        當節(jié)點編號為i的發(fā)電機或負荷發(fā)生開斷時,電抗增量陣ΔX=0,節(jié)點有功的增量變化ΔP=[0,…,ΔPi,…,0],ΔP中只有元素 ΔP(i)=ΔPi,其他元素都為0,再利用M的稀疏性,式(5)可以化簡為:

        其中,ΔPi為發(fā)電機或負荷開斷之后的有功跌落量。

        綜上所述,直流故障篩選算法已被化簡為式(7)和式(8)所示的稠密向量計算,非常適合采用GPU來進行加速。

        2 GPU算法設(shè)計的通用準則

        本節(jié)對GPU的軟硬件架構(gòu)特點進行詳細剖析,在此基礎(chǔ)上提出GPU算法設(shè)計的通用設(shè)計準則,具體包括任務分配、數(shù)據(jù)交互、線程分配、內(nèi)存訪問4個方面。

        2.1 CPU和GPU間的任務分配準則

        2007年,NVIDIA公司發(fā)布了CUDA,將GPU視作一種CPU的通用協(xié)處理器,通過C語言編程即可調(diào)用GPU上的大量計算資源。

        CPU和GPU擁有各自明顯的優(yōu)缺點,具體如下:CPU硬件的設(shè)計以延遲優(yōu)化為目標,目的是盡快完成單位計算任務,片上資源被大量用于流水線和高速緩存,所以擅長處理復雜邏輯,缺點是片上浮點計算資源較少;GPU硬件的設(shè)計以吞吐優(yōu)化為目標,目的是在單位時間內(nèi)完成更多浮點計算,片上資源大量被用于浮點計算,所以優(yōu)點是浮點計算峰值和帶寬高,缺點是不擅長處理復雜邏輯。

        按照兩者的優(yōu)缺點,確定CPU和GPU之間的任務分配準則如下:CPU負責控制程序的總體流程和執(zhí)行不可并行的計算;GPU則專門負責可并行化的浮點計算任務,例如向量和矩陣操作。

        2.2 CPU和GPU間的數(shù)據(jù)交互準則

        CPU和GPU之間通過PCIe總線來交互數(shù)據(jù),PCIe是中低速總線,實測數(shù)據(jù)表明在圖1所示CPU+GPU異構(gòu)計算架構(gòu)中,當CPU采用頁鎖定內(nèi)存進行數(shù)據(jù)交互時,PCIe 2.0總線的單向傳輸速度大約為3 GByte/s,相較于CPU端大約為50 GByte/s的內(nèi)存帶寬,GPU端的內(nèi)存帶寬大約為200 GByte/s,PCIe總線速度明顯小于內(nèi)存帶寬;當CPU采用分頁內(nèi)存進行數(shù)據(jù)傳輸時,PCIe 2.0的單向傳輸速度下降為1.5 GByte /s。

        圖1 CPU+GPU異構(gòu)計算架構(gòu)Fig.1 Heterogeneous computing architecture based on CPU plus GPU

        綜上所述,確定數(shù)據(jù)交互的設(shè)計準則如下:盡可能減少PCIe總線上的數(shù)據(jù)傳輸量,必要時可以采用頁鎖定內(nèi)存進行數(shù)據(jù)傳輸,也可以增加計算復雜度來減少交換數(shù)據(jù)交互量。

        2.3 內(nèi)核函數(shù)的線程分配準則

        CUDA通過大量線程并發(fā)來共同完成復雜的計算任務,和重量級開銷的CPU線程不同,CUDA線程的創(chuàng)建和調(diào)度都由硬件完成,其時間開銷幾乎可以忽略。下文將結(jié)合GPU的軟硬件架構(gòu)來說明CUDA線程的調(diào)度機理,在此基礎(chǔ)之上提出線程分配的準則。

        CUDA采用一種被稱為SIMT(Single Instruction Multiple Threads)的軟件架構(gòu),即通過在不同數(shù)據(jù)上運行大量擁有相同代碼的線程來完成計算任務。如圖1所示,CUDA以線程網(wǎng)格(thread grid)方式來組織內(nèi)核函數(shù)運行,每個線程網(wǎng)格由大量線程塊(thread block)組成,每個線程塊又由若干線程(thread)構(gòu)成。各個線程塊之間并行執(zhí)行,線程塊之間只能通過全局內(nèi)存進行通信;同一線程塊中的每32個線程被捆綁成為一個線程束(thread warp)嚴格同步執(zhí)行,warp其實是GPU中最小的實際執(zhí)行單位,線程塊中的線程可以通過共享存儲器(shared memory)和柵欄(barrier)進行通信和同步。綜上所述,內(nèi)核函數(shù)之間存在2類并行:一類是不同線程塊之間的粗粒度并行,通信代價較大;另一類是同一線程塊內(nèi)不同warp之間的細粒度并行,通信代價較小。

        從硬件架構(gòu)來看,專用GPU計算卡一般由多個流多處理器 SM(Streaming Multiprocessor)單元、二級緩存、GPU設(shè)備內(nèi)存等組成。每個SM單元都擁有完整的線程仲裁機制、規(guī)模上千的算術(shù)邏輯單元ALU(Arithmetic Logic Unit)團簇、大量特殊功能單元(用于三角函數(shù)和指數(shù)函數(shù)等的計算)、寄存器和一級緩存等。當一個線程網(wǎng)格被啟動后,其包含的線程塊將被枚舉并分發(fā)到SM上執(zhí)行,單個線程塊只能在一個SM上執(zhí)行;SM上的線程束調(diào)度器(warp scheduler)負責調(diào)度和管理大量的warp,warp中線程所需的浮點計算操作將被映射到一個ALU或者特殊功能單元上執(zhí)行。

        GPU通過大量wrap之間的自動切換來掩蓋訪存延遲,當一個warp發(fā)出高延遲的內(nèi)存請求之后,SM將掛起該warp,并激活其他處于就緒狀態(tài)的warp,因此SM上必須具有相當數(shù)量的warp,才能充分掩蓋訪存延遲,并充分利用計算資源。

        綜上所述,GPU算法必須保證一定數(shù)量的線程塊來占滿所有的SM單元,同時必須保證一定數(shù)量的線程(或者線程束)來掩蓋訪存延遲,因此可按照以下步驟進行線程分配方式設(shè)計。

        a.GPU型號確定后,查詢硬件手冊獲取SM單元數(shù)量NSM、每個SM單元最大常駐線程數(shù)Nmax_thd_per_SM、每個SM單元最大常駐線程塊數(shù)Nmax_blk_per_SM這3個參數(shù)。

        b.為了保證warp數(shù)量,應充分挖掘可并行的浮點計算,并使線程總數(shù)Nthd盡量大。

        c.為了保證SM的占有率為100%,線程塊大小Nthd_per_blk按下式確定:

        d.為了充分利用所有的SM單元,線程塊數(shù)量Nblk的配置應盡量滿足下式:

        2.4 GPU內(nèi)存的使用準則

        GPU上的存儲資源可分為兩大類:第一類是集成在SM單元上的寄存器、一級緩存、共享存儲器等,第二類是所有SM單元共享的二級緩存和全局存儲器。存儲資源的優(yōu)化分配和使用對算法的性能至關(guān)重要,下面主要對共享存儲器和全局存儲器的使用原則進行分析。

        (1)共享存儲器的物理位置位于SM單元內(nèi),其優(yōu)點是延遲低,缺點是容量有限且只能被同一個線程塊中的線程訪問。當數(shù)據(jù)需要被一個線程塊多次使用時,應優(yōu)先考慮使用共享存儲器。

        (2)全局存儲器的物理位置位于SM單元外,其缺點是訪問延遲高達幾百個時鐘周期,優(yōu)點是容量大。在CUDA架構(gòu)中,同一個warp中的32個線程發(fā)出的內(nèi)存請求會被盡量合并來減少實際發(fā)生的內(nèi)存事務,最理想的情況是warp中的32個線程讀取連續(xù)內(nèi)存,則最少只需要1次內(nèi)存事務就可以取回所有數(shù)據(jù);反之,如果warp中的32個線程讀取存儲不連續(xù)的數(shù)據(jù),則最多需要32次內(nèi)存事務才能取回所需數(shù)據(jù)。因此,除了保證足夠多的warp數(shù)量來掩蓋訪存延遲外,全局內(nèi)存使用的第一準則是盡量實現(xiàn)合并訪問,盡量通過設(shè)計讓warp中的32個線程訪問連續(xù)的物理地址。

        3 故障篩選GPU算法的優(yōu)化設(shè)計

        基于第2節(jié)提出的通用設(shè)計準則,本節(jié)對故障篩選GPU算法進行詳細設(shè)計和優(yōu)化。

        3.1 GPU和算例參數(shù)

        GPU算法的設(shè)計與硬件密切相關(guān),所以首先明確采用的CPU+GPU混合架構(gòu)計算平臺的參數(shù),并引入算例。

        混合架構(gòu)服務器的操作系統(tǒng)為Windows7,CUDA版本為6.0;CPU配置為1顆6核心Intel Xeon E5-2620,主頻 2 GHz;GPU配置為1顆 NVIDIA K20。K20 GPU采用Kepler GK110架構(gòu),包含13個SM單元,單精度浮點峰值為3.52 Tflops,內(nèi)存帶寬為208 GByte/s;每個SM單元包含192個單精度計算核、64個雙精度計算核、32個特殊功能單元[14]。

        本文采用2個算例進行性能分析:算例1為MATPOWER中的case 2383 wp,節(jié)點數(shù)為2383個,支路數(shù)為2896條,發(fā)電機數(shù)為327臺;算例2采用中國某區(qū)域電網(wǎng),節(jié)點數(shù)為9241個,支路數(shù)為16049條,發(fā)電機數(shù)為1445臺。

        GPU程序和用于性能對比的CPU程序都基于第1節(jié)提出的模型編寫,兩者都采用單精度浮點數(shù)據(jù)格式,CPU程序采用VC編寫。

        3.2 任務分配和數(shù)據(jù)交互設(shè)計

        基于2.1節(jié)和2.2節(jié)提出的任務分配和數(shù)據(jù)交互準則,建立如圖2所示的算法總體流程。

        圖2 直流篩選GPU算法流程Fig.2 Flowchart of GPU-based DC CS algorithm

        a.由CPU負責控制程序的總體流程和不可并行的浮點計算,包括準備基態(tài)和開斷信息、處理篩選結(jié)果、控制數(shù)據(jù)傳輸和啟動GPU內(nèi)核函數(shù)。

        b.GPU負責可并行化的浮點計算任務,一共設(shè)計了4個內(nèi)核函數(shù)來進行故障篩選,其中內(nèi)核1根據(jù)式(7)和式(4)計算支路開斷后的電壓相角向量θ,由于各個支路開斷之間沒有關(guān)聯(lián),最直觀的線程分配方法是內(nèi)核1的一個線程計算一個支路開斷;內(nèi)核2根據(jù)式(3)計算支路有功,并將計算結(jié)果與限值比較判斷是否越限。同理,內(nèi)核3根據(jù)式(8)和式(4)計算發(fā)電機開斷后的電壓相角向量θ;內(nèi)核4進行發(fā)電機開斷的支路功率校驗。

        c.CPU傳遞給GPU的數(shù)據(jù)包括基態(tài)斷面X0、θ0和P0,支路信息和發(fā)電機信息;GPU回傳給CPU的數(shù)據(jù)主要包括嚴重故障集信息,即屬于嚴重故障集的支路開斷和發(fā)電機開斷編號。算例1和算例2的基態(tài)電抗陣X0的數(shù)據(jù)存儲量分別約為23 MByte和350 MByte,其他數(shù)據(jù)的存儲量小于0.5 MByte。上述交互數(shù)據(jù)是故障篩選的必要數(shù)據(jù),無法再優(yōu)化壓縮,但可通過頁鎖定內(nèi)存來減少交互時間。

        d.不失一般性,以內(nèi)核函數(shù)1來闡述設(shè)計細節(jié),算法1流程圖見圖3,其中線程總數(shù)Nthd等于支路數(shù)量Nbranch,線程塊大小取Nthd_per_blk=128;線程的浮點計算量集中在計算第b條支路開斷后的電壓向量θb。

        算例1和算例2的GPU算法加速性能見表1。

        圖3 算法1流程圖Fig.3 Flowchart of algorithm 1

        表1 GPU算法性能Table 1 Performance of GPU-based algorithm

        由表1可得如下結(jié)論。

        (1)算例1的GPU算法總執(zhí)行時間為79 ms,其中分頁內(nèi)存數(shù)據(jù)交互時間為17 ms(采用頁鎖定內(nèi)存時,數(shù)據(jù)交互時間降為9 ms),約占總時間的22%;內(nèi)核函數(shù)執(zhí)行時間為62 ms,約占總時間的78%。CPU算法的總執(zhí)行時間為196 ms,GPU算法的加速比為196 /79≈2.48。

        (2)算例2的GPU算法總執(zhí)行時間為2330 ms,其中分頁內(nèi)存數(shù)據(jù)交互時間為240 ms(采用頁鎖定內(nèi)存時,數(shù)據(jù)交互時間降為120 ms),約占總時間的10%;內(nèi)核函數(shù)執(zhí)行時間為2090 ms,約占總時間的90%。CPU算法的總執(zhí)行時間為9672 ms,GPU算法的加速比為9672/2330≈4.15。

        3.3 線程分配優(yōu)化設(shè)計

        按照第2.3節(jié)提出的線程分配準則來優(yōu)化算法1,具體步驟如下。

        a.查詢NVIDIA K20的硬件手冊,獲取和線程分配設(shè)計相關(guān)的參數(shù),包括SM單元數(shù)量NSM=13,每個SM單元最大常駐線程數(shù)Nmax_thd_per_SM=2048,每個SM單元最大常駐線程塊數(shù)Nmax_blk_per_SM=16。

        b.為了保證warp數(shù)量,應充分挖掘可并行的浮點計算,并使線程總數(shù)Nthd盡量大。改進后的算法(算法2)流程圖見圖4,總體思路是將算法1中第b條支路開斷后的電壓向量θb計算分配給一個線程塊。

        圖4 算法2流程圖Fig.4 Flowchart of algorithm 2

        c.為了保證SM單元的占有率為100%,線程塊的大小按式(9)計算,Nthd_per_blk=2048 /16=128。

        不失一般性,以算例2為例來分析:算法1的線程總數(shù)Nthd=Nbranch=16049個,Nthd_per_blk=128個,線程塊數(shù)量 Nblk=(Nbranch+Nthd_per_blk-1)/Nthd_per_blk=126個,不滿足式(10)要求的 13×16=208(個)。相比較而言,算法2的線程總數(shù)和線程塊數(shù)量都擴大了128倍,遠超式(10)要求,不僅提供了足夠的線程塊來充分利用SM資源,同時也提供了更多的線程束來掩蓋訪存延遲。

        經(jīng)測試,經(jīng)過線程分配優(yōu)化之后,算例2的內(nèi)核函數(shù)執(zhí)行時間從算法1的2090 ms下降為算法2的534 ms,獲得的額外加速比為2090/534≈3.91。

        3.4 內(nèi)存訪問優(yōu)化設(shè)計

        按照第2.4節(jié)提出的內(nèi)存使用設(shè)計準則來優(yōu)化算法2,具體步驟如下。

        a.算法2中沒有數(shù)據(jù)被一個線程塊重復使用,所以沒有必要使用共享存儲器。

        b.算法 2 中計算 θb(t)=θ0(t)+c[θ0(i)-θ0(j)]×[X0(t,i)-X0(t,j)]需要訪問矩陣 X0的第i列和第j列元素,造成一個warp中的32個線程訪問物理地址不連續(xù)的數(shù)據(jù),且彼此間隔矩陣X0一行,此時,每個warp需要32次內(nèi)存事務才能取回所需數(shù)據(jù),屬于完全不合并訪問的最差情況。為了提升訪存效率,修改算法2形成算法3,流程圖見圖5。由于電抗陣 X0為對稱陣,所以有 X0(i,t)=X0(t,i)和 X0(j,t)=X0(t,j)。算法 3 中,每個 warp 中的 32 個線程訪問物理地址連續(xù)的數(shù)據(jù),即矩陣X0一行中的連續(xù)元素,屬于完全合并的最佳情況,訪存效率將大幅提高。

        圖5 算法3流程圖Fig.5 Flowchart of algorithm 3

        經(jīng)測試,經(jīng)過合并訪存設(shè)計之后,算例2內(nèi)核函數(shù)的執(zhí)行時間從算法2的534 ms下降為算法3的68 ms,獲得的額外加速比為534/68≈7.85。

        3.5 效果分析

        表2給出了頁鎖定內(nèi)存數(shù)據(jù)交互、線程分配優(yōu)化、內(nèi)存訪問優(yōu)化之后的GPU算法性能。

        表2 優(yōu)化后GPU算法性能Table 2 Performance of GPU-based algorithm after optimization

        對比表1所示優(yōu)化前性能可得結(jié)論如下。

        a.和分頁內(nèi)存數(shù)據(jù)交互相比,頁鎖定內(nèi)存數(shù)據(jù)交互可以將數(shù)據(jù)傳輸時間降低一半左右,但分配頁鎖定內(nèi)存會減少操作系統(tǒng)可分頁物理內(nèi)存的大小,因此使用過大的頁鎖定內(nèi)存會降低系統(tǒng)性能。

        b.經(jīng)過線程分配優(yōu)化之后,算例2的內(nèi)核執(zhí)行時間從2090 ms下降為534 ms,獲得了額外3.91倍加速。

        c.經(jīng)過內(nèi)存訪問優(yōu)化之后,算例2的內(nèi)核執(zhí)行時間從534 ms下降為68 ms,獲得了額外7.85倍加速。

        d.經(jīng)過頁鎖定內(nèi)存數(shù)據(jù)交互、線程分配優(yōu)化、內(nèi)存訪問優(yōu)化之后,算例2的GPU算法執(zhí)行時間從2330 ms下降為188 ms,獲得了額外12.4倍加速,相對于CPU算法的加速比為9672/188≈51。此外可以看出,算例2的數(shù)據(jù)交互時間約占總時間的64%,內(nèi)核執(zhí)行時間約占36%,數(shù)據(jù)交互時間已經(jīng)成為算法瓶頸。

        e.經(jīng)過充分優(yōu)化之后,算例1的GPU算法執(zhí)行時間從79 ms下降為12.1 ms,獲得了額外6.53倍加速,相對于CPU算法的加速比為196/12.1≈16.2??梢钥闯?,無論是算法整體性能還是優(yōu)化設(shè)計的效果,算例1都小于算例2,究其原因是因為算例1的規(guī)模較小,難以充分發(fā)揮GPU的硬件能力。

        為了更加公平地評價GPU算法的性能,采用OpenMP技術(shù)對CPU算法進行多線程加速,每個CPU線程負責計算一部分支路開斷或發(fā)電機開斷,多線程算法的測試在混合架構(gòu)平臺的6核心Intel Xeon E5-2620上完成。表3給出了多線程算法的測試效果,對其分析如下:6線程CPU算法相對于單線程取得了4.49倍加速,但已經(jīng)出現(xiàn)了輕微的飽和現(xiàn)象;即使和6線程CPU算法相比,GPU算法仍然可取得11倍加速。

        表3 GPU算法和多線程CPU算法的性能對比Table 3 Comparison of performance between GPU-based algorithm and CPU-based multi-thread algorithm

        4 結(jié)論

        嚴重故障集篩選過程占整個靜態(tài)安全分析總時間的25%~30%,對其采用高性能計算技術(shù)進行加速具有工程意義。直流故障篩選算法主要涉及稠密向量計算,非常適合采用GPU進行并行加速。本文研究的主要貢獻如下。

        a.對GPU的軟硬件架構(gòu)特點進行了詳細剖析,基于此提出了GPU算法在任務分配、數(shù)據(jù)交互、線程分配、內(nèi)存使用4個方面應遵循的設(shè)計準則。

        b.基于上述GPU算法的通用設(shè)計準則,對直流故障篩選算法進行了詳細設(shè)計和優(yōu)化,提出了一種匹配GPU軟硬件架構(gòu)的并行直流故障篩選算法。9 241節(jié)點算例的絕對執(zhí)行時間僅為188 ms,相對于6核心CPU算法取得了11倍加速。

        本文研究表明:結(jié)合GPU軟硬件架構(gòu)的算法設(shè)計至關(guān)重要,提出的4個設(shè)計準則具有通用性,可被應用于其他電力系統(tǒng)算法的GPU加速。

        參考文獻:

        [1]王錫凡.現(xiàn)代電力系統(tǒng)分析[M].北京:科學出版社,2003:98-104.

        [2]李峰,李虎成,於益軍,等.基于并行計算和數(shù)據(jù)復用的快速靜態(tài)安全校核技術(shù)[J].電力系統(tǒng)自動化,2013,37(14):75-80.LI Feng,LI Hucheng,YU Yijun,et al.Fast computing technologies for static security checking based on parallel computation and data reuse[J].Automation of Electric Power Systems,2013,37(14):75-80.

        [3]陳國良.并行計算:結(jié)構(gòu)算法編程[M].北京:高等教育出版社,2003:13-17.

        [4]Nvidia.CUDA programming guide[EB/OL].[2016-02-06].http:∥docs.nvidia.com /cuda /cuda-c-programming-guide.

        [5]張寧宇,高山,趙欣.一種求解機組組合問題的內(nèi)點半定規(guī)劃GPU并行算法[J].電力自動化設(shè)備,2013,33(7):126-131.ZHANG Ningyu,GAO Shan,ZHAO Xin.GPU parallel algorithm of interior point SDP for unit commitment[J].Electric Power Automation Equipment,2013,33(7):126-131.

        [6]韓志偉,劉志剛,魯曉帆,等.基于CUDA的高速并行小波算法及其在電力系統(tǒng)諧波分析中的應用[J].電力自動化設(shè)備,2010,30(1):98-101.HAN Zhiwei,LIU Zhigang,LU Xiaofan,et al.High-speed parallel wavelet algorithm based on CUDA and its application in power system harmonic analysis[J].Electric Power Automation Equipment,2010,30(1):98-101.

        [7]陳來軍,陳穎,許寅,等.基于GPU的電磁暫態(tài)仿真可行性研究[J].電力系統(tǒng)保護與控制,2013,41(2):107-112.CHEN Laijun,CHEN Ying,XU Yin,et al.Feasibility study of GPU based electromagnetic transient simulation[J].Power System Protection and Control,2013,41(2):107-112.

        [8]唐聰,嚴正,周挺輝.基于圖形處理器的廣義最小殘差迭代法在電力系統(tǒng)暫態(tài)仿真中的應用[J].電網(wǎng)技術(shù),2013,37(5):1365-1377.TANG Cong,YAN Zheng,ZHOU Tinghui.Application of graph processing unit-based generalized minimal residual iteration in power system transient simulation[J].Power System Technology,2013,37(5):1365-1377.

        [9]張寧宇,高山,趙欣.基于GPU的機電暫態(tài)仿真細粒度并行算法[J].電力系統(tǒng)自動化,2012,36(9):54-60.ZHANG Ningyu,GAO Shan,ZHAO Xin.A fine granularity parallel algorithm for electromechanical transient stability simulation based on graphic processing unit[J].Automation of Electric Power Systems,2012,36(9):54-60.

        [10]夏俊峰,楊帆,李靜,等.基于GPU的電力系統(tǒng)并行潮流計算的實現(xiàn)[J].電力系統(tǒng)保護與控制,2010,38(18):100-110.XIA Junfeng,YANG Fan,LI Jing,et al.Implementation of parallel power flow calculation based on GPU[J].Power System Protection and Control,2010,38(18):100-110.

        [11]楊罡,喻樂,劉明光.基于多輕量線程的電力系統(tǒng)潮流計算加速方法[J].電網(wǎng)技術(shù),2013,37(6):1666-1670.YANG Zhi,YU Le,LIU Mingguang.A method for accelerating power flow calculation based on multiple light threads[J].Power System Technology,2013,37(6):1666-1670.

        [12]陳德?lián)P,李亞樓,江涵,等.基于道路樹分層的大電網(wǎng)潮流并行算法及其 GPU 優(yōu)化實現(xiàn)[J].電力系統(tǒng)自動化,2014,38(22):63-69.CHEN Deyang,LI Yalou,JIANG Han,et al.A parallel power flow algorithm for large-scale grid based on stratified path trees and its implementation on GPU[J].Automation of Electric Power Systems,2014,38(22):63-69.

        [13]徐得超,陳勇,王偉,等.基于圖形處理器的多波前潮流計算方法[J].高電壓技術(shù),2016,42(10):3301-3307.XU Dechao,CHEN Yong,WANG Wei,et al.GPU-based multifrontal methods in power flow calculation[J].High Voltage Engineering,2016,42(10):3301-3307.

        [14]Nvidia.NVIDIA’s next generation CUDA compute architecture:kepler GK110[EB/OL].[2016-02-06].http:∥www.nvidia.com /content/PDF /kepler/NVIDIA-Kepler-GK110-Architecture-Whitepaper.

        猜你喜歡
        浮點算例支路
        LEO星座增強GNSS PPP模糊度浮點解與固定解性能評估
        基于限流可行方案邊界集的最優(yōu)支路投切
        能源工程(2020年6期)2021-01-26 00:55:22
        基于浮點DSP的鐵路FSK信號檢測
        多支路兩跳PF協(xié)作系統(tǒng)的誤碼性能
        電信科學(2016年9期)2016-06-15 20:27:30
        利用支路參數(shù)的狀態(tài)估計法辨識拓撲錯誤
        基于振蕩能量的低頻振蕩分析與振蕩源定位(二)振蕩源定位方法與算例
        互補問題算例分析
        基于FPGA的浮點FIR濾波器設(shè)計
        基于CYMDIST的配電網(wǎng)運行優(yōu)化技術(shù)及算例分析
        改進的Goldschmidt雙精度浮點除法器
        久久久久麻豆v国产精华液好用吗| 日韩一本之道一区中文字幕| 美女下蹲露大唇无遮挡| 激烈的性高湖波多野结衣| 国产精品后入内射日本在线观看 | 午夜精品久久久久久久99热| 女同性黄网aaaaa片| 国产av专区一区二区三区| 开心激情网,开心五月天| 色吧噜噜一区二区三区| 丰满人妻熟妇乱又伦精品软件| 国产99re在线观看只有精品| 久久伊人中文字幕有码久久国产 | 欧美孕妇xxxx做受欧美88| 亚洲三区二区一区视频| 国产美女一区三区在线观看| 免费观看成人欧美www色| 把插八插露脸对白内射| 久久99久久99精品免观看女同 | 亚洲av中文无码乱人伦在线咪咕| 亚洲岛国一区二区三区| 亚洲国产精品久久电影欧美| 色两性网欧美| 极品美女尤物嫩模啪啪| 久久av不卡人妻出轨一区二区| 亚洲成av人影院| 亚洲毛片在线播放| av在线网站一区二区| 日韩人妻不卡一区二区三区| 中文人妻av久久人妻18| 韩日无码不卡| 漂亮人妻出轨中文字幕| 免费va国产高清大片在线| 精品午夜久久网成年网| 亚洲一区二区三区高清视频| 亚洲精品乱码久久久久蜜桃| 亚洲成a人v欧美综合天堂麻豆| 国内精品九九久久精品小草| 亚洲国产av一区二区三区精品| 日韩人妻无码精品久久免费一 | 免费精品美女久久久久久久久久|