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

        ?

        梯級(jí)水庫短期優(yōu)化調(diào)度模型的精細(xì)化與GPU并行實(shí)現(xiàn)

        2019-07-24 08:36:50紀(jì)昌明馬皓宇吳嘉杰俞洪杰
        水利學(xué)報(bào) 2019年5期
        關(guān)鍵詞:優(yōu)化模型

        紀(jì)昌明,馬皓宇,吳嘉杰,俞洪杰,彭 楊

        (華北電力大學(xué)可再生能源學(xué)院,北京 102206)

        1 研究背景

        梯級(jí)水庫優(yōu)化調(diào)度通過對(duì)入庫徑流進(jìn)行調(diào)節(jié)以實(shí)現(xiàn)水電站的效益增長,一般分為中長期優(yōu)化調(diào)度與短期優(yōu)化調(diào)度,受限于當(dāng)前水文與氣象預(yù)報(bào)技術(shù)的發(fā)展水平,中長期優(yōu)化調(diào)度僅具有規(guī)劃意義,能指導(dǎo)水電站實(shí)際運(yùn)營的只有短期優(yōu)化調(diào)度[1]。而近幾十年的研究中,短期優(yōu)化調(diào)度的理論與實(shí)際間的差距一直存在[2],其主要原因在于為滿足發(fā)電計(jì)劃制定的時(shí)效性要求,以往的研究中人為引入了一系列策略以簡化計(jì)算模型,從而將計(jì)算時(shí)長降至可接受范圍內(nèi),但這也導(dǎo)致所得計(jì)劃在實(shí)際運(yùn)行中出現(xiàn)偏差,而水電站出力的近似計(jì)算是造成偏差的主要原因[3]。為簡化廠內(nèi)經(jīng)濟(jì)運(yùn)行,電站的出力可通過恒定出力系數(shù)的出力方程或忽略機(jī)組振動(dòng)區(qū)的等微增率法計(jì)算獲得,而這種簡化計(jì)算方式將導(dǎo)致可用的水資源在時(shí)空分配上的不合理,通常不為水庫操作人員所接受。故本文構(gòu)建同時(shí)考慮水庫優(yōu)化調(diào)度與水電站優(yōu)化運(yùn)行的精細(xì)模型,通過經(jīng)典算法—?jiǎng)討B(tài)規(guī)劃(DP)[4-6]的二重嵌套形式,求解給定規(guī)模與離散精度下的優(yōu)化調(diào)度方案。

        DP 在求解精細(xì)模型時(shí)將面臨更為嚴(yán)重的“維數(shù)災(zāi)”問題,如何處理該問題成為計(jì)算的關(guān)鍵。“維數(shù)災(zāi)”本質(zhì)上是程序計(jì)算量與內(nèi)存占用量的指數(shù)型增長,水庫調(diào)度領(lǐng)域中許多學(xué)者僅針對(duì)前者提供了解決方案,主要分為兩類:(1)算法改進(jìn),通常需犧牲解的全局最優(yōu)性以提高計(jì)算效率:馮仲愷等[7]為緩解“維數(shù)災(zāi)”問題,結(jié)合均勻試驗(yàn)設(shè)計(jì)提出均勻動(dòng)態(tài)規(guī)劃;史亞軍等[8]提出一種基于灰色系統(tǒng)預(yù)測方法的離散微分動(dòng)態(tài)規(guī)劃,以求解梯級(jí)水庫群優(yōu)化調(diào)度問題;紀(jì)昌明等[9]為解決傳統(tǒng)動(dòng)態(tài)規(guī)劃在處理水庫群聯(lián)合優(yōu)化調(diào)度時(shí)面臨的約束處理機(jī)制選擇和計(jì)算時(shí)間長的問題,引入映射思想,基于映射和集合論知識(shí)構(gòu)建可行域搜索映射模型;(2)CPU 并行加速,通常需花費(fèi)高昂的成本以構(gòu)筑計(jì)算集群:萬新宇等[10]在分析傳統(tǒng)串行動(dòng)態(tài)規(guī)劃算法計(jì)算特點(diǎn)的基礎(chǔ)上,建立基于主從模式的并行動(dòng)態(tài)規(guī)劃模型;Li等[11]利用高達(dá)350核的高性能CPU計(jì)算系統(tǒng),實(shí)現(xiàn)了對(duì)等并行模式下的并行動(dòng)態(tài)規(guī)劃;蔣志強(qiáng)等[12]基于.NET4 并行拓展庫,構(gòu)建了時(shí)段間、時(shí)段內(nèi)離散組合間以及兩者混合模式下的并行多維動(dòng)態(tài)規(guī)劃算法。

        區(qū)別于上述的研究成果,本文為全面且妥善地處理“維數(shù)災(zāi)”,首先針對(duì)極少提及的內(nèi)存占用量增長問題,采用數(shù)據(jù)壓縮與數(shù)據(jù)庫技術(shù)以減輕程序運(yùn)行對(duì)計(jì)算機(jī)的內(nèi)存負(fù)擔(dān);其次針對(duì)重點(diǎn)研究的計(jì)算量與計(jì)算時(shí)間問題,采用在水動(dòng)力模擬與分布式水文模型中已廣泛應(yīng)用[13-15],而在水庫調(diào)度中未引進(jìn)的圖形處理器(GPU)并行加速[16],以大幅降低程序的運(yùn)行時(shí)間。最后以潘口、小漩兩庫聯(lián)合調(diào)度為研究實(shí)例,驗(yàn)證所提模型、算法及優(yōu)化策略的科學(xué)與實(shí)用性。

        2 精細(xì)優(yōu)化調(diào)度模型

        本文選擇“以水定電”作為精細(xì)優(yōu)化調(diào)度模型中各電站的運(yùn)行模式,即未來一個(gè)調(diào)度期內(nèi),在各庫調(diào)度期初末庫容、各電站調(diào)度期初機(jī)組狀態(tài)、各階段區(qū)間徑流已知的前提下,同時(shí)考慮水庫調(diào)度的庫容、下泄流量等約束與水電站運(yùn)行的機(jī)組振動(dòng)區(qū)、啟停機(jī)耗水等約束,尋求最大化梯級(jí)系統(tǒng)總發(fā)電量的運(yùn)行方式。

        2.1 目標(biāo)函數(shù)

        式中:E*為調(diào)度期內(nèi)梯級(jí)水電站的最大發(fā)電量;t、i分別為時(shí)段編號(hào)和水庫(水電站)編號(hào);T、n分別為調(diào)度期階段數(shù)和水庫總數(shù);Ni,t為t階段i庫對(duì)應(yīng)的電站最優(yōu)出力,其計(jì)算過程如圖1所示,水庫調(diào)度決策階段平均泄流Ri,t,由此推得階段平均水頭Hi,t,將兩者作為水電站運(yùn)行的輸入,而電站通過決策本階段投入運(yùn)行的機(jī)組與機(jī)組間的流量分配,以最大化電站出力,該過程表示為Ni,t=φi(Hi,t,Ri,t);Δt為單位階段長度。

        2.2 約束條件

        (1)水庫調(diào)度約束。水量平衡約束:

        式中:Vi,t、Vi,t+1分別為t階段和(t+1)階段i庫的階段初庫容;Qi,t、Ri,t分別為t 階段i 庫的階段平均入流和泄流值。

        庫容約束:

        下泄流量約束:

        邊界約束:

        式中:Vi,start、Vi,end為i庫給定的調(diào)度期初末庫容。

        圖1 出力計(jì)算簡圖

        (2)水電站運(yùn)行約束。發(fā)電流量約束:

        出力約束:

        機(jī)組振動(dòng)區(qū)約束:

        機(jī)組啟停機(jī)耗水約束:

        邊界約束:

        2.3 模型求解該模型為二重嵌套優(yōu)化結(jié)構(gòu),在調(diào)度領(lǐng)域也屬于相當(dāng)復(fù)雜的模型,其外部結(jié)構(gòu)(水庫調(diào)度)逐階段決策本階段的下泄流量,將泄流值與推得的階段平均水頭作為內(nèi)部結(jié)構(gòu)(水電站運(yùn)行)的輸入,內(nèi)部結(jié)構(gòu)決策該階段電站的機(jī)組組合和流量分配,在可用流量與工作水頭確定下優(yōu)化電站輸出,并將最大出力及相應(yīng)的機(jī)組組合與流量分配返回至外部結(jié)構(gòu)。為保證計(jì)算結(jié)果的質(zhì)量,選擇動(dòng)態(tài)規(guī)劃作為求解算法,針對(duì)該模型結(jié)構(gòu)使用二重嵌套DP,同時(shí)進(jìn)行水庫優(yōu)化調(diào)度與廠內(nèi)經(jīng)濟(jì)運(yùn)行。

        對(duì)于外部結(jié)構(gòu),通常按1 h或15 min劃分調(diào)度期(1 d),將水庫優(yōu)化調(diào)度轉(zhuǎn)化為多階段決策問題。假設(shè)各階段各庫的庫容均劃分為M級(jí),則梯級(jí)水庫任意階段的狀態(tài)組合數(shù)為Mn,記t階段初組合號(hào)為pt(pt∈[1,Mn])的梯級(jí)水庫蓄水狀態(tài)的n維向量為外部結(jié)構(gòu)的DP計(jì)算流程圖如圖2所示,其具體的求解步驟如下:

        (1)順序遞推計(jì)算。由調(diào)度期初逐階段向后遞推至調(diào)度期末,對(duì)于某階段t的階段末狀態(tài)組合號(hào)pt+1,其對(duì)應(yīng)的蓄水狀態(tài)向量為Vt+1(pt+1),遍歷所有可能的階段初狀態(tài)Vt(pt),由式(11)求得對(duì)應(yīng)于pt+1的最大累積效益及相應(yīng)的最優(yōu)轉(zhuǎn)換機(jī)組組合與流量分配并保存計(jì)算結(jié)果。當(dāng)階段末所有組合號(hào)對(duì)應(yīng)的計(jì)算均完成后,令t=t+1,進(jìn)行下階段計(jì)算直至最后一個(gè)階段的計(jì)算完成。

        圖2 外部結(jié)構(gòu)的DP計(jì)算流程

        圖3 內(nèi)部結(jié)構(gòu)的DP計(jì)算流程

        (2)逆序遞推計(jì)算。由調(diào)度期末逐階段向前遞推至調(diào)度期初,根據(jù)所保存的推得梯級(jí)系統(tǒng)的調(diào)度期總發(fā)電量E及相應(yīng)的各階段泄流蓄水狀態(tài)機(jī)組組合流量分配最后將計(jì)算結(jié)果輸出。

        對(duì)于內(nèi)部結(jié)構(gòu),本文在機(jī)組流量優(yōu)化分配的過程中尋找恰當(dāng)?shù)臋C(jī)組組合方案,而不采用先確定投運(yùn)機(jī)組再進(jìn)行固定機(jī)組間流量分配的傳統(tǒng)分層求解方式。按機(jī)組編號(hào)將每臺(tái)可運(yùn)行機(jī)組作為階段變量,從而將廠內(nèi)經(jīng)濟(jì)運(yùn)行轉(zhuǎn)化為多階段決策問題。假設(shè)各階段的狀態(tài)(機(jī)組累積引流)均劃分為N級(jí),記j階段初序號(hào)為qj(qj∈[1,N])的累積引流狀態(tài)為Qj(qj)。內(nèi)部結(jié)構(gòu)的DP計(jì)算流程圖如圖3所示,具體的求解步驟如下:

        (1)順序遞推計(jì)算。由階段1(1機(jī)組)逐階段向后遞推至階段m(m機(jī)組),對(duì)于某階段j的階段末狀態(tài)序號(hào)qj+1,其對(duì)應(yīng)的累積引流為Qj+1(qj+1),遍歷所有可能的階段初狀態(tài)Qj(qj),由式(12)求得對(duì)應(yīng)于qj+1的最大累積出力及相應(yīng)的最優(yōu)轉(zhuǎn)換并保存計(jì)算結(jié)果。當(dāng)階段末所有狀態(tài)序號(hào)對(duì)應(yīng)的計(jì)算均完成后,令j=j+1,進(jìn)行下階段計(jì)算直至最后一個(gè)階段的計(jì)算完成。

        (2)逆序遞推計(jì)算。由階段m逐階段向前遞推至階段1,根據(jù)所保存的與推得電站優(yōu)化出力Ni,t及相應(yīng)的流量分配與機(jī)組組合最后將計(jì)算結(jié)果返回至外部結(jié)構(gòu)。

        3 求解算法性能優(yōu)化

        3.1 嵌套DP 算法性能分析本節(jié)從計(jì)算時(shí)間和內(nèi)存占用量這兩個(gè)最為關(guān)鍵的性能參數(shù)入手,對(duì)求解精細(xì)優(yōu)化模型的嵌套DP算法進(jìn)行分析。首先對(duì)計(jì)算時(shí)長進(jìn)行估計(jì),算法推求精細(xì)模型的計(jì)算量集中在外部結(jié)構(gòu)順序遞推的多重嵌套循環(huán)處,假設(shè)該循環(huán)任意(t,pt+1,pt)下的迭代步的運(yùn)行時(shí)間均為Δτ,則整個(gè)模型的計(jì)算時(shí)間τ為:

        接著對(duì)算法實(shí)現(xiàn)所需的內(nèi)存大小進(jìn)行估計(jì)。算法在計(jì)算過程中主要保存4種變量,其存儲(chǔ)形式如圖4所示(梯級(jí)系統(tǒng)調(diào)度期初末的庫容狀態(tài)固定,故相應(yīng)的狀態(tài)組合號(hào)p1,pT+1∈{1}):

        本文所涉及的代碼均通過C語言進(jìn)行編寫,浮點(diǎn)型變量通常定義為雙精度類型(double),占據(jù)8個(gè)字節(jié),整型變量通常定義為普通類型(int),占據(jù)4個(gè)字節(jié)。故算法運(yùn)行的內(nèi)存占用量RAM為:

        由上述分析可得,嵌套DP的時(shí)間復(fù)雜度為O(TM2n),空間復(fù)雜度為O(TMn),時(shí)空復(fù)雜度均呈指數(shù)型增長,這即是“維數(shù)災(zāi)”出現(xiàn)的原因,同時(shí)也說明對(duì)“維數(shù)災(zāi)”的處理包括減少計(jì)算時(shí)間與縮減內(nèi)存占用兩方面,下面將針對(duì)這兩方面進(jìn)行算法優(yōu)化。

        3.2 基于數(shù)據(jù)壓縮與數(shù)據(jù)庫技術(shù)的內(nèi)存占用縮減以往的水庫調(diào)度研究通常僅著眼于算法求解時(shí)間方面的優(yōu)化,通過算法改進(jìn)減少計(jì)算量或通過CPU多核并行提升計(jì)算速度,使得模型計(jì)算時(shí)間滿足相應(yīng)要求,而針對(duì)算法內(nèi)存空間方面卻幾乎沒有提出相應(yīng)的優(yōu)化方案,且時(shí)間方面優(yōu)化策略的實(shí)現(xiàn)往往增加了算法的空間復(fù)雜度,當(dāng)問題規(guī)模較大或模擬精度較高時(shí),計(jì)算機(jī)很容易出現(xiàn)內(nèi)存瓶頸問題。由于實(shí)際問題的計(jì)算規(guī)模與離散精度等條件是未知的,故時(shí)空兩方面的問題均需考慮,本節(jié)將通過數(shù)據(jù)壓縮與數(shù)據(jù)庫技術(shù),對(duì)3.1節(jié)所提的算法主要變量的存儲(chǔ)規(guī)模進(jìn)行有效縮減,在不影響計(jì)算結(jié)果的前提下減少程序運(yùn)行中的內(nèi)存占用,優(yōu)化后的變量存儲(chǔ)形式如圖5所示:

        圖4 主要變量存儲(chǔ)形式

        圖5 優(yōu)化后的變量存儲(chǔ)形式

        上述算法內(nèi)存占用量優(yōu)化的實(shí)現(xiàn),一方面基于數(shù)據(jù)壓縮技術(shù),在不損失有效信息的前提下完成存放變量的數(shù)組降維,另一方面基于數(shù)據(jù)庫技術(shù),將逆序遞推計(jì)算才使用到的數(shù)據(jù)先存儲(chǔ)至計(jì)算機(jī)外存,以實(shí)現(xiàn)內(nèi)存負(fù)擔(dān)向外存的轉(zhuǎn)移。同時(shí)將浮點(diǎn)型變量均定義為單精度類型(float),其僅占據(jù)4個(gè)字節(jié),能在保證結(jié)果精確性的前提下減少內(nèi)存占用并提升計(jì)算速度(CPU與GPU的單精度浮點(diǎn)計(jì)算能力均優(yōu)于雙精度)。優(yōu)化后程序運(yùn)行的內(nèi)存占用量RAM′為:

        3.3 基于OpenACC的GPU并行加速近年來GPU并行加速技術(shù)發(fā)展迅速且已相對(duì)成熟,在硬件方面GPU的單精度浮點(diǎn)計(jì)算能力達(dá)到同期CPU的10倍以上,在軟件方面NVIDIA等公司已發(fā)布較為完善的并行編程標(biāo)準(zhǔn)CUDA和OpenACC。在水利計(jì)算上,GPU并行通常用于加速水動(dòng)力學(xué)模型或分布式水文模型的求解,取得了較好效果[16],而在梯級(jí)水庫優(yōu)化調(diào)度中尚無文章明確實(shí)現(xiàn)GPU并行,故本節(jié)提出基于OpenACC標(biāo)準(zhǔn)的GPU并行嵌套DP,以期較以往的CPU并行進(jìn)一步提升算法的計(jì)算效率。

        OpenACC 是一種以編譯器導(dǎo)語形式實(shí)現(xiàn)的GPU 并行標(biāo)準(zhǔn)[17-19],其可對(duì)復(fù)雜的C或Fortran 代碼加速。該標(biāo)準(zhǔn)中CPU稱為主機(jī)(host),GPU稱為設(shè)備(device),并行的目的是將原本由主機(jī)負(fù)責(zé)的計(jì)算稠密區(qū)域卸載至設(shè)備上多線程執(zhí)行以提升運(yùn)行速度,其基本步驟為:分配設(shè)備內(nèi)存→將計(jì)算所需數(shù)據(jù)傳至設(shè)備內(nèi)存→設(shè)備進(jìn)行并行計(jì)算→將計(jì)算結(jié)果傳至主機(jī)內(nèi)存→釋放設(shè)備內(nèi)存。本節(jié)利用kernels構(gòu)件創(chuàng)建并行區(qū)域,在區(qū)域內(nèi)利用loop 構(gòu)件實(shí)現(xiàn)外部順推計(jì)算的嵌套循環(huán)并行化。算法的并行流程如圖6所示,其主要步驟為:

        圖6 算法并行化流程

        (1)調(diào)用函數(shù)的處理。算法中水位與庫容間的值轉(zhuǎn)換、由下泄流量推求下游水位等功能已封裝為函數(shù)形式,通過調(diào)用特定的函數(shù)滿足相應(yīng)的計(jì)算要求,但在并行計(jì)算區(qū)域內(nèi)設(shè)備無法直接調(diào)用主機(jī)端存儲(chǔ)的函數(shù),需添加routine導(dǎo)語以支持區(qū)域內(nèi)自定義函數(shù)的調(diào)用。

        具體的實(shí)現(xiàn)方式為:在被調(diào)函數(shù)定義與聲明的緊鄰上方添加#pragma acc routine seq,定義處的導(dǎo)語告知編譯器創(chuàng)建該函數(shù)的設(shè)備例程,聲明處的導(dǎo)語告知編譯器該函數(shù)可被設(shè)備端單線程直接調(diào)用。

        (2)數(shù)據(jù)管理。主機(jī)內(nèi)存與設(shè)備內(nèi)存通常是完全分離的,這就導(dǎo)致主機(jī)與設(shè)備間必須進(jìn)行數(shù)據(jù)傳輸,將主機(jī)內(nèi)存中存儲(chǔ)的計(jì)算所需數(shù)據(jù)傳至設(shè)備內(nèi)存以供并行計(jì)算使用,將設(shè)備內(nèi)存中存儲(chǔ)的計(jì)算結(jié)果傳至主機(jī)內(nèi)存以供逆序遞推計(jì)算使用。然而頻繁的大規(guī)模數(shù)據(jù)傳輸將消耗大量時(shí)間,為減少耗時(shí)需盡可能降低數(shù)據(jù)傳輸?shù)牧颗c次數(shù),故本節(jié)利用enter data/exit data創(chuàng)建非結(jié)構(gòu)化數(shù)據(jù)區(qū)域以減少數(shù)據(jù)傳輸耗時(shí)。在并行計(jì)算開始前,添加enter data導(dǎo)語為設(shè)備內(nèi)存中存儲(chǔ)的變量分配空間,并將尾水位流量曲線、機(jī)組動(dòng)力特性曲線等基礎(chǔ)數(shù)據(jù)傳入;在并行計(jì)算結(jié)束后,添加exit data導(dǎo)語將并行計(jì)算的最終結(jié)果傳回主機(jī),之后釋放設(shè)備內(nèi)存。

        具體的實(shí)現(xiàn)方式為:在外部順推計(jì)算的嵌套循環(huán)前,添加#pragma acc enter data create(變量列表)copyin(變量列表),一次性完成主要變量的內(nèi)存分配與數(shù)據(jù)傳入;在嵌套循環(huán)后,添加#pragma acc exit data copyout(變量列表)delete(變量列表),一次性完成計(jì)算結(jié)果的傳回與內(nèi)存釋放。

        (3)循環(huán)并行化。嵌套DP的計(jì)算量集中在外部順推計(jì)算的嵌套循環(huán)處,故應(yīng)將該循環(huán)納入并行計(jì)算區(qū)域以多線程執(zhí)行。由于嵌套循環(huán)最外層的階段循環(huán)具有順序依賴性,因此選擇對(duì)階段末狀態(tài)循環(huán)實(shí)現(xiàn)并行。通過kernels導(dǎo)語創(chuàng)建包含階段末循環(huán)的并行計(jì)算區(qū)域,并在該導(dǎo)語中添加present子語以告知編譯器所列變量已存在于設(shè)備內(nèi)存,以此防止重復(fù)的數(shù)據(jù)操作;通過loop 導(dǎo)語指示編譯器在階段末循環(huán)處并行,并在該導(dǎo)語中添加private子語與independent子語,前者用于創(chuàng)建循環(huán)計(jì)算所使用的中間變量在設(shè)備各線程中的私有副本,以此防止競態(tài)錯(cuò)誤,后者用于告知編譯器該層循環(huán)的迭代步間不存在數(shù)據(jù)依賴,滿足并行化要求。

        上述操作具體的實(shí)現(xiàn)方式為:在嵌套循環(huán)的階段循環(huán)內(nèi),添加#pragma acc kernels present(變量列表),并通過{}將階段末循環(huán)及其內(nèi)層循環(huán)包含在內(nèi);在階段末循環(huán)的緊鄰上方,添加#pragma acc loop private(變量列表)independent,以實(shí)現(xiàn)階段末循環(huán)的并行化。

        (4)主機(jī)與設(shè)備的計(jì)算重疊。3.2節(jié)中為減輕計(jì)算機(jī)的內(nèi)存負(fù)擔(dān),將部分?jǐn)?shù)據(jù)傳輸至外存的數(shù)據(jù)庫中存儲(chǔ),當(dāng)內(nèi)存占用優(yōu)化后的算法實(shí)現(xiàn)GPU并行時(shí),則要求外部順推計(jì)算在每個(gè)階段的并行計(jì)算結(jié)束時(shí),將該階段需存至數(shù)據(jù)庫中的計(jì)算成果先由設(shè)備內(nèi)存?zhèn)鬏斨林鳈C(jī)內(nèi)存,再轉(zhuǎn)至主機(jī)外存中,這些數(shù)據(jù)操作將增加程序的非計(jì)算耗時(shí)。故本節(jié)先是通過update 導(dǎo)語將階段計(jì)算結(jié)果由設(shè)備傳至主機(jī);接著為減少耗時(shí),利用async子語創(chuàng)建異步隊(duì)列,以實(shí)現(xiàn)主機(jī)數(shù)據(jù)傳輸與設(shè)備并行計(jì)算的同時(shí)執(zhí)行,避免計(jì)算資源的浪費(fèi),同時(shí)將數(shù)據(jù)傳輸?shù)臅r(shí)間開銷隱藏于并行計(jì)算之下;最后利用wait 導(dǎo)語使主機(jī)線程等待設(shè)備操作的完成,防止程序出錯(cuò)。

        上述操作具體的實(shí)現(xiàn)方式為:在外部順推計(jì)算的階段循環(huán)內(nèi),添加#pragma acc update host(變量列表),將設(shè)備計(jì)算得出的上階段計(jì)算成果與傳至主機(jī)內(nèi)存;在kernels導(dǎo)語中添加async 子語以將并行計(jì)算操作壓入異步隊(duì)列中執(zhí)行;在并行區(qū)域后,將主機(jī)內(nèi)存中的傳至數(shù)據(jù)庫,之后添加#pragma acc wait以等待設(shè)備操作的完成。

        4 實(shí)例分析

        堵河作為漢江上游南岸的一級(jí)支流,位于湖北省西北部,全長354 km,總落差500 余米。潘口與小漩水電站位于堵河干流的上游河段,開發(fā)任務(wù)以發(fā)電為主,梯級(jí)水電站的基本參數(shù)如表1所示。本文以該梯級(jí)系統(tǒng)的日優(yōu)化調(diào)度為研究對(duì)象,選取2016年12月某日為調(diào)度期,以15 min為階段時(shí)長將該日劃分為96段。梯級(jí)系統(tǒng)的運(yùn)行模式為“以水定電”,故系統(tǒng)調(diào)度期初末的庫容狀態(tài)、調(diào)度期初的機(jī)組啟停狀態(tài)及調(diào)度期各階段的入庫流量均為該日實(shí)際值,算法的模擬精度設(shè)置為:潘口各階段庫容的離散點(diǎn)數(shù)M1=600;小漩各階段庫容的離散點(diǎn)數(shù)M2=100。

        實(shí)例研究所使用的軟硬件配置為:軟件方面,利用C 語言進(jìn)行代碼編寫;選擇同時(shí)支持OpenMP、MPI 與OpenACC 并行標(biāo)準(zhǔn)的PGI 編譯器(PGI Professional Edition18.10)實(shí)現(xiàn)編譯。硬件方面,選擇Windows 10 操作系統(tǒng);使用的CPU 型號(hào)為Intel Xeon E5-4640 v4,主頻2.1 GHz,物理內(nèi)核數(shù)12;使用的GPU型號(hào)為NVIDIA Tesla K80,CUDA核心數(shù)4992。

        表1 梯級(jí)水電站基本參數(shù)

        4.1 精細(xì)模型與傳統(tǒng)模型對(duì)比本節(jié)分別構(gòu)建梯級(jí)水電站的傳統(tǒng)優(yōu)化模型與精細(xì)優(yōu)化模型,兩者的區(qū)別在于水電站出力的計(jì)算方式不同:傳統(tǒng)模型分別采用恒定出力系數(shù)的出力方程和忽略機(jī)組振動(dòng)區(qū)的等微增率法計(jì)算電站出力,前者標(biāo)記為傳統(tǒng)模型1,后者標(biāo)記為傳統(tǒng)模型2,兩者的外層水庫優(yōu)化調(diào)度均通過DP求解;精細(xì)模型則將出力計(jì)算作為一個(gè)多階段優(yōu)化決策問題,通過本文所提的嵌套DP求解。

        表2為3個(gè)模型在計(jì)算條件相同的情況下求解所得的計(jì)劃發(fā)電量與模擬發(fā)電量,其中計(jì)劃發(fā)電量為模型求解所得的日發(fā)電效益的理論值,模擬發(fā)電量為模擬實(shí)際中調(diào)度人員按流量執(zhí)行調(diào)度方案所得的日發(fā)電效益的仿真值。由表2 可以看出:(1)傳統(tǒng)模型1 和2 的計(jì)劃發(fā)電量分別為175.93萬kW·h與174.97萬kW·h,均高于模擬發(fā)電量的158.10萬kW·h與157.35萬kW·h,其原因在于傳統(tǒng)模型的調(diào)度計(jì)劃在實(shí)際執(zhí)行中,原本未計(jì)量的機(jī)組啟停機(jī)耗水將消耗電站的發(fā)電水量,且為防止機(jī)組在振動(dòng)區(qū)工作,須對(duì)未考慮振動(dòng)區(qū)約束的機(jī)組運(yùn)行方式進(jìn)行調(diào)整,因此傳統(tǒng)模型發(fā)電量的模擬值均低于理論值;(2)精細(xì)模型的計(jì)劃發(fā)電量與模擬發(fā)電量相同,均為170.53萬kW·h,其原因在于精細(xì)模型的出力計(jì)算充分考慮了機(jī)組的啟停機(jī)耗水與振動(dòng)區(qū)約束,故所制定的調(diào)度計(jì)劃貼合實(shí)際;(3)傳統(tǒng)模型的計(jì)劃發(fā)電量雖高于精細(xì)模型的計(jì)劃發(fā)電量,但其模擬發(fā)電量均低于精細(xì)模型的對(duì)應(yīng)值,其原因在于本文所提出的精細(xì)模型將實(shí)際生產(chǎn)中需考慮的調(diào)度規(guī)則作為模型的約束條件,通過二重嵌套優(yōu)化同時(shí)進(jìn)行廠間與廠內(nèi)的水量優(yōu)化分配以盡可能發(fā)掘出梯級(jí)系統(tǒng)的發(fā)電效益,并利用嵌套DP保證求解結(jié)果的質(zhì)量。

        4.2 GPU 并行與CPU 并行對(duì)比4.1 節(jié)中的對(duì)比實(shí)驗(yàn)證明了精細(xì)優(yōu)化模型及其求解算法的有效性,之后的計(jì)算均針對(duì)精細(xì)模型并使用嵌套DP進(jìn)行求解。本節(jié)首先測試3.2節(jié)中提出的基于數(shù)據(jù)壓縮與數(shù)據(jù)庫技術(shù)的內(nèi)存占用縮減策略的效果,通過診斷工具檢測該策略引入前與引入后的程序運(yùn)行的內(nèi)存占用情況,檢測結(jié)果顯示引入后程序的內(nèi)存占用量較引入前減少了99.5%,縮減幅度顯著,表明了所提空間優(yōu)化策略的科學(xué)與有效性。

        接下來通過不同的并行方式實(shí)現(xiàn)內(nèi)存占用優(yōu)化后算法的并行加速,并對(duì)加速效果進(jìn)行比較。CPU 并行分別通過OpenMP 與MPI 實(shí)現(xiàn),GPU 并行通過OpenACC 實(shí)現(xiàn),并行化均是針對(duì)外部順推計(jì)算嵌套循環(huán)的階段末狀態(tài)循環(huán)層。需要注意的是階段末循環(huán)的不同迭代步的計(jì)算量可能相差很大,這意味著采用靜態(tài)調(diào)度的任務(wù)分配方式可能導(dǎo)致嚴(yán)重的負(fù)載不均進(jìn)而影響加速效果,故本節(jié)中的3種并行方法均采用動(dòng)態(tài)調(diào)度的方式以平衡負(fù)載從而保證并行效率。

        基于OpenMP的CPU并行通過parallel導(dǎo)語創(chuàng)建多線程并行計(jì)算區(qū)域,通過for導(dǎo)語實(shí)現(xiàn)循環(huán)的并行化,在for導(dǎo)語中添加schedule(dynamic)子語以選擇動(dòng)態(tài)調(diào)度的任務(wù)分配方式;基于MPI的CPU并行選擇master/worker 模式以實(shí)現(xiàn)動(dòng)態(tài)調(diào)度下的多進(jìn)程并行計(jì)算,其中master 進(jìn)程負(fù)責(zé)計(jì)算任務(wù)向worker 進(jìn)程的分配與管理,worker 進(jìn)程負(fù)責(zé)處理計(jì)算任務(wù)并將計(jì)算結(jié)果返回至master 進(jìn)程;基于OpenACC的GPU并行的流程詳見3.3節(jié),其默認(rèn)為動(dòng)態(tài)調(diào)度方式。對(duì)于同一研究實(shí)例,內(nèi)存占用縮減后的算法的串行版本與3種并行版本的結(jié)果如表3所示,為保證對(duì)比實(shí)驗(yàn)的公平性,已盡可能挖掘出上文所列配置下的3種不同并行方法的最優(yōu)結(jié)果,表3中所列的計(jì)算時(shí)長為相應(yīng)并行手段下的最短時(shí)長,加速比為最優(yōu)加速比。

        表2 3種模型的計(jì)算結(jié)果 (單位:萬kW ·

        表3 實(shí)測最優(yōu)結(jié)果對(duì)比

        由表3的計(jì)算結(jié)果可以看出,OpenACC 實(shí)現(xiàn)的GPU 并行的加速效果最優(yōu),可將算法的求解時(shí)間由串行的167.37 min壓縮至4.27 min,取得39.20的最大加速比,而OpenMP與MPI實(shí)現(xiàn)的CPU并行僅將計(jì)算時(shí)間縮短為19.31 min 與23.18 min,得到8.67 與7.22 的加速比。因并行計(jì)算所使用的CPU 與GPU處于同一價(jià)位,故可得在硬件成本相近時(shí),GPU的并行計(jì)算能力遠(yuǎn)高于CPU。通過上述分析可以得出,GPU并行較CPU并行更適合作為梯級(jí)水庫優(yōu)化調(diào)度模型的加速策略。

        5 結(jié)論

        本文為縮減水庫優(yōu)化調(diào)度的理論與實(shí)際間的差距,提出了精細(xì)至電站機(jī)組負(fù)載分配的優(yōu)化調(diào)度模型,同時(shí)考慮水庫優(yōu)化調(diào)度與廠內(nèi)經(jīng)濟(jì)運(yùn)行并通過二重嵌套DP進(jìn)行求解,針對(duì)“維數(shù)災(zāi)”問題,提出了基于數(shù)據(jù)壓縮與數(shù)據(jù)庫技術(shù)的內(nèi)存占用縮減策略以降低算法的空間復(fù)雜度,提出了基于OpenACC的GPU并行策略以減少算法的計(jì)算時(shí)間。最后以潘口小漩梯級(jí)水庫為研究實(shí)例,進(jìn)行精細(xì)模型與傳統(tǒng)模型、優(yōu)化算法內(nèi)存與未優(yōu)化算法內(nèi)存以及GPU并行與CPU并行的對(duì)比分析,計(jì)算結(jié)果表明:本文所構(gòu)建的精細(xì)模型較傳統(tǒng)模型更貼近電站的實(shí)際運(yùn)行情況;所提出的嵌套DP能保證精細(xì)模型求解結(jié)果的質(zhì)量;所提出的內(nèi)存占用縮減策略能有效減輕算法對(duì)計(jì)算機(jī)的內(nèi)存負(fù)擔(dān);首次引入水庫調(diào)度領(lǐng)域的GPU并行較傳統(tǒng)的CPU并行更適合作為優(yōu)化調(diào)度大規(guī)模計(jì)算的并行加速策略。

        猜你喜歡
        優(yōu)化模型
        一半模型
        超限高層建筑結(jié)構(gòu)設(shè)計(jì)與優(yōu)化思考
        民用建筑防煙排煙設(shè)計(jì)優(yōu)化探討
        關(guān)于優(yōu)化消防安全告知承諾的一些思考
        一道優(yōu)化題的幾何解法
        由“形”啟“數(shù)”優(yōu)化運(yùn)算——以2021年解析幾何高考題為例
        重要模型『一線三等角』
        重尾非線性自回歸模型自加權(quán)M-估計(jì)的漸近分布
        3D打印中的模型分割與打包
        FLUKA幾何模型到CAD幾何模型轉(zhuǎn)換方法初步研究
        亚洲成AV人在线观看网址| 亚洲一区二区丝袜美腿| 日韩激情网| 亚洲av粉嫩性色av| 久久精品国产亚洲av沈先生| 蜜桃视频一区二区三区四| 日本一区二区精品高清| 少妇内射兰兰久久| 人妻夜夜爽天天爽三区麻豆AV网站| 亚洲AV肉丝网站一区二区无码 | 激情五月婷婷六月俺也去| 免费播放成人大片视频| 伊人色综合久久天天五月婷| 大桥未久亚洲无av码在线| 久久综合网天天 | 亚洲精品国产综合久久一线| 加勒比精品一区二区三区| 一本色道久久88加勒比| 一区二区三区中文字幕| 精品久久综合亚洲伊人| 网友自拍人妻一区二区三区三州| 亚洲免费精品一区二区| 亚洲黄色天堂网站在线观看禁18| 中文字幕av伊人av无码av| 成人区人妻精品一区二区不卡网站| 特黄特色的大片观看免费视频| 国内精品久久久久久无码不卡| 日本熟妇hd8ex视频| 在线日韩中文字幕乱码视频| 午夜视频在线观看视频在线播放 | 亚洲av无码专区电影在线观看| 日韩国产欧美| 日韩av一区二区三区在线观看| 一区二区黄色在线观看| 日本三级欧美三级人妇视频黑白配| 亚洲av无码专区亚洲av桃| 少妇特殊按摩高潮不断| 99久久国产精品免费热| 夜夜春亚洲嫩草影院| 国内精品视频一区二区三区| 久久久久国产精品四虎|