本發(fā)明涉及一種并行編程輔助系統(tǒng),具體涉及一種大電網(wǎng)用在線分析計(jì)算的并行編程輔助系統(tǒng)及其調(diào)試方法。
背景技術(shù):
智能電網(wǎng)精細(xì)化調(diào)度對(duì)大電網(wǎng)在線分析計(jì)算的實(shí)時(shí)性要求越來越高,其性能將對(duì)后續(xù)在線安全穩(wěn)定分析軟件的計(jì)算實(shí)時(shí)性產(chǎn)生很大的影響。需要研究適合大電網(wǎng)實(shí)時(shí)在線分析軟件的并行計(jì)算技術(shù)和手段,綜合利用當(dāng)前并行計(jì)算的已有成果,大幅縮短在線分析軟件的計(jì)算時(shí)間,滿足大電網(wǎng)全模型實(shí)時(shí)分析計(jì)算的實(shí)時(shí)性要求。
并行軟件開發(fā)難度大、門檻高,需要開發(fā)人員除具有較高的并行計(jì)算編程知識(shí)水平及較豐富的編程經(jīng)驗(yàn),因此需要研發(fā)一種適用于大電網(wǎng)在線分析計(jì)算的并行編程輔助工具,輔助開發(fā)人員進(jìn)行并行框架搭建和功能開發(fā)的漸進(jìn)式指導(dǎo),提供圖形化的開發(fā)調(diào)試界面,輔助用戶定位和解決并行程序的運(yùn)行時(shí)錯(cuò)誤,以縮短并行程序的開發(fā)周期,提高并行程序開發(fā)效率,降低大電網(wǎng)在線分析計(jì)算并行化編程的技術(shù)門檻和難度。相對(duì)于串行調(diào)試方法,并行程序調(diào)試除了獲取各個(gè)進(jìn)程的運(yùn)行信息外,還要能獲取進(jìn)程間的通信信息,因此控制流程更加復(fù)雜。
目前已有的并行編程工具包括Total View、Intel Parallel Studio、Allinea DDT(Distributed Debugging Tool)、基于eclipse的PTP(Parallel Tools Platform)和中國科技大學(xué)為曙光機(jī)群系統(tǒng)開發(fā)的DCDB(Dawning Cluster Debugger)等。其中,Total View和Intel Parallel Studio是通用商業(yè)軟件,功能較多,使用門檻高,無法增加用于大電網(wǎng)在線分析的個(gè)性化功能;DDT和DCDB是針對(duì)專門系統(tǒng)設(shè)計(jì)的,不使用于在線分析集群系統(tǒng);eclipse PTP是開源項(xiàng)目,很多功能不完善。
技術(shù)實(shí)現(xiàn)要素:
為了克服上述現(xiàn)有技術(shù)的不足,本發(fā)明提供一種大電網(wǎng)用在線分析計(jì)算的并行編程輔助系統(tǒng)及其調(diào)試方法,該系統(tǒng)與大電網(wǎng)并行編程模型緊密結(jié)合,有效提高大電網(wǎng)在線分析的并行化效率。
為了實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明采取如下技術(shù)方案:
一種適用于大電網(wǎng)在線分析計(jì)算的并行編程輔助系統(tǒng),所述系統(tǒng)包括:并行計(jì)算集群和大電網(wǎng)在線分析并行編程工作站,兩者通過Socket訪問接口進(jìn)行通信,所述并行計(jì)算集群包含n臺(tái)裝有國產(chǎn)linux系統(tǒng)的服務(wù)器,每臺(tái)服務(wù)器都包含調(diào)試器和開發(fā)調(diào)試服務(wù) 模塊;所述大電網(wǎng)在線分析并行編程工作站用于開發(fā)人員進(jìn)行編寫、調(diào)試并行程序的計(jì)算機(jī)終端,包含輔助系統(tǒng)底層服務(wù)模塊和跨平臺(tái)的輔助人機(jī)界面,所述輔助系統(tǒng)底層服務(wù)模塊和跨平臺(tái)的輔助人機(jī)界面通過API訪問接口進(jìn)行通信。
所述輔助系統(tǒng)底層服務(wù)模塊包含Eclipse基礎(chǔ)服務(wù)單元、MPI輔助單元和并行編程模型輔助單元,所述跨平臺(tái)的輔助人機(jī)界面包含Eclipse圖形工作臺(tái)、代碼編輯器模塊、編程模型輔助模塊和輔助調(diào)試模塊。
所述開發(fā)調(diào)試服務(wù)模塊與所述Eclipse基礎(chǔ)服務(wù)單元通過Socket進(jìn)行通信,使編程輔助終端遠(yuǎn)程編輯和調(diào)試應(yīng)用程序;
所述調(diào)試器分為調(diào)試客戶端模塊和調(diào)試服務(wù)端模塊,兩者通過網(wǎng)絡(luò)套接字socket聯(lián)系;
所述調(diào)試服務(wù)端模塊運(yùn)行在計(jì)算節(jié)點(diǎn)端,負(fù)責(zé)接收和處理所述調(diào)試客戶端模塊的控制命令,并將命令返回給所述調(diào)試客戶端模塊;
所述調(diào)試客戶端模塊用于接收所述調(diào)試服務(wù)端模塊處理后的控制命令,并返回給所述輔助調(diào)試模塊。
所述Eclipse基礎(chǔ)服務(wù)單元通過socket訪問接口與計(jì)算服務(wù)器集群進(jìn)行通信,為所述MPI輔助單元、所述并行編程模型輔助單元和所述編程語言輔助單元提供API接口;
所述MPI輔助單元利用Eclipse平臺(tái)的插件體系結(jié)構(gòu)與MPI并行開發(fā)輔助工具集成到開發(fā)平臺(tái)上,實(shí)現(xiàn)MPI并行環(huán)境配置、程序自動(dòng)分發(fā)和負(fù)載均衡輔助;
所述并行編程模型輔助單元封裝了對(duì)負(fù)載均衡和容錯(cuò)管理的實(shí)現(xiàn)類。
若開發(fā)人員使用Windows系統(tǒng)開發(fā),所述輔助系統(tǒng)底層服務(wù)模塊還包括跨平臺(tái)編程語言輔助單元,用于與Linux計(jì)算節(jié)點(diǎn)系統(tǒng)相匹配。
所述Eclipse圖形工作臺(tái)用于構(gòu)建所述代碼編輯器模塊、所述編程模型輔助模塊和所述輔助調(diào)試模塊;
所述代碼編輯器模塊基于C語言開發(fā)環(huán)境CDT的C/MPI源代碼編輯工具,提供了對(duì)版本管理工具git的支持,并在此基礎(chǔ)上設(shè)計(jì)了基于SVN的開發(fā)模式;
所述編程模型輔助模塊用于以圖形化方式展示開發(fā)調(diào)試過程;
所述輔助調(diào)試模塊,用于分發(fā)控制命令給調(diào)試服務(wù)端模塊以及接收和分析調(diào)試服務(wù)端模塊的返回結(jié)果,以界面展現(xiàn)給用戶。
一種適用于大電網(wǎng)在線分析計(jì)算的并行編程輔助系統(tǒng)的調(diào)試方法,所述方法包括如下步驟:
(1)創(chuàng)建和修改并行編程工作站上的程序代碼,通過編程模型輔助模塊調(diào)用并行編程模型輔助單元的輔助功能,為所述并行編程工作站加入負(fù)載均衡和容錯(cuò)管理功能;
(2)當(dāng)編輯結(jié)束保存程序代碼時(shí),將程序代碼同步到并行計(jì)算集群中的各個(gè)服務(wù)器中,編譯調(diào)試程序;
(3)當(dāng)程序由多人進(jìn)行協(xié)同開發(fā)時(shí),每個(gè)開發(fā)人員的程序代碼都由SVN版本管理模塊進(jìn)行管理;
(4)并行計(jì)算集群的開發(fā)調(diào)試服務(wù)模塊自動(dòng)檢測(cè)代碼是否變化,若通過除編程模型輔助模塊以外的其他編輯器修改過程序代碼,則執(zhí)行步驟(5);
(5)將程序代碼通過Eclipse基礎(chǔ)服務(wù)單元的socket接口同步到所述SVN版本管理模塊中,其他開發(fā)人員在保存程序代碼時(shí)發(fā)現(xiàn)版本變化,所述SVN版本管理模塊合并多個(gè)開發(fā)人員的修改,并同步到服務(wù)器和各個(gè)開發(fā)人員的編程工作站上。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于:
本發(fā)明提出了一種適用于大電網(wǎng)在線分析計(jì)算的并行編程輔助系統(tǒng)的總體架構(gòu),該系統(tǒng)與大電網(wǎng)并行編程模型緊密結(jié)合,能夠有效提高大電網(wǎng)在線分析的并行化效率;
本發(fā)明提出了一種增強(qiáng)型的遠(yuǎn)程開發(fā)調(diào)試流程,在遠(yuǎn)程開發(fā)模式基礎(chǔ)上增加了文件同步功能,使遠(yuǎn)程開發(fā)具備了本地版本管理的能力,同時(shí)不需要同步模式復(fù)雜的配置。這種方式比較適合并行在線分析計(jì)算軟件的開發(fā)。
附圖說明
圖1是本發(fā)明提供的一種適用于大電網(wǎng)在線分析計(jì)算的并行編程輔助系統(tǒng)結(jié)構(gòu)圖
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明。
如圖1所示,一種適用于大電網(wǎng)在線分析計(jì)算的并行編程輔助系統(tǒng),該系統(tǒng)包括并行計(jì)算集群和大電網(wǎng)在線分析并行編程工作站;并行計(jì)算集群包含n臺(tái)裝有國產(chǎn)linux系統(tǒng)的計(jì)算服務(wù)器,每臺(tái)服務(wù)器都包含調(diào)試器和開發(fā)調(diào)試服務(wù)模塊。并行編程工作站包含輔助系統(tǒng)底層服務(wù)模塊和跨平臺(tái)的輔助人機(jī)界面;輔助系統(tǒng)底層服務(wù)模塊包含Eclipse基礎(chǔ)服務(wù)單元、MPI輔助單元、并行編程模型輔助單元和跨平臺(tái)編程語言輔助單元;并行編程輔助人機(jī)界面包含Eclipse圖形工作臺(tái)、代碼編輯器模塊、編程模型輔助模塊和輔助調(diào)試模塊。
1.并行計(jì)算集群
大電網(wǎng)在線分析集群計(jì)算節(jié)點(diǎn)采用國產(chǎn)服務(wù)器和國產(chǎn)安全操作系統(tǒng)。國產(chǎn)操作系統(tǒng) 自帶的編譯器對(duì)一些并行開發(fā)的特性不支持,需要升級(jí)計(jì)算節(jié)點(diǎn)的編譯器為最新版本的gcc編譯器;安裝Clang編譯器,Clang編譯的速度更快、編譯產(chǎn)出更小、出錯(cuò)提示更友好;升級(jí)Glibc運(yùn)行庫;同時(shí)配置java運(yùn)行環(huán)境和MPI運(yùn)行環(huán)境。
1.1.開發(fā)調(diào)試服務(wù)模塊
大電網(wǎng)在線分析集群中的每個(gè)Linux計(jì)算節(jié)點(diǎn)都部署開發(fā)調(diào)試服務(wù)模塊,服務(wù)程序與Eclipse平臺(tái)通過Socket進(jìn)行通信,使編程輔助終端可以遠(yuǎn)程編輯和調(diào)試應(yīng)用程序。
調(diào)試服務(wù)端負(fù)責(zé)接收調(diào)試客戶端發(fā)出的控制命令,同時(shí)把這些命令轉(zhuǎn)換成GDB可識(shí)別的調(diào)試命令,在GDB執(zhí)行完命令后,分析GDB的輸出,并提取有用信息傳遞給調(diào)試Client;大電網(wǎng)在線分析計(jì)算程序采用GDB調(diào)試器能夠提高系統(tǒng)的可移植性,同時(shí)由于其開源特性,能夠滿足電力系統(tǒng)二次設(shè)備安全防護(hù)和信息系統(tǒng)等級(jí)保護(hù)的安全要求,同時(shí)可以方便地對(duì)其進(jìn)行功能擴(kuò)展。
1.2.調(diào)試器
計(jì)算節(jié)點(diǎn)的應(yīng)用程序是用C/C++編寫的MPI或多線程并行程序??紤]到MPI編程模式的結(jié)構(gòu)特性,本系統(tǒng)采用Client/Serve模式來設(shè)計(jì)并行輔助調(diào)試器。調(diào)試器從邏輯上分為兩部分:調(diào)試Client和調(diào)試Server。調(diào)試Client運(yùn)行在編程工作站端;調(diào)試Server運(yùn)行在計(jì)算服務(wù)器端,負(fù)責(zé)接收調(diào)試Client的命令,把該命令轉(zhuǎn)換成GDB可識(shí)別的命令格式,GDB對(duì)被調(diào)試的應(yīng)用程序作相應(yīng)的調(diào)試操作,并把調(diào)試輸出返回給調(diào)試Server,調(diào)試Server經(jīng)過一定的處理,把結(jié)果返回給調(diào)試Client,最后再由調(diào)試Client返回給并行編程輔助人機(jī)界面的輔助調(diào)試模塊單元。
2.并行編程工作站
并行編程工作站是用于程序開發(fā)人員進(jìn)行編寫、調(diào)試并行程序的計(jì)算機(jī)終端。該終端可以支持多種操作系統(tǒng)平臺(tái),根據(jù)電力系統(tǒng)的安全防護(hù)需要,在調(diào)控中心必須使用國產(chǎn)linux操作系統(tǒng),但是在實(shí)驗(yàn)室環(huán)境可以使用其他操作系統(tǒng),提高并行研發(fā)的整體效率。
2.1.輔助系統(tǒng)底層服務(wù)模塊
底層服務(wù)模塊基于Eclipse平臺(tái),集成了MPI輔助單元,并行編程模型輔助單元和跨平臺(tái)語言開發(fā)輔助單元。底層服務(wù)模塊為圖形終端提供了API接口,輔助人機(jī)界面模塊通過API訪問底層輔助模塊的各個(gè)單元。
2.1.1.Eclipse基礎(chǔ)服務(wù)單元
Eclipse基礎(chǔ)服務(wù)單元通過socket訪問接口與計(jì)算服務(wù)器集群進(jìn)行通信,同時(shí)為底層服務(wù)模塊中的其他單元(MPI輔助單元、并行編程模型輔助單元和編程語言輔助單元) 提供API接口,并對(duì)其他單元進(jìn)行管理。
Eclipse基礎(chǔ)服務(wù)單元是基于的OSGi運(yùn)行時(shí)。OSGi是open services gateway initiative的簡(jiǎn)稱,原本是一種為嵌入式硬件開發(fā)的,用于服務(wù)端模塊和客戶端模塊交互的注冊(cè)服務(wù)。Eclipse使用OSGi來進(jìn)行插件的管理,底層服務(wù)模塊中的其他單元都是以插件的形式注冊(cè)到底層服務(wù)模塊中,由基礎(chǔ)服務(wù)單元負(fù)責(zé)各個(gè)插件的網(wǎng)絡(luò)訪問控制和資源分配管理。
2.1.2.MPI輔助單元
利用Eclipse基礎(chǔ)服務(wù)單元的插件服務(wù)體系把與MPI并行開發(fā)輔助工具集成到該編程輔助系統(tǒng)上。為研發(fā)人員提供MPI并行環(huán)境配置,程序自動(dòng)分發(fā),負(fù)載均衡輔助等功能。
2.1.3.并行編程模型輔助單元
狀態(tài)估計(jì)、調(diào)度員潮流、靜態(tài)安全分析等在線網(wǎng)絡(luò)分析功能為調(diào)度人員提供了一套分析和評(píng)估系統(tǒng)運(yùn)行狀態(tài)及安全性的實(shí)用工具。大電網(wǎng)在線分析并行集群的主要特點(diǎn)是基于同構(gòu)的服務(wù)器,操作系統(tǒng)為國產(chǎn)Linux操作系統(tǒng),而在實(shí)驗(yàn)室的開發(fā)終端可以是多平臺(tái)的,包括Linux,windows和Mac OS等。同時(shí),大電網(wǎng)在線分析計(jì)算的并行計(jì)算模式可以歸納為兩種模型,一種是不需要頻繁通信的多任務(wù)模型,適用于靜態(tài)安全分析和在線動(dòng)態(tài)穩(wěn)定分析等;一種是需要頻繁通信的交互式模型,適用于狀態(tài)估計(jì)和調(diào)度員潮流等的數(shù)值計(jì)算過程。通過引入編程模型提高程序開發(fā)的結(jié)構(gòu)化水平,使開發(fā)人員不用考慮底層的軟硬件結(jié)構(gòu)以及負(fù)載均衡和容錯(cuò)機(jī)制,將精力集中于并行算法的研究和實(shí)現(xiàn)。
并行編程模型封裝了對(duì)負(fù)載均衡和容錯(cuò)管理的實(shí)現(xiàn)方法,基于編程模型開發(fā)程序無需考慮負(fù)載均衡和容錯(cuò),簡(jiǎn)化了開發(fā)流程。
大電網(wǎng)在線分析計(jì)算的負(fù)載均衡方法采用靜態(tài)負(fù)載為主,動(dòng)態(tài)負(fù)載均衡為輔,其中靜態(tài)方法能夠根據(jù)計(jì)算節(jié)點(diǎn)的性能和負(fù)載情況將任務(wù)分配到合適的計(jì)算節(jié)點(diǎn),主要用于基于MPI的多機(jī)多進(jìn)程之間的負(fù)載平衡;動(dòng)態(tài)負(fù)載均衡方法用于多核多線程之間的計(jì)算分配,采用Work-Stealing等經(jīng)典的動(dòng)態(tài)負(fù)載均衡策略,當(dāng)一個(gè)線程沒有計(jì)算任務(wù)時(shí),可以從其它線程竊取多余的計(jì)算任務(wù),從而提高計(jì)算速度。
計(jì)算任務(wù)失敗一般分為兩種,一種是計(jì)算節(jié)點(diǎn)故障,一種是計(jì)算過程中出現(xiàn)內(nèi)存溢出等問題。由于在線分析軟件的計(jì)算速度比較快,因此適合大電網(wǎng)在線分析計(jì)算的容錯(cuò)處理方法主要是在線監(jiān)視程序運(yùn)行狀態(tài),出現(xiàn)問題及時(shí)重新啟動(dòng)計(jì)算。對(duì)于計(jì)算節(jié)點(diǎn)失敗的故障,輔助系統(tǒng)能夠自動(dòng)屏蔽故障節(jié)點(diǎn),重新配置啟動(dòng)參數(shù),然后再次啟動(dòng)計(jì)算。
21.4.跨平臺(tái)編程語言輔助單元
由于各種操作系統(tǒng)的C、C++開發(fā)環(huán)境不同,如果開發(fā)人員使用windows系統(tǒng)做開發(fā), 需要建立一套與Linux計(jì)算節(jié)點(diǎn)系統(tǒng)相匹配的C、C++輔助資源。
2.2.跨平臺(tái)的輔助人機(jī)界面
并行編程輔助系統(tǒng)最上層為抽象級(jí)別較高的跨平臺(tái)圖形化的輔助終端,繼承了Eclipse工作臺(tái)的代碼編輯器和調(diào)試工具,增加了大電網(wǎng)并行編程模型的輔助功能,輔助終端通過java實(shí)現(xiàn)跨平臺(tái)。
2.2.1.Eclipse圖形工作臺(tái)
圖形工作臺(tái)是Eclipse的整個(gè)用戶接口的統(tǒng)稱。Eclipse把基本的用戶接口作為工作臺(tái)API(Workbench API)提供出來,本系統(tǒng)在此基礎(chǔ)上構(gòu)建起了輔助調(diào)試、代碼生成輔助和大電網(wǎng)并行編程模型輔助等界面功能。
2.2.2.代碼編輯器模塊
代碼編輯器模塊是基于C語言開發(fā)環(huán)境CDT的C/MPI源代碼編輯工具,提供了對(duì)版本管理工具git的支持,本系統(tǒng)在此基礎(chǔ)上設(shè)計(jì)了基于SVN的開發(fā)模式。
2.2.3.編程模型輔助模塊
將并行程序的開發(fā)調(diào)試過程以圖形化的方式展現(xiàn)給用戶,通過編程模型模板可以為開發(fā)人員創(chuàng)建一個(gè)基于編程模型的范例,為編程人員提供了初始代碼,開發(fā)人員只需要在模板基礎(chǔ)上進(jìn)行修改即可完成并行程序開發(fā)。在編輯界面中鼠標(biāo)懸停在編程模型相關(guān)的標(biāo)識(shí)符上時(shí),可以彈出相關(guān)的中文說明,幫助開發(fā)人員快速掌握編程模型的使用方法。
2.2.4.輔助調(diào)試模塊
輔助調(diào)試模塊分發(fā)控制命令給調(diào)試Server以及接收調(diào)試Server的返回結(jié)果,同時(shí)進(jìn)行結(jié)果分析,封裝成事件,觸發(fā)上層用戶界面對(duì)事件做出響應(yīng)。
一種適用于大電網(wǎng)在線分析計(jì)算的并行編程輔助系統(tǒng)的調(diào)試方法,是一種增強(qiáng)型的遠(yuǎn)程開發(fā)調(diào)試流程,在遠(yuǎn)程開發(fā)模式基礎(chǔ)上增加了文件同步功能,使遠(yuǎn)程開發(fā)具備了本地版本管理的能力,同時(shí)不需要同步模式復(fù)雜的配置。這種方式比較適合并行在線分析計(jì)算軟件的開發(fā)。
(1)程序開發(fā)人員通過代碼編輯器模塊創(chuàng)建和修改并行編程工作站(客戶端)上的程序代碼,通過編程模型輔助模塊調(diào)用編程模型的輔助功能,為并行軟件加入負(fù)載均衡和容錯(cuò)管理功能;
(2)在編輯結(jié)束保存代碼的時(shí)候,輔助工具將代碼同步到計(jì)算服務(wù)器(服務(wù)端),開發(fā)人員通過輔助調(diào)試模塊編譯調(diào)試程序。
(3)當(dāng)程序由多人進(jìn)行協(xié)同開發(fā)時(shí),每個(gè)人的代碼都由SVN版本服務(wù)進(jìn)行管理。
(4)計(jì)算服務(wù)器上的開發(fā)調(diào)試服務(wù)自動(dòng)檢測(cè)代碼是否變化,如果有人通過編程模型輔助客戶端以外的其他編輯器修改過計(jì)算服務(wù)器上的代碼,計(jì)算服務(wù)器會(huì)將代碼通過Eclipse基礎(chǔ)服務(wù)單元的socket接口同步到SVN版本管理中;其他人員在保存代碼時(shí)可以發(fā)現(xiàn)版本變化,確認(rèn)修改無誤后,SVN版本服務(wù)合并多個(gè)開發(fā)人員的修改,并同步到服務(wù)器和各個(gè)開發(fā)人員的編程工作站上。
在線分析計(jì)算軟件專用模式比同步模式減少了通過分布式版本庫同步代碼的流程,采用socket進(jìn)行同步,減少了輔助系統(tǒng)的復(fù)雜配置環(huán)節(jié),文件同步效率更高。大電網(wǎng)在線分析計(jì)算集群屬于內(nèi)部專用網(wǎng)絡(luò),適合采用集中版本管理的方式,因此本輔助系統(tǒng)采用了SVN集中式版本庫管理多人同步開發(fā)的功能。
最后應(yīng)當(dāng)說明的是:以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非對(duì)其限制,盡管參照上述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,所屬領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:依然可以對(duì)本發(fā)明的具體實(shí)施方式進(jìn)行修改或者等同替換,而未脫離本發(fā)明精神和范圍的任何修改或者等同替換,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。