• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      GPU并行優(yōu)化技術(shù)在水利計算中的應(yīng)用綜述

      2018-03-04 19:58:46覃金帛曾志強(qiáng)楊明祥
      計算機(jī)工程與應(yīng)用 2018年3期
      關(guān)鍵詞:水文架構(gòu)水利

      覃金帛,曾志強(qiáng),,梁 藉,楊明祥,張 健

      1.華中科技大學(xué) 水電與數(shù)字化工程學(xué)院,武漢 430074

      2.中國水利水電科學(xué)研究院 流域水循環(huán)模擬與調(diào)控國家重點實驗室,北京 100038

      1 引言

      水利計算[1]是水利工程規(guī)劃、設(shè)計和運(yùn)行的基礎(chǔ),為水資源的合理開發(fā)與管理提供了技術(shù)支撐。隨著我國水利信息化的發(fā)展,行業(yè)內(nèi)對高效率水利計算的需求也越來越迫切。例如洪水預(yù)報、山洪預(yù)警以及水庫的實時調(diào)度等都要求在短時間內(nèi)做出正確的決策,這對水利計算的效率提出了更高的要求。目前,除計算方法的改進(jìn)之外,計算機(jī)硬件的性能提升也是提高水利計算效率的重要方法,尤其是GPU并行優(yōu)化技術(shù)的出現(xiàn),為水利計算效率的提升提供了一條可行之道。

      當(dāng)前,高性能計算機(jī)集群是提升計算效率的主要方法之一。高性能計算集群有多個計算節(jié)點,每個計算任務(wù)被獨立分配到各個計算節(jié)點上,這使得各個計算節(jié)點的性能得以充分發(fā)揮。算法的并行化是高性能計算的基礎(chǔ),目前主要有三種并行方式:基于MPI的并行模式[2-3]、基于OpenMP的并行計算模式[4]以及基于FPGA等并行計算設(shè)備的并行計算模式[5]。上述并行計算方法在一定程度上提高了算法的計算效率和尋優(yōu)功能。然而,對于高度非線性的復(fù)雜問題,啟動過多的線程必將導(dǎo)致大量進(jìn)程間的通信和管理損耗;此外,基于CPU的計算機(jī)集群硬件成本高昂,這在一定程度上也阻礙了高性能計算機(jī)集群的推廣應(yīng)用。

      基于GPU的并行優(yōu)化技術(shù)在計算性能和成本上優(yōu)勢明顯。隨著GPU技術(shù)的發(fā)展,GPU已經(jīng)具有強(qiáng)大的并行計算能力,浮點計算能力是同代CPU的10倍以上[6]。特別是經(jīng)過GPGPU(基于GPU的通用計算技術(shù))技術(shù)的發(fā)展,GPU已經(jīng)被應(yīng)用于各種科學(xué)計算領(lǐng)域。然而,早期的GPU技術(shù)對研究人員GPU硬件結(jié)構(gòu)方面的知識要求很高,因此算法的設(shè)計與實現(xiàn)都很困難。CUDA[7](NVIDIA公司提出的統(tǒng)一計算設(shè)備架構(gòu))的推出打破了GPU技術(shù)應(yīng)用的瓶頸,使得GPU具有很好的可編程性。國內(nèi)外學(xué)者以此為契機(jī),將GPU應(yīng)用到多體系統(tǒng)模擬、計算流體科學(xué)[8]、核科學(xué)[9]等各個計算領(lǐng)域。此外,與基于CPU的高性能計算機(jī)集群相比,GPU成本更低。水利計算中的很多模型和算法具有天然的并行性,這是GPU并行優(yōu)化技術(shù)應(yīng)用的重要基礎(chǔ)。此外,水利計算在水利行業(yè)應(yīng)用較為廣泛,從個人到企業(yè)均有涉及,其具有大眾化的特點。與龐大的高性能計算機(jī)群相比,基于GPU加速的便攜式個人計算機(jī)更適合大眾化推廣。然而,GPU并行優(yōu)化技術(shù)在水利中的應(yīng)用還處于初級階段,存在廣闊的發(fā)展前景。

      本文主要分為應(yīng)用進(jìn)展、并行技術(shù)、應(yīng)用前景和應(yīng)用指導(dǎo)四個部分。應(yīng)用進(jìn)展詳細(xì)介紹了GPU并行優(yōu)化技術(shù)在水利計算中的應(yīng)用進(jìn)展;并行技術(shù)介紹了當(dāng)前幾種主流的并行技術(shù);應(yīng)用前景部分就所解決問題的特點,提出該技術(shù)在水庫調(diào)度、中長期水文預(yù)報、水文模型和智慧水務(wù)大數(shù)據(jù)計算中應(yīng)用的可能性和優(yōu)勢;應(yīng)用指導(dǎo)部分從計算框架、開發(fā)環(huán)境選擇以及程序性能優(yōu)化三個方面為GPU并行優(yōu)化技術(shù)在水利計算中的應(yīng)用提出了建設(shè)性的意見。

      2 應(yīng)用進(jìn)展

      GPU并行優(yōu)化技術(shù)已經(jīng)在水動力模擬和分布式水文模型上得以應(yīng)用,并取得了較好的應(yīng)用效果。

      水動力學(xué)模型是水利計算中的重要部分,通過水動力模型可以模擬出流量、流速、水位等關(guān)鍵水力要素,該模型已被廣泛應(yīng)用于潰壩洪水模擬、通航水流計算、河道泥沙沖淤等領(lǐng)域[10-12]。但是,隨著所研究問題的復(fù)雜度越來越高,水動力學(xué)模型呈現(xiàn)計算范圍大、模擬精度高及計算量大等特點。盡管模型算法的優(yōu)化可以在一定程度上提高計算精度及效率,但傳統(tǒng)的串行計算方式是算法性能提升的瓶頸,為尋找更為高效的計算策略,水動力學(xué)模型從串行轉(zhuǎn)向了并行。國內(nèi)外學(xué)者以此為基礎(chǔ),將GPU高性能計算引入到水動力學(xué)模型的求解計算中。溫嬋娟[13]等在GPU上并行求解SPH流體方程,實現(xiàn)了基于GPU的高質(zhì)量實時流體渲染算法;Xian等[14]基于CUDA實現(xiàn)了不可壓縮流的晶格玻爾茲曼方法的GPU并行計算;趙旭東等[15]在CUDA平臺下建立了非結(jié)構(gòu)化網(wǎng)格的二維水動力模型對水流計算過程進(jìn)行加速;Cohen等[16]使用基于GPU的稀疏矩陣求解器,提升了洪水預(yù)報模型的求解速度,這對于洪水期間的預(yù)警和運(yùn)營管理大有益處;Herdman等[17]基于OpenACC模式開發(fā)了顯格式水動力學(xué)機(jī)制的微型應(yīng)用程序,通過GPU架構(gòu)提高了模型性能;Hart等[18]使用OpenACC程序標(biāo)準(zhǔn)在CrayXK6混合計算機(jī)上加速了Herdman基準(zhǔn)代碼,獲得了較高的加速效果;Pickering等[19]通過OpenACC在CFD應(yīng)用程序上實現(xiàn)了并行計算;由丹麥水力學(xué)研究所所開發(fā)的Mike(Mike11,Mike21和Mike3)系列商業(yè)軟件目前也引入了GPU,用于提升模型的計算效率。更多相關(guān)應(yīng)用研究可進(jìn)一步參考相關(guān)文獻(xiàn)[20-21]。綜上所述,GPU并行優(yōu)化技術(shù)在水動力模擬中得到了廣泛應(yīng)用,也提高了水動力模擬的求解效率和精度。

      隨著3S(GIS、RS、GPS)技術(shù)快速發(fā)展,分布式水文模型成為水文模型發(fā)展的趨勢。利用分布式水文模型的天然并行性,劉永和等[22]提出了資料插值、單元產(chǎn)流以及單元匯流采用GPU并行計算的新方法,由分布式新安江模型在沂河流域的模擬結(jié)果表明,降水量空間插值及新安江產(chǎn)流的并行執(zhí)行效率為普通CPU的8~9倍。除上述應(yīng)用之外,目前在國內(nèi)外還無相關(guān)應(yīng)用。但以分布式水文模型的并行特性和日益增長的計算需求可以預(yù)見,GPU技術(shù)在分布式水文模型中的應(yīng)用將逐漸增多。

      綜上所述,GPU并行優(yōu)化技術(shù)的應(yīng)用集中在水動力模擬上,而在分布式水文模型的應(yīng)用才剛剛開始。其主要原在于,水動力模擬的理論發(fā)展相比于分布式水文模型更為成熟,應(yīng)用也更為廣泛。但值得肯定的是,隨著分布式水文模型的日趨成熟,GPU并行優(yōu)化技術(shù)也將被廣泛推廣。

      3 并行技術(shù)

      DirectCompute、OpenACC、CUDA以及MIC技術(shù)是目前主流的并行技術(shù),前三種技術(shù)是針對GPU的并行計算技術(shù),而MIC技術(shù)則針對于CPU。目前,針對CPU的MIC技術(shù)已經(jīng)成為一種很重要的并行計算技術(shù),加速效果和性價比都具有優(yōu)勢,本文也針對該技術(shù)進(jìn)行介紹,以期在水利計算中得以推廣。

      3.1 DirectCompute

      DirectCompute是微軟公司推出的一種應(yīng)用于GPU通用計算的程序接口,其主要集成在Microsoft DirectX(微軟創(chuàng)建的多媒體編程接口)內(nèi)。DirectCompute支持多種并行計算方式,如CPU和GPU協(xié)同的異構(gòu)計算方式,CPU負(fù)責(zé)邏輯運(yùn)算,GPU進(jìn)行大規(guī)模的并行計算,兩者各司其職共同分擔(dān)并完成計算任務(wù)[23]。與其他通用GPU通用計算框架相比,DirectCompute具有如下優(yōu)勢[24]:

      (1)作為DirectX中特殊的部分,DirectCompute與不同于常規(guī)的渲染著色器。DirectX處理圖形運(yùn)算時,DirectCompute可針對流體仿真中可并行的復(fù)雜計算單獨進(jìn)行處理,并與其他計算資源進(jìn)行有效交互,鑒于此特性,可將并行計算部分用DirectCompute計算,并用GPU緩存存儲數(shù)據(jù),以便最大化利用GPU計算資源。

      (2)常規(guī)的渲染著色器采用一對一的方式完成數(shù)據(jù)與線程的映射,而DirectCompute可利用單線程處理多個數(shù)據(jù),并且其線程數(shù)可根據(jù)實際需求進(jìn)行配置。

      (3)DirectCompute具有時序性,支持對GPU緩存的無序訪問,因此可避免數(shù)據(jù)交換中額外緩存的申請。

      劉璐[24]等提出了基于DirectCompute加速的實時流體仿真框架,并利用GPU并行計算處理復(fù)雜的計算部分,結(jié)果證明流體仿真速度得到了有效的提高。水利計算中亦存在著大量的并行計算部分,同理于DirectCompute的流體仿真計算,DirectCompute框架亦可運(yùn)用于水利計算之中。

      3.2 OpenACC

      OpenACC是一種指導(dǎo)語句方式的并行編程語言標(biāo)準(zhǔn),它使用戶不用考慮底層硬件架構(gòu),從而降低了異構(gòu)并行編程的使用門檻。用戶只要在有并行需要的代碼段前寫入OpenACC指導(dǎo)語句,然后通過對應(yīng)編譯器的編譯,就可以自動生成相應(yīng)的并行化中間代碼,從而執(zhí)行設(shè)備的初始化、管理和傳輸?shù)炔僮?。目前,OpenACC已經(jīng)可以針對復(fù)雜的C/++或Fortran代碼進(jìn)行加速。OpenACC編譯器具有強(qiáng)大、快速和可移植的特點,目前已經(jīng)在各行業(yè)得以應(yīng)用。曾文權(quán)等[25]利用基于中間層的OpenACC加速技術(shù)高效地改寫了傳統(tǒng)的串行代碼,實現(xiàn)了基于GPU加速的高斯模糊算法。莫德林等[26]提出了一種基于OpenACC的遙感影像正射糾正快速實現(xiàn)方法,通過對源代碼的較小改動,成功地將源代碼移植到GPU中,并取得了較好的加速比。楊帥等[27]分別使用CPU、CUDA、OpenACC實現(xiàn)了一種素數(shù)的生成算法,通過對比發(fā)現(xiàn),雖然OpenACC相比于CUDA性能略差一些,但相比于CPU有較大提升。

      從事水利計算的從業(yè)人員大多對計算機(jī)底層硬件架構(gòu)不太了解,因此所編寫的程序一般不能夠充分利用硬件資源。而OpenACC作為一種高級并行編程語言,使編程人員只用在高級層對設(shè)備進(jìn)行并行編程,而無需直接對硬件進(jìn)行操作。對于不熟悉硬件架構(gòu)的水利計算人員來說,利用OpenACC加速計算是一個不錯的選擇。

      3.3 CUDA

      CUDA是NVIDIA公司提出的一種用于處理GPU并行計算的硬件和軟件架構(gòu),該架構(gòu)使GPU能夠解決復(fù)雜的計算問題。CUDA程序的開發(fā)語言以C語言為基礎(chǔ),并對C語言進(jìn)行擴(kuò)展?;贕PU-CUDA的程序由串行代碼和并行代碼組成,串行代碼在CPU上運(yùn)行,而并行代碼在GPU上運(yùn)行。串行代碼負(fù)責(zé)申明變量、變量初始化、數(shù)據(jù)傳遞和調(diào)用內(nèi)核函數(shù)(Kernel Function)等工作。并行代碼即為串行代碼所調(diào)用的內(nèi)核函數(shù)。在內(nèi)核函數(shù)中,線程是以并行執(zhí)行的線程塊為單位在設(shè)備上執(zhí)行的,而并行執(zhí)行的線程塊的集合用線程柵格來表示,關(guān)于CUDA的工作原理和硬件架構(gòu)可進(jìn)一步參考文獻(xiàn)[28],相關(guān)應(yīng)用研究可參考文獻(xiàn)[29-31]。

      與OpenACC相比,CUDA使用者需要對計算機(jī)底層硬件架構(gòu)有深入的理解,只有這樣才能充分發(fā)揮硬件的計算潛能。OpenACC在為使用者帶來便利的同時,也犧牲了硬件的部分計算潛能,而CUDA則恰好相反。對于使用者來說,需要根據(jù)應(yīng)用的需要來做選擇。

      3.4 CPU的MIC技術(shù)

      MIC是Intel公司提出的一種新型架構(gòu),其功能是協(xié)助CPU進(jìn)行計算。按MIC在CPU協(xié)助處理中充當(dāng)角色的不同,MIC主要分為兩種運(yùn)行模式:一種是MIC與GPU進(jìn)行有機(jī)的結(jié)合,此種模式下MIC與GPU面對計算任務(wù)各司其職,共同擔(dān)負(fù)任務(wù),MIC卡支持通過本地以啟動程序,這種模式稱之為native模式;另一種是MIC承擔(dān)加速的任務(wù),程序從CPU端啟動,并選擇性地將代碼卸載(offload)到MIC端執(zhí)行,此種模式稱之為offload模式。每個基于MIC的協(xié)處理器可配備多個高頻率的計算核心,并擁有專屬的存儲空間。每個計算核心可支持多個硬件線程,目前單MIC卡的雙精度浮點計算峰值性能超過1TFlops[32]。采用CPU/MIC異構(gòu)架構(gòu)的高性能計算方式有廣泛的應(yīng)用空間,Lv[33]和張光輝等[34]實現(xiàn)了GPU/CPU異構(gòu)協(xié)同計算的、可跨節(jié)點的、高效的高階基函數(shù)矩量法;譚郁松等[35]基于CPU/MIC的異構(gòu)架構(gòu)實現(xiàn)了向量化K-Means算法,并且探索了MIC在非傳統(tǒng)HPC(High Performance Computing)應(yīng)用領(lǐng)域的優(yōu)化策略;洪向共等[36]實現(xiàn)了基于CPU/GPU和CPU/MIC的異構(gòu)架構(gòu)上的Roberts算法,并證明在相同單精度浮點運(yùn)算能力下,GPU處理低分辨率圖像的速度更快、加速比更高,但處理高分辨率圖像時MIC的加速效果比GPU略好(MIC加速比最高為23.52,GPU為21.43)。由于MIC的指令集和體系結(jié)構(gòu)兼容性較好,相較于GPU編譯方式,其可移植性更強(qiáng),速度更快。一些較為簡單的軟件甚至可以在重新編譯后直接在MIC上運(yùn)行。在水利計算領(lǐng)域,具備拓展性強(qiáng)、計算性能好、加速效果佳的CPU/MIC異構(gòu)架構(gòu)同GPU一樣有廣闊的應(yīng)用空間,對其在水利領(lǐng)域的研究也有待更進(jìn)一步、更深層次的研究。

      4 應(yīng)用前景

      4.1 水庫調(diào)度中的應(yīng)用

      水庫的聯(lián)合調(diào)度、優(yōu)化運(yùn)行是一個相對復(fù)雜的優(yōu)化問題,其具有多條件約束、維度高、非線性的特點。隨著水庫數(shù)量和水庫調(diào)度目標(biāo)的增加,維數(shù)災(zāi)阻礙了水庫調(diào)度研究的發(fā)展。對此,研究人員從算法改進(jìn)和硬件加速兩個方面展開了研究。算法的改進(jìn)和并行化在一定程度上解決了維數(shù)災(zāi)的問題,但對于大規(guī)模的水庫調(diào)度,尤其是梯級水庫群的優(yōu)化調(diào)度,算法改進(jìn)已經(jīng)無法滿足計算要求。在并行計算和計算機(jī)硬件快速發(fā)展的基礎(chǔ)上,硬件加速成為解決水庫優(yōu)化調(diào)度計算問題的新思路。處理器多核時代的來臨,為高性能并行計算創(chuàng)造了有利的條件,國內(nèi)研究者將并行計算和動態(tài)規(guī)劃進(jìn)行有機(jī)地耦合,以O(shè)penMP編程模式為計算平臺來進(jìn)行并行化的計算,這極大地提高了運(yùn)行效率。如果將GPU并行優(yōu)化技術(shù)引入調(diào)度的優(yōu)化計算中,那么模型的計算效率將在OpenMP編程模式的基礎(chǔ)上得到進(jìn)一步提升。目前,基于GPU的優(yōu)化并行技術(shù)尚未在水庫調(diào)度領(lǐng)域推廣,可以預(yù)見的是該技術(shù)將成為水庫聯(lián)合優(yōu)化調(diào)度模型求解的新技術(shù)。

      4.2 中長期水文預(yù)報中的應(yīng)用

      水文預(yù)報需要根據(jù)所取得的水文氣象資料和方法,對未來的水文要素進(jìn)行預(yù)測。其核心在于建立起已知的預(yù)報因子和未來預(yù)報水文要素之間的相關(guān)關(guān)系。建立相關(guān)關(guān)系的方法主要有四種[37]:物理成因法、數(shù)理統(tǒng)計法、綜合預(yù)報法和智能方法。其中智能計算方法是一種新興的水文預(yù)報方法,在其發(fā)展的過程之中,人們根據(jù)自然界或人類的普遍原理或過程將其模擬并改進(jìn)出許多有效的智能計算方法,比如神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)和混沌理論[38]等。張麗娟[39]將徑向基神經(jīng)網(wǎng)絡(luò)運(yùn)用到水文預(yù)報中,極大地提高了清河水庫中長期水文預(yù)報的精度;張俊等[40]建立了基于蟻群算法的支持向量機(jī)中長期水文預(yù)報模型;王麗學(xué)等[41]建立了基于灰色系統(tǒng)與徑向基函數(shù)神經(jīng)網(wǎng)絡(luò)的中長期水文預(yù)報模型,在提高預(yù)報精度的同時,提升了模型的運(yùn)行速度;劉佩瑤等[42]使用LM算法改進(jìn)了BP神經(jīng)網(wǎng)絡(luò)并建立了水文預(yù)報模型,通過閩江富屯溪流域上預(yù)報結(jié)果的對比,得到了模擬精度更優(yōu)于新安江模型的改進(jìn)BP神經(jīng)網(wǎng)絡(luò)模型;王鵬等[43]通過匯總分析水文預(yù)報模型的結(jié)構(gòu),提出了提高預(yù)報精度的改善方法。由于此類智能計算方法具有參數(shù)多且取值范圍大、輸入數(shù)據(jù)集或訓(xùn)練集大、訓(xùn)練次數(shù)和迭代次數(shù)多等特點,再加之水文要素具有高度的非線性和時變性[44]特點。因此,水文預(yù)報領(lǐng)域?qū)τ诟咝省⒏呔?、高靈敏度的運(yùn)行與計算需求越來越迫切。

      隨著計算機(jī)技術(shù)的發(fā)展,越來越多的水文預(yù)報模型或者方法中用到了智能計算方法。作為智能計算方法的基礎(chǔ),許多智能算法中涉及到了神經(jīng)網(wǎng)絡(luò)算法[45]。由于神經(jīng)網(wǎng)絡(luò)算法的計算過程中運(yùn)用到了大量的參數(shù),如激活值、梯度值等,這些參數(shù)數(shù)據(jù)均會進(jìn)過計算機(jī)緩沖區(qū),并且在每一次訓(xùn)練迭代中均會被完全更新,這種計算模式對設(shè)備的內(nèi)存以及帶寬提出了更高的要求。GPU具有結(jié)構(gòu)上的優(yōu)勢,其與CPU相比擁有可觀數(shù)量的計算單元以及高帶寬。當(dāng)前在擁有多路GPU的計算機(jī)上,為使GPU的高效率計算特性和CPU的邏輯控制能力協(xié)同配合,已經(jīng)能夠?qū)崿F(xiàn)CPU與GPU的協(xié)同配合運(yùn)行,以便充分發(fā)揮GPU的計算能力。對于結(jié)構(gòu)復(fù)雜多變的智能算法,可通過設(shè)計一套并行計算規(guī)則,將密集計算部分遷移到GPU中執(zhí)行,剩余部分仍然由CPU來完成[46]。

      4.3 水文模型中的應(yīng)用

      流域水文模型的參數(shù)一般都具有特定的物理含義,但鑒于直接進(jìn)行參數(shù)測定相當(dāng)困難且不準(zhǔn)確,參數(shù)率定等系統(tǒng)識別的方式成為了較好的選擇。目前水文參數(shù)率定方法主要有 Rosenbrock 法[47]、Simplex 法[48]、SCEUA[49-51]、遺傳算法[52-54]、粒子群算法[55-56]等。隨著計算機(jī)技術(shù)的快速發(fā)展,參數(shù)率定的自動化將得到長足發(fā)展。

      水文模型參數(shù)率定的過程中需要不斷地將參數(shù)帶入模型進(jìn)行演算,并將得到的結(jié)果運(yùn)用特定的率定方法進(jìn)行尋優(yōu),最后得到最優(yōu)的參數(shù),實際上這個過程的計算量是很大的。如果所需率定的參數(shù)較多,則參數(shù)空間的維數(shù)會變得更大;同時,取值范圍太大也會導(dǎo)致高維度的參數(shù)空間。由于水文參數(shù)存在以上特點,使得現(xiàn)有參數(shù)率定方法耗時長,且容易陷入局部最優(yōu)解。將GPU并行優(yōu)化技術(shù)引入到參數(shù)率定中,能夠很好地解決參數(shù)率定過程中維數(shù)多、維度大的問題。結(jié)合GPU的分布式計算性能,可將整個率定過程分配到各個計算單元或者多GPU并行計算中進(jìn)行并行計算,以此來提高整體率定的效率,同時更有利于得到全局最優(yōu)解。

      分布式水文模型對流域水文過程的應(yīng)用深度及廣度不斷加深,常與數(shù)值天氣及氣候預(yù)報相結(jié)合,在計算過程中面臨巨大的計算量,因此具有加速計算的必要性。從模型結(jié)構(gòu)特點來看,分布式模型具有天然的并行性,適宜采用GPU進(jìn)行分布式的運(yùn)算。分布式水文模型是今后水文發(fā)展一個趨勢,隨著數(shù)據(jù)體量的增加,計算負(fù)荷將呈幾何倍數(shù)增加,基于GPU的并行優(yōu)化技術(shù)將成為解決水文模型計算效率問題的新選擇。

      4.4 智慧水務(wù)大數(shù)據(jù)計算

      智慧水務(wù)[57]是當(dāng)前智慧城市發(fā)展的新熱點,也是未來城市水務(wù)管理的必然趨勢。將水利信息化與GPU并行計算相結(jié)合,將極大地發(fā)揮GPU在大數(shù)據(jù)時代的應(yīng)用優(yōu)勢。大連和北京已經(jīng)率先開始探索,就目前開展智慧水務(wù)的經(jīng)驗來看,所面臨的主要問題是在數(shù)據(jù)采集以及數(shù)據(jù)存儲和處理階段所涉及的信息面過于廣泛,包含海量的實時監(jiān)測數(shù)據(jù)信息、社會經(jīng)濟(jì)信息、地理信息以及多媒體等數(shù)據(jù)。隨著3S技術(shù)的發(fā)展,越來越多的信息獲取方式被運(yùn)用到數(shù)據(jù)采集上,水務(wù)信息的時空尺度和要素類型也隨之拓寬。水務(wù)數(shù)據(jù)也逐漸呈現(xiàn)出多源、多維、大量和多態(tài)的大數(shù)據(jù)特性。

      對于類型眾多、特點各異的大數(shù)據(jù),其分析和處理是一個亟待解決的問題。根據(jù)是否對數(shù)據(jù)預(yù)先進(jìn)行存儲,將大數(shù)據(jù)的計算模式[58]分為兩種,一種是對數(shù)據(jù)預(yù)先進(jìn)行存儲,之后將批量數(shù)據(jù)進(jìn)行統(tǒng)一的運(yùn)算執(zhí)行,這種方式稱為批量計算;另一種方式是針對數(shù)據(jù)源到來時刻與順序的隨機(jī)性,將隨機(jī)到來的數(shù)據(jù)暫時存放于內(nèi)存中,并直接執(zhí)行實時計算,這種計算方式能夠?qū)?shù)據(jù)置于任務(wù)拓?fù)渲袌?zhí)行計算,然后輸出所需的信息和數(shù)據(jù),這種方式稱為流式計算。在批量計算中,Hadoop[59]是最常用的計算架構(gòu),通過HDFS(Hadoop Distributed File System)與MapReduce的配合,分別完成數(shù)據(jù)的靜態(tài)存儲和數(shù)據(jù)的分析計算。鑒于兩種大數(shù)據(jù)的處理方式各自的特點,尤其是批量計算中的靜態(tài)數(shù)據(jù)集中計算,GPU擁有更多的計算單元更適用于處理復(fù)雜且龐大的數(shù)據(jù)。以北京大學(xué)理論與應(yīng)用地球物理研究所的集群為例[60],該集群由1個服務(wù)器、46個計算結(jié)點、3個刀片機(jī)箱組成。每個計算結(jié)點有2顆四核Intel XeonE5520(2.26 GHz,Nehalem-EP架構(gòu))處理器,共368個計算核心,滿載功耗為12 kW。相比之下,價格更低的NVIDIA TITAN Xp型號的GPU擁有3 584個NVIDIA CUDA核心及12 GB的GDDR5X顯存,且其額定功耗僅為250 W,在保證高效運(yùn)算的同時,能夠調(diào)整資源的使用,并對帶寬、內(nèi)存進(jìn)行優(yōu)化,使得個人用戶和小型組織也能夠進(jìn)行高性能計算。

      5 應(yīng)用指導(dǎo)

      5.1 計算框架

      目前GPU的計算框架主要有以下幾種:NVIDIA CUDA、C++AMP(C++Accelerated Massive Parallelism)、OpenCL(Open Computing Language)和 AMD APP(AMD Accelerated Parallel Processing)等四種。其中CUDA是NVIDIA自主開發(fā)的高效計算架構(gòu),與其他三種計算架構(gòu)相比CUDA的應(yīng)用最廣泛。NVIDIA為CUDA提供了大量的輔助工具、教程和第三方庫,加之CUDA的個人和組織用戶在網(wǎng)絡(luò)社區(qū)建立的問題交流與互動,CUDA已擁有良好的編程生態(tài)系統(tǒng)。經(jīng)過多年的發(fā)展和實踐,CUDA計算架構(gòu)的技術(shù)已相對成熟,在GPU的API設(shè)計便捷性和實用性中位居前列。C++AMP[61]可與C++程序完美結(jié)合,并且可在支持D3D11(動態(tài)鏈接庫)的顯卡上順利執(zhí)行,由于其底層具有封裝性極好的特點,使得對于GPUB不甚精通的編程人員也能夠毫無障礙地使用。C++AMP不僅可用于GPGPU編程,更能提供一種基于異構(gòu)平臺的運(yùn)行方法,例如可用于GPU和CPU的向量處理單元[62]。C++AMP為編程人員提供了類型安全的泛型—實數(shù)數(shù)組合和整數(shù)數(shù)組,進(jìn)一步降低并行軟件開發(fā)難度[63]。值得注意的是,C++AMP的GPU加速主要是針對C++,而不是C語言或類C語言,且目前主要應(yīng)用于Windows平臺的Visual Studio用戶,其他平臺的應(yīng)用及其穩(wěn)定性還有待考驗,鑒于以上因素此計算框架尚存在一定的局限性。OpenCL[64]屬于運(yùn)用范圍非常廣的計算架構(gòu),既可跨操作系統(tǒng)(Windows和Linux)運(yùn)行,又能兼容不同類型的GPU(NVIDIA和AMD),對于異構(gòu)計算有很強(qiáng)的適應(yīng)性。但由于缺少持續(xù)的維護(hù)和更新,使得其運(yùn)行速度和穩(wěn)定性都受到影響,根據(jù)D-Wave的報告,同一程序基于OpenCL的速度只有基于CUDA運(yùn)行的三分之一。其次OpenCL的抽象層級較低,使得開發(fā)的難度較大。AMD APP是AMD針對旗下GPU所推出的通用并行計算技術(shù),其前身為ATI Stream。

      在GPU并行計算中,深度學(xué)習(xí)是目前應(yīng)用最多也是通用性較強(qiáng)的應(yīng)用領(lǐng)域,在前文提到的水利計算領(lǐng)域中,均可利用深度學(xué)習(xí)技術(shù)為水利計算注入強(qiáng)大的動力。目前主流的深度學(xué)習(xí)框架[65]主要有Caffe、TensorFlow、Microsoft Cognitive Toolkit(CNTK)、MXNet、Torch、Theano等六種,目前NVIDIA GPU已支持上述六種主流深度學(xué)習(xí)框架。此外在考慮兼容性的基礎(chǔ)之上,增加了對基于Python的Chainer和KERAS、基于Java的DL4J(Deep Learning for Java)、基 于 MATLAB 的MatConvNet的全面支持。與此同時,NVIDIA GPU已實現(xiàn)對上述所有計算框架的優(yōu)化,使GPU發(fā)揮出最佳性能。

      5.2 開發(fā)環(huán)境

      CUDA是NVIDIA提出的并行計算架構(gòu),是目前應(yīng)用最廣泛、最成熟的GPU并行計算解決方式。CUDA結(jié)合了CPU和GPU的優(yōu)點,主要用來處理密集型及并行計算。CUDA環(huán)境的構(gòu)建是使用NVIDIA GPU的第一步。目前CUDA能夠在Windows、Mac和Linux中完美運(yùn)行。詳細(xì)的應(yīng)用操作步驟如下:

      孕婦激素水平的增高,致使靜脈中的血流量增加,同時由于妊娠子宮壓迫盆腔靜脈,影響下肢靜脈回流所致。持久站立位工作,妊娠晚期腹內(nèi)壓力的增加,都促使癥狀加重。當(dāng)然,這種現(xiàn)象會隨孕期的消失而消失。

      (1)英偉達(dá)開發(fā)驅(qū)動程序。

      (2)CUDA工具包。

      (3)CUDA軟件開發(fā)工具包。

      (4)GPU計算軟件開發(fā)工具包。

      (5)并行Nsight調(diào)試器。

      在Linux操作系統(tǒng)中,首先進(jìn)行Linux的版本檢查,當(dāng)前支持的版本有Fedora 14、IRedhat 6.0和5.5/CentOS 6.2、Ubuntu 11.04和OpenSUSE 11.2。其次進(jìn)行以下操作:

      (1)將內(nèi)核更新到最新。

      (2)安裝標(biāo)準(zhǔn)的GNU C++環(huán)境以及重新編譯內(nèi)核所需的內(nèi)核源代碼。

      (3)安裝OpenGL開發(fā)環(huán)境以便圖形化的輸出。

      (4)內(nèi)核驅(qū)動程序的安裝。

      (5)安裝CUDA工具包。

      Mac操作系統(tǒng)按照以下順序進(jìn)行安裝:

      (1)開發(fā)驅(qū)動程序。

      (2)CUDA工具包。

      (3)CUDA工具軟件開發(fā)包和代碼樣例。

      5.3 性能優(yōu)化

      對GPU性能上的優(yōu)化共有七種策略:

      (1)分析問題,并將問題正確分解為串行/并行的工作負(fù)載。

      (2)基于具體問題,分析并優(yōu)化內(nèi)存帶寬、延遲和緩存使用。

      (3)理解GPU與主機(jī)端傳輸數(shù)據(jù)的原理,分析鎖頁內(nèi)存、零復(fù)制內(nèi)存的表現(xiàn)和某些硬件的帶寬限制。

      (4)理解線程結(jié)構(gòu)和計算能力,并優(yōu)化其對性能的影響。

      (5)結(jié)合一些通用算法的優(yōu)化實例,針對性實現(xiàn)算法優(yōu)化。

      (6)關(guān)注性能分析,定位應(yīng)用程序的瓶頸所在及其來源。

      (7)考察如何讓應(yīng)用程序根據(jù)各種硬件實現(xiàn)自我調(diào)優(yōu)。

      除此之外,GPU加速器也是可行且有效的選擇。TensorRT是一款適用于CUDA GPU的優(yōu)化神經(jīng)網(wǎng)絡(luò)編譯器,其作用是為基于CUDA GPU的程序提供推理加速。隨著NVIDIA公司對其進(jìn)行更新?lián)Q代,目前TensorRT已達(dá)到第三版本,其功率也從最終的250 W降低到低于1 W,加速性能成倍提升。以最常用的Tensor-Flow計算框架為例,在TensorRT 3的加速下,運(yùn)行速度是未使用加速器時的18倍。TensorRT的兼容性強(qiáng),能夠兼容當(dāng)前所有計算框架,并能加速現(xiàn)有和未來的計算架構(gòu)。

      6 結(jié)語

      GPU并行優(yōu)化是水利信息化在新形勢下發(fā)展的趨勢,也是GPU高性能計算的重要應(yīng)用。一方面隨著水利信息化進(jìn)程的加快,水利行業(yè)中數(shù)字化技術(shù)的運(yùn)用以及整體行業(yè)水平的逐漸提升。在此過程中積累了大量異構(gòu)多源、獨立分布的數(shù)據(jù),如何加速處理這些數(shù)據(jù),是當(dāng)前水利信息化進(jìn)程中面臨的主要問題。隨著NVIDIA推出專用于人工智能、深度學(xué)習(xí)的高性能GPU,越來越多的個人和組織能夠使用到價格更低廉、性能更高效的GPU。

      當(dāng)前,GPU運(yùn)用到水利計算的研究仍然處于起步階段,需要研究和實踐的方面還有很多。需要從國家層面制定長期發(fā)展戰(zhàn)略,同時需要各級水利部門的通力合作,將GPU運(yùn)用到更廣泛的水利計算之中。在運(yùn)用硬件的基礎(chǔ)之上,研究基于GPU的加速算法,利用CUDA、TensorRT等可編程性的計算架構(gòu)和加速器,完成對于GPU應(yīng)用的源頭級優(yōu)化,使其在水利計算之中發(fā)揮更大的功用。

      [1]葉秉如.水利計算[M].北京:水利電力出版社,1985.

      [2]張蕾,楊波.并行粒子群優(yōu)化算法的設(shè)計與實現(xiàn)[J].通信學(xué)報,2005,26(1):289-292.

      [3]呂奕清,林錦賢.基于MPI的并行PSO混合K均值聚類算法[J].計算機(jī)應(yīng)用,2011,31(2):428-431.

      [4]周洪斌.基于OpenMP求解QAP的并行粒子群優(yōu)化算法[J].微型機(jī)與應(yīng)用,2010,29(10):84-86.

      [5]Tewolde G S,Hanna D M,Haskell R E.Multi-swarm parallel PSO:Hardware implementation[C]//IEEE Swarm Intelligence Symposium,2009:60-66.

      [6]左顥睿,張啟衡,徐勇,等.基于GPU的并行優(yōu)化技術(shù)[J].計算機(jī)應(yīng)用研究,2009,26(11):4115-4118.

      [7]朱宇蘭.基于GPU通用計算的并行算法和計算框架的實現(xiàn)[J].山東農(nóng)業(yè)大學(xué)學(xué)報:自然科學(xué)版,2016,47(3):473-476.

      [8]李森,李新亮,王龍,等.基于OpenCL的并行方腔流加速性能分析[J].計算機(jī)應(yīng)用研究,2011,28(4):1401-1403.

      [9]Nieto J,Arcas G D,Vega J,et al.Exploiting graphic processing units parallelism to improve intelligent data acquisition system performance in JET’s correlation reflectometer[C]//Real Time Conference,2010.

      [10]白玉川,冀自青,徐海玨.擺動河槽水動力穩(wěn)定性特征分析[J].力學(xué)學(xué)報,2017,49(2):274-288.

      [11]蔣昌波,劉洋,鄧斌,等.出滲對均勻大粒徑泥沙附近水動力特性影響[J].水科學(xué)進(jìn)展,2017,28(1):67-75.

      [12]陳俊鴻,劉小龍,王崗,等.基于一、二維耦合水動力模型的贛西聯(lián)圩潰堤洪水風(fēng)險分析[J].中國農(nóng)村水利水電,2017(6):43-47.

      [13]溫嬋娟,歐嘉蔚,賈金原.GPU通用計算平臺上的SPH流體模擬[J].計算機(jī)輔助設(shè)計與圖形學(xué)學(xué)報,2010,22(3):406-411.

      [14]Wang Xian,Takayuki A.Multi-GPU performance of incompressible flow computation by lattice Boltzmann method on GPU cluster[J].Parallel Computing,2011,37(9):521-535.

      [15]趙旭東,梁書秀,孫昭晨,等.基于GPU并行算法的水動力數(shù)學(xué)模型建立及其效率分析[J].大連理工大學(xué)學(xué)報,2014(2):204-209.

      [16]Cohen R C Z,Hilton J E,Khan S H,et al.Swift:A GPU based coupled hydrodynamic/hydraulic framework for urban flood prediction[C]//Eleventh International Conference on CFD in the Minerals and Process Industries,2015.

      [17]Herdman J A,Gaudin W P,Mcintoshsmith S,et al.Accelerating hydrocodes with OpenACC,OpeCL and CUDA[C]//SC Companion:High Performance Computing,Networking Storage and Analysis,2012:465-471.

      [18]Hart A,Ansaloni R,Gray A.Porting and scaling OpenACC applications on massively-parallel,GPU-accelerated supercomputers[J].European Physical Journal Special Topics,2012,210(1):5-16.

      [19]Pickering B P,Roy C J.Directive-based GPU programming for computational fluid dynamics[C]//Aerospace Sciences Meeting,2014.

      [20]Shimokawabe T,Aoki T,Muroi C,et al.An 80-fold speedup,15.0 TFlops full GPU acceleration of nonhydrostatic weather model ASUCA production code[J].High Performance Computing,Networking,Storage&Analysis,2010:1-11.

      [21]Brunelli C,Aho E,Berg H.OpenCL implementation of Cholesky matrix decomposition[C]//International Symposium on System on Chip,2011.

      [22]劉永和,馮錦明,徐文鵬.分布式水文模型的GPU并行化及快速模擬技術(shù)[J].水文,2015(4):20-26.

      [23]Chang J.異構(gòu)計算:計算巨頭的下一個十年[J].個人電腦,2011,17(11):82-88.

      [24]劉璐,劉箴,何高奇,等.一種基于DirectCompute加速的實時流體仿真框架[J].系統(tǒng)仿真學(xué)報,2016,28(10):2467-2475.

      [25]曾文權(quán),胡玉貴,何擁軍,等.一種基于OPENACC的GPU加速實現(xiàn)高斯模糊算法[J].計算機(jī)技術(shù)與發(fā)展,2013,23(7):147-150.

      [26]莫德林,戴晨光,張振超,等.一種基于OpenACC的遙感影像正射糾正快速實現(xiàn)方法[J].影像技術(shù),2014,26(2):47-49.

      [27]楊帥.一種基于OpenACC指令加速的素數(shù)生成算法[J].信息與電腦:理論版,2016(20):97-98.

      [28]董犖,葛萬成,陳康力.CUDA并行計算的應(yīng)用研究[J].信息技術(shù),2010(4):11-15.

      [29]鐘慶.基于CUDA并行計算的三維形狀變形編輯[D].遼寧大連:大連理工大學(xué),2012.

      [30]孔英會,王之涵,車轔轔.基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)和CUDA加速的實時視頻人臉識別[J].科學(xué)技術(shù)與工程,2016,16(35):96-100.

      [31]李承功.流場的格子Boltzmann模擬及其GPU-CUDA并行計算[D].遼寧大連:大連理工大學(xué),2013.

      [32]Jeffers J,Reinders J.Intel Xeon Phi coprocessor highperformance programming[M].[S.l.]:Morgan Kaufmann Publishers Inc,2013.

      [33]Lv Z,Lin Z,Yan Y,et al.Accelerated higher-order MoM using GPU[C]//International Radar Conference,2013.

      [34]張光輝.CPU/MIC異構(gòu)平臺中矩量法與時域有限差分法的研究[D].西安:西安電子科技大學(xué),2015.

      [35]譚郁松,伍復(fù)慧,吳慶波,等.面向CPU/MIC異構(gòu)架構(gòu)的K-Means向量化算法[J].計算機(jī)科學(xué)與探索,2014,8(6):641-652.

      [36]洪向共,陳威,熊鏑.基于CPU_MIC_GPU異構(gòu)架構(gòu)的Roberts算法優(yōu)化探究[J].科學(xué)技術(shù)與工程,2016,16(36):217-222.

      [37]陳文愛.中長期水文預(yù)報方法的分析與展望[J].黑龍江科技信息,2016(13):240.

      [38]李亞嬌.基于現(xiàn)代分析技術(shù)的水文時間序列預(yù)測方法研究[D].西安:西安理工大學(xué),2007.

      [39]張麗娟.灰色徑向基神經(jīng)網(wǎng)絡(luò)技術(shù)在水文預(yù)報中的應(yīng)用[J].東北水利水電,2016,34(3):28-29.

      [40]張俊.中長期水文預(yù)報及調(diào)度技術(shù)研究與應(yīng)用[D].遼寧大連:大連理工大學(xué),2009.

      [41]王麗學(xué),楊軍,孫靚,等.基于灰色系統(tǒng)與RBF神經(jīng)網(wǎng)絡(luò)的中長期水文預(yù)報[J].人民長江,2015,46(17):15-17.

      [42]劉佩瑤,郝振純,王國慶,等.新安江模型和改進(jìn)BP神經(jīng)網(wǎng)絡(luò)模型在閩江水文預(yù)報中的應(yīng)用[J].水資源與水工程學(xué)報,2017,28(1):40-44.

      [43]王鵬,李立,謝鵬.中長期水文預(yù)報神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)的確定及應(yīng)用研究[J].江蘇科技信息,2017(3):27-31.

      [44]李楊,黎光明.中長期水文預(yù)報方法措施[J].低碳世界,2016(12):84-85.

      [45]盧宏濤,張秦川.深度卷積神經(jīng)網(wǎng)絡(luò)在計算機(jī)視覺中的應(yīng)用研究綜述[J].數(shù)據(jù)采集與處理,2016,31(1):1-17.

      [46]戴春娥,陳維斌,傅順開,等.通過GPU加速數(shù)據(jù)挖掘的研究進(jìn)展和實踐[J].計算機(jī)工程與應(yīng)用,2015,51(16):109-116.

      [47]Rosenbrock H H.An automatic method for finding the greatest or least value of a function[J].Computer Journal,1960,3(3):175-184.

      [48]Nelder J A,Mead R.A simplex method for function minimization[J].Computer Journal,1965,7(4):308-313.

      [49]Duan Q,Sorooshian S,Gupta V.Effective and efficient global optimization for conceptual rainfall-runoff models[J].Water Resources Research,1992,28(4):1015-1031.

      [50]馬海波,董增川,張文明,等.SCE-UA算法在TOPMODEL參數(shù)優(yōu)化中的應(yīng)用[J].河海大學(xué)學(xué)報:自然科學(xué)版,2006,34(4):361-365.

      [51]于國榮,夏自強(qiáng).混沌時間序列支持向量機(jī)模型及其在徑流預(yù)測中應(yīng)用[J].水科學(xué)進(jìn)展,2008,19(1):116-122.

      [52]Cheng C T,Ou C P,Chau K W.Combining a fuzzy optimal model with a genetic algorithm to solve multiobjective rainfall-runoff model calibration[J].Journal of Hydrology,2002,268(1):72-86.

      [53]楊曉華,陸桂華,酈建強(qiáng).混合加速遺傳算法在流域模型參數(shù)優(yōu)化中的應(yīng)用[J].水科學(xué)進(jìn)展,2002,13(3):340-344.

      [54]武新宇,程春田,趙鳴雁.基于并行遺傳算法的新安江模型參數(shù)優(yōu)化率定方法[J].水利學(xué)報,2004,35(11):85-90.

      [55]楊道輝,馬光文,劉起方,等.基于粒子群優(yōu)化算法的BP網(wǎng)絡(luò)模型在徑流預(yù)測中的應(yīng)用[J].水力發(fā)電學(xué)報,2006,25(2):65-68.

      [56]劉蘇寧,甘泓,魏國孝.粒子群算法在新安江模型參數(shù)率定中的應(yīng)用[J].水利學(xué)報,2010,41(5):537-544.

      [57]田雨,蔣云鐘,楊明祥.智慧水務(wù)建設(shè)的基礎(chǔ)及發(fā)展戰(zhàn)略研究[J].中國水利,2014(20):14-17.

      [58]董杰.支持批量計算與流式計算的大數(shù)據(jù)系統(tǒng)研究與實現(xiàn)[D].西安:西北大學(xué),2015.

      [59]董新華,李瑞軒,周灣灣,等.Hadoop系統(tǒng)性能優(yōu)化與功能增強(qiáng)綜述[J].計算機(jī)研究與發(fā)展,2013,50(S2):1-15.

      [60]丁科,譚營.GPU通用計算及其在計算智能領(lǐng)域的應(yīng)用[J].智能系統(tǒng)學(xué)報,2015(1):1-11.

      [61]鄧力,陳曉翔,林嘉宇.基于GPU的CUDA應(yīng)用開發(fā)環(huán)境構(gòu)架[J].微處理機(jī),2013,34(1):1-3.

      [62]李銀超.基于C++AMP的圖像并行計算理論與技術(shù)研究[D].南京:南京郵電大學(xué),2016.

      [63]Howard P G,Vitter J S.Parallel lossless image compression using Huffman and arithmetic coding[J].Information Processing Letters,1996,59(2):65-73.

      [64]詹云,趙新燦,譚同德.基于OpenCL的異構(gòu)系統(tǒng)并行編程[J].計算機(jī)工程與設(shè)計,2012,33(11):4191-4195.

      [65]孫志軍,薛磊,許陽明,等.深度學(xué)習(xí)研究綜述[J].計算機(jī)應(yīng)用研究,2012,29(8):2806-2810.

      猜你喜歡
      水文架構(gòu)水利
      2022年《中國水文年報》發(fā)布
      基于FPGA的RNN硬件加速架構(gòu)
      功能架構(gòu)在電子電氣架構(gòu)開發(fā)中的應(yīng)用和實踐
      汽車工程(2021年12期)2021-03-08 02:34:30
      為奪取雙勝利提供堅實水利保障(Ⅱ)
      為奪取雙勝利提供堅實水利保障(Ⅰ)
      水文
      水利工會
      水文水資源管理
      LSN DCI EVPN VxLAN組網(wǎng)架構(gòu)研究及實現(xiàn)
      水文
      达日县| 深水埗区| 乐安县| 兴和县| 庆云县| 闵行区| 碌曲县| 海丰县| 呼图壁县| 宜章县| 广宁县| 拉孜县| 贵德县| 临安市| 修水县| 呼和浩特市| 老河口市| 临夏市| 特克斯县| 准格尔旗| 永清县| 咸宁市| 辽源市| 石河子市| 介休市| 同仁县| 桂东县| 雅江县| 江门市| 和硕县| 合川市| 宁城县| 达日县| 松桃| 内江市| 新沂市| 永德县| 应城市| 务川| 海兴县| 扶余县|