專利名稱:一種提高海量空間數(shù)據(jù)處理效率的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于公共算子與高性能計(jì)算的提高海量空間數(shù)據(jù)處理效率的方法,通過提供一個(gè)可以穩(wěn)定高效地運(yùn)行在服務(wù)器上的空間數(shù)據(jù)處理并行計(jì)算框架,從而提高空間數(shù)據(jù)處理效率,同時(shí)研究如何將空間數(shù)據(jù)處理方法應(yīng)用至多個(gè)領(lǐng)域。
背景技術(shù):
隨著航天遙感技術(shù)、傳感器技術(shù)和Internet的快速發(fā)展,獲取時(shí)空數(shù)據(jù)的速度和規(guī)模的不斷增長(zhǎng)(從GB到PB),同時(shí)數(shù)據(jù)在實(shí)例數(shù)量、屬性數(shù)量和分類數(shù)量等方面都出現(xiàn)激增,高維大數(shù)據(jù)集隨之出現(xiàn)。由于空間數(shù)據(jù)處理算法復(fù)雜度大、空間信息的復(fù)雜性,大數(shù)據(jù)集的空間數(shù)據(jù)處理會(huì)花費(fèi)大量時(shí)間。同時(shí)在公共衛(wèi)生與健康、災(zāi)害預(yù)警、人口空間化等眾多領(lǐng)域,都有眾多非專業(yè)人員需要用到空間數(shù)據(jù)處理中的復(fù)雜模型,現(xiàn)有模型基本都無(wú)法根據(jù)需求定制,從而導(dǎo)致無(wú)法廣泛推廣。
在空間數(shù)據(jù)處理操作方面,國(guó)外的Arc/Info、MGE等著名的GIS基礎(chǔ)軟件平臺(tái),都有著完善高效的工具庫(kù)。但每個(gè)工具之間的組合與協(xié)同工作只能在較粗粒度上進(jìn)行,不能實(shí)現(xiàn)工具內(nèi)部細(xì)粒度算法級(jí)別的單獨(dú)使用以及組合。為此可以將空間統(tǒng)計(jì)中基礎(chǔ)部分以及共同部分提取出來(lái),作為公共算子。通過使用公共算子可以解決空間數(shù)據(jù)處理代碼重復(fù)編寫、各個(gè)算法交互困難以及根據(jù)應(yīng)用定制空間數(shù)據(jù)處理模型等難題?,F(xiàn)代科學(xué)技術(shù)的進(jìn)步極大的促進(jìn)了計(jì)算科學(xué)的發(fā)展,新一代的計(jì)算機(jī)無(wú)論計(jì)算能力和計(jì)算速度都比早期的計(jì)算機(jī)優(yōu)越許多。在實(shí)踐中,由于受到物理元器件極限速度和技術(shù)水平的限制,單個(gè)的處理器遠(yuǎn)遠(yuǎn)不能滿足現(xiàn)代許多領(lǐng)域中具有挑戰(zhàn)性的大規(guī)模計(jì)算課題對(duì)計(jì)算資源的需求,所以除了增強(qiáng)處理器本身的計(jì)算能力外,并行處理是一種提高計(jì)算能力的有效手段。在多核心處理器如火如荼發(fā)展的時(shí)候,軟件業(yè)卻遠(yuǎn)遠(yuǎn)沒有來(lái)得及為此作準(zhǔn)備。如何在新興的多核集群平臺(tái)上方便快捷地開發(fā)各種空間數(shù)據(jù)處理應(yīng)用,以提供更加高效的在線服務(wù);另外更重要的是如何為上層程序開發(fā)人員隔離下層多核平臺(tái),使得開發(fā)出的空間數(shù)據(jù)處理并行算法能夠很方便地被用戶所使用,將成為一個(gè)嚴(yán)峻的挑戰(zhàn)??傮w而言,現(xiàn)有的空間數(shù)據(jù)操作模型、算法及理論與方法研究不夠深入,所取得的研究成果沒有及時(shí)地實(shí)現(xiàn)以進(jìn)行進(jìn)一步的應(yīng)用。高性能計(jì)算環(huán)境,尤其是多核計(jì)算環(huán)境等的迅速發(fā)展,為空間數(shù)據(jù)處理提供了更廣闊的發(fā)展空間。因此,設(shè)計(jì)一個(gè)基于公共算子的空間數(shù)據(jù)處理并行計(jì)算框架,將是隔離下層高性能平臺(tái)和上層應(yīng)用開發(fā),并將其應(yīng)用到更為廣泛行業(yè)的最佳解決方案。
發(fā)明內(nèi)容
本發(fā)明的技術(shù)解決問題:克服現(xiàn)有技術(shù)的不足,提出一種提高海量空間數(shù)據(jù)處理效率的方法,通過將空間數(shù)據(jù)處理中的基礎(chǔ)與通用部分提取出來(lái)作為公共算子,基于MPI進(jìn)行并行化,在數(shù)據(jù)規(guī)模上可以處理百萬(wàn)樣本、上百個(gè)屬性的海量空間數(shù)據(jù),而現(xiàn)有空間數(shù)據(jù)處理軟件是無(wú)法運(yùn)算的,同時(shí)可以高效正確地進(jìn)行處理,任務(wù)提交、參數(shù)設(shè)定采用網(wǎng)頁(yè)進(jìn)行交互,所有計(jì)算都集中在服務(wù)端高效執(zhí)行完成,客戶端壓力小且操作簡(jiǎn)單。本發(fā)明技術(shù)解決方案:一種提高海量空間數(shù)據(jù)處理效率的方法,包括以下步驟:(I)公共算子提取(1.1)將空間數(shù)據(jù)處理方法按輸入輸出、實(shí)現(xiàn)思路、功能用途不同分為預(yù)處理、空間特征探索、空間信息計(jì)算和結(jié)果推斷四個(gè)部分,每個(gè)部分包含多個(gè)空間處理模型,單個(gè)模型可以完成一個(gè)完整的空間數(shù)據(jù)處理功能,例如:分類、插值等;(1.2)研究(1.1)中每個(gè)部分所包含的空間處理模型,依據(jù)功能完整性與不可分割性原則,將空間處理模型分拆為多個(gè)獨(dú)立模塊,每個(gè)模塊都作為一個(gè)公共算子,其處理結(jié)果作為后續(xù)流程上其他公共算子的輸入數(shù)據(jù)、輸入條件,或直接為最終結(jié)果;(1.3)對(duì)提取到的公共算子集進(jìn)行篩選,去除重復(fù),得到需要進(jìn)行并行化加速處理的公共算子集;至此已將所有空間數(shù)據(jù)處理方法中的公共算子提取出來(lái),繼而需要對(duì)公共算子進(jìn)行并行化處理實(shí)現(xiàn)加速。(2)公共算子并行策略設(shè)計(jì)(2.1)將步驟(1.3)中得到的每個(gè)公共算子劃分為更細(xì)致的計(jì)算單元,單個(gè)計(jì)算單元只進(jìn)行一次最簡(jiǎn)單的完整計(jì)算操作,求期望和對(duì)數(shù);計(jì)算單元之間為順序串行,內(nèi)部實(shí)現(xiàn)為并行;(2.2)逐個(gè)判斷計(jì)算單元的類型,制定數(shù)據(jù)分塊分發(fā)策略,若計(jì)算單元全部為本地計(jì)算Local或鄰域計(jì)算Focal,柵格數(shù)據(jù) 按行進(jìn)行分塊,矢量數(shù)據(jù)需考慮空間拓?fù)潢P(guān)系,按照單一節(jié)點(diǎn)數(shù)據(jù)完整性的原則進(jìn)行分塊;如果包含全局計(jì)算Global,所有節(jié)點(diǎn)運(yùn)算都需要數(shù)據(jù),因此不進(jìn)行分塊,而將數(shù)據(jù)發(fā)送所有節(jié)點(diǎn),發(fā)送采用廣播策略。進(jìn)行廣播時(shí)的基本單元為進(jìn)程,一個(gè)進(jìn)程就是一個(gè)計(jì)算與通信單元,通常為CPU中的一個(gè)核心。每個(gè)進(jìn)程得到數(shù)據(jù)之后加入廣播者,向本節(jié)點(diǎn)的剩余進(jìn)程與其它節(jié)點(diǎn)的所有進(jìn)程發(fā)送;(2.3)數(shù)據(jù)分塊策略設(shè)計(jì)完成后,需要進(jìn)行計(jì)算單元的并行策略設(shè)計(jì)。計(jì)算單元分為全局參數(shù)計(jì)算以及單樣本值循環(huán)計(jì)算。首先,進(jìn)行全局參數(shù)計(jì)算的并行策略設(shè)計(jì),并行策略有區(qū)域分解、功能分解。由于全局參數(shù)計(jì)算通??杀磉_(dá)為一個(gè)數(shù)學(xué)公式,可對(duì)該公式進(jìn)行分解,將需要進(jìn)行處理的空間數(shù)據(jù)分配給多個(gè)進(jìn)程。(2.4)然后,進(jìn)行單樣本值循環(huán)計(jì)算的并行策略設(shè)計(jì),由于每一次的計(jì)算只依賴各樣本值與全局參數(shù),與其他樣本計(jì)算無(wú)關(guān),可采用數(shù)據(jù)并行策略,將樣本平均分配至各個(gè)進(jìn)程。至此,所有公共算子的并行策略已經(jīng)設(shè)計(jì)完成,進(jìn)而可以依據(jù)制定的并行策略,采用特定編程語(yǔ)言以及并行接口實(shí)現(xiàn)公共算子。(3)公共算子并行實(shí)現(xiàn)(3.1)根據(jù)步驟(2)中提到的數(shù)據(jù)分塊分發(fā)策略與計(jì)算單元的并行策略,基于MPI即Message Passing Interface,基于消息傳遞接口的并行庫(kù),設(shè)計(jì)四種并行原語(yǔ),包括分發(fā)Map、規(guī)約Reduce、廣播Broadcast、交叉運(yùn)算Multiplex,從而實(shí)現(xiàn)對(duì)MPI函數(shù)庫(kù)的擴(kuò)展,提高公共算子在大數(shù)據(jù)條件下尤其是海量空間數(shù)據(jù)的傳輸效率;(3.2)依據(jù)步驟(3.1)中的四種并行原語(yǔ)以及MPI函數(shù),采用高級(jí)語(yǔ)言C++編寫代碼,將公共算子進(jìn)行并行化處理,得到高效運(yùn)行的并行公共算子集;(3.3)將步驟(3.2)實(shí)現(xiàn)的公共算子在單節(jié)點(diǎn)與多節(jié)點(diǎn)集群上分別進(jìn)行并行效率測(cè)試,統(tǒng)計(jì)10、通信代價(jià),不斷改進(jìn),直至得到滿足要求的可執(zhí)行并行公共算子。至此,所有的公共算子已經(jīng)并行實(shí)現(xiàn),每個(gè)公共算子都會(huì)編譯成一個(gè)可以高效運(yùn)行在高性能計(jì)算平臺(tái)上的獨(dú)立可執(zhí)行文件。(4)公共算子調(diào)用(4.1)將步驟(3.3)中得到的公共算子的可執(zhí)行文件部署到高性能集群上,并編寫守護(hù)進(jìn)程。集群上的守護(hù)進(jìn)程是隨系統(tǒng)啟動(dòng)并在后臺(tái)運(yùn)行的服務(wù),用來(lái)進(jìn)行參數(shù)解析、任務(wù)執(zhí)行、結(jié)果反饋。(4.2)守護(hù)進(jìn)程啟動(dòng)后,用戶即可在客戶端瀏覽器通過網(wǎng)頁(yè)提交公共算子計(jì)算所需參數(shù),由Web服務(wù)器將參數(shù)寫入數(shù)據(jù)庫(kù)中;
(4.3)守護(hù)進(jìn)程從數(shù)據(jù)庫(kù)中讀取公共算子計(jì)算參數(shù)并解譯得到包含多個(gè)Key-Value鍵值對(duì)的哈希表,Key表示參數(shù)名稱,Value表示參數(shù)值,將哈希表中的所有鍵值對(duì)拼接處理后得到需要進(jìn)行空間數(shù)據(jù)處理任務(wù)的指令表達(dá);(4.4)守護(hù)進(jìn)程運(yùn)行(4.3)中得到的任務(wù)指令,同時(shí)將運(yùn)行輸出信息與日志寫入數(shù)據(jù)庫(kù)中,運(yùn)算所得結(jié)果寫入磁盤;(4.5) Web服務(wù)器從磁盤以及數(shù)據(jù)庫(kù)提取輸出信息與日志,組織后將運(yùn)行輸出、日志、計(jì)算結(jié)果構(gòu)建為網(wǎng)頁(yè)反饋給用戶。用戶獲得運(yùn)算結(jié)果以及輸出信息后,整個(gè)公共算子調(diào)用過程也就結(jié)束;當(dāng)進(jìn)行簡(jiǎn)單空間數(shù)據(jù)處理時(shí),即只進(jìn)行單個(gè)公共算子的使用,整個(gè)流程至此已經(jīng)結(jié)束,此時(shí)用戶已可以通過網(wǎng)頁(yè)將公共算子參數(shù)提交,并獲得運(yùn)算結(jié)果、輸出信息以及日
O(5)公共算子組合如果需要進(jìn)行復(fù)雜空間數(shù)據(jù)處理或者完成特定領(lǐng)域的空間數(shù)據(jù)處理要求,則直接跳過步驟(4),執(zhí)行步驟(5)。(5.1)將步驟(3)中得到的公共算子的可執(zhí)行文件部署到高性能集群上,并編寫守護(hù)進(jìn)程。(5.2)研究要進(jìn)行的復(fù)雜空間數(shù)據(jù)處理或特定領(lǐng)域空間數(shù)據(jù)處理的邏輯結(jié)構(gòu),得到所需公共算子及各個(gè)公共算子之間的邏輯結(jié)構(gòu)關(guān)系,包括公共算子執(zhí)行先后關(guān)系、依賴關(guān)系以及公共算子輸入輸出之間的關(guān)系;(5.3)根據(jù)步驟(5.2)得到的邏輯結(jié)構(gòu)關(guān)系,在可視化復(fù)雜模型編輯器中,將公共算子通過帶方向的連接線組合,得到可視化模型;(5.4)復(fù)雜模型編輯器將所得可視化模型轉(zhuǎn)換為帶有順序的指令集合,同時(shí)將指令集合提交到數(shù)據(jù)庫(kù)中;(5.5)守護(hù)進(jìn)程從數(shù)據(jù)庫(kù)讀取指令集合進(jìn)行解譯,確定依賴關(guān)系后逐步運(yùn)行,并將日志寫入數(shù)據(jù)庫(kù);(5.6)等待步驟(5.5)中所有指令順序依次運(yùn)行完成后,守護(hù)進(jìn)程將空間處理所得結(jié)果寫入磁盤,由Web服務(wù)器反饋給用戶;若運(yùn)行失敗,根據(jù)日志進(jìn)行回滾,并將錯(cuò)誤信息反饋給用戶,至此提高海量空間數(shù)據(jù)處理的方法已經(jīng)構(gòu)建完成。
所述步驟(2.3)中所述區(qū)域分解并行策略實(shí)施步驟為:將偏微分方程中非重疊的區(qū)域進(jìn)行分解,由此將離散化后的方程化為一些獨(dú)立的簡(jiǎn)單方程求解問題和一個(gè)與每個(gè)簡(jiǎn)單方程都關(guān)聯(lián)的全局問題;所述功能分解并行策略實(shí)施步驟:用Newton迭代法求解線性方程組時(shí),將解函數(shù)值與求導(dǎo)數(shù)值兩個(gè)獨(dú)立的過程可交由不同的計(jì)算機(jī)負(fù)責(zé)。本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點(diǎn)在于:(I)通過使用權(quán)利要求并行策略設(shè)計(jì)與并行實(shí)現(xiàn)中提出的技術(shù),本發(fā)明能夠充分利用高性能集群計(jì)算優(yōu)勢(shì),大大提高海量空間數(shù)據(jù)的處理效率,充分利用計(jì)算硬件帶來(lái)的性能優(yōu)勢(shì)。本發(fā)明也解決了將空間數(shù)據(jù)引入高性能計(jì)算時(shí)存在的如何根據(jù)空間關(guān)系進(jìn)行矢量數(shù)據(jù)分塊、多節(jié)點(diǎn)進(jìn)程間數(shù)據(jù)通信等問題。(2)使用公共算子構(gòu)建空間數(shù)據(jù)處理并行計(jì)算框架,并行粒度小,可定制性強(qiáng),使用復(fù)雜模型編輯器可以根據(jù)最終應(yīng)用自由組合,從而將空間數(shù)據(jù)處理中的模型應(yīng)用在多個(gè)行業(yè)領(lǐng)域。(3)正如權(quán)利要求中步驟3公共算子調(diào)用所描述,本發(fā)明最終結(jié)果通過Web向用戶免費(fèi)提供服務(wù),非專業(yè)用戶不需要關(guān)心實(shí)現(xiàn)細(xì)節(jié),只提供系統(tǒng)必要輸入即可。服務(wù)端部署在高性能Linux集群上,將復(fù)雜的空間數(shù)據(jù)處理變得更加易用。同時(shí)也為專業(yè)用戶提供了更多的參數(shù)控制,使得計(jì)算結(jié)果更加精確。
圖1為空間數(shù)據(jù)處理公共算子框架;圖2為本發(fā)明方法實(shí)現(xiàn)流程圖;圖3為空間變異函數(shù)擬合并行策略設(shè)計(jì);圖4為高精度曲面建模并行策略設(shè)計(jì);圖5為MSN并行策略設(shè)計(jì);圖6為多單元三明治抽樣并行策略設(shè)計(jì);圖7為四種并行原語(yǔ);圖8為高性能貝葉斯分類器實(shí)現(xiàn)步驟及離散化流程;圖9為高性能貝葉斯分類器結(jié)構(gòu)學(xué)習(xí)與參數(shù)學(xué)習(xí)實(shí)現(xiàn)步驟;圖10為高性能貝葉斯分類器并行效率。
具體實(shí)施例方式如圖1、2所示,本發(fā)明主要包括以下幾個(gè)步驟:公共算子提取空間數(shù)據(jù)處理在資源組織上一般都比較單一,都是基于某一類數(shù)據(jù)的計(jì)算。而在算法上,基于某一類屬性或圖形的計(jì)算時(shí),其計(jì)算相對(duì)簡(jiǎn)單;而在做統(tǒng)計(jì)推斷計(jì)算時(shí),復(fù)雜性會(huì)較高??傊?dāng)所涉及的資源的來(lái)源越多時(shí),空間數(shù)據(jù)處理就越復(fù)雜,其實(shí)現(xiàn)的過程就需要多方面的綜合協(xié)同。本發(fā)明通過將 空間數(shù)據(jù)處理方法按用途分為預(yù)處理、空間特征探索、空間信息計(jì)算、結(jié)果推斷四個(gè)部分,每個(gè)部分包含多個(gè)空間處理模型;確定每個(gè)部分中包含模型的特征,提取其中基礎(chǔ)與通用的部分作為公共算子,確保每個(gè)公共算子是一個(gè)獨(dú)立模塊,其處理結(jié)果可作為其他公共算子的輸入數(shù)據(jù)、條件,或直接為最終結(jié)果;再對(duì)得到的公共算子集進(jìn)行篩選,去除重復(fù)、不可并行的公共算子。數(shù)據(jù)預(yù)處理是對(duì)現(xiàn)有空間數(shù)據(jù)進(jìn)行粗加工,為后續(xù)模型提供其所需格式數(shù)據(jù),提取處理的公共算子包括分布轉(zhuǎn)換、正則化、離散化等??臻g特征探索是對(duì)空間分布、相關(guān)性進(jìn)行嘗試性計(jì)算,得到空間數(shù)據(jù)整體與局部的聚類特征,可提取的公共算子包括Moran’1、Getis G、空間掃描統(tǒng)計(jì)等??臻g信息計(jì)算目的是得到面域的總體特征參數(shù)以及通過空間插值將離散樣本值變成連續(xù)面域,提取的公共算子包括半變異函數(shù)、分塊矩陣轉(zhuǎn)換、矩陣特征值求解等。結(jié)果推斷是由已知樣本信息訓(xùn)練模型后推斷未知樣本值,提取的公共算子包括極大似然估計(jì)、EM、樸素貝葉斯等。公共算子并行策略設(shè)計(jì)將上一步中得到的公共算子劃 分為更細(xì)致的計(jì)算單元,每個(gè)計(jì)算單元只進(jìn)行一次最簡(jiǎn)單的完整計(jì)算操作,求期望、對(duì)數(shù)等。計(jì)算單元之間為順序串行,內(nèi)部實(shí)現(xiàn)為并行。逐個(gè)判斷計(jì)算單元的類型,制定數(shù)據(jù)分塊分發(fā)策略。若計(jì)算單元全部為本地計(jì)算Local或鄰域計(jì)算Focal,柵格數(shù)據(jù)按行進(jìn)行分塊,矢量數(shù)據(jù)需考慮空間拓?fù)潢P(guān)系,按照單一節(jié)點(diǎn)數(shù)據(jù)完整性的原則進(jìn)行分塊;如果包含全局計(jì)算Global,所有節(jié)點(diǎn)運(yùn)算都需要數(shù)據(jù),因此不進(jìn)行分塊,而將數(shù)據(jù)發(fā)送所所有節(jié)點(diǎn),發(fā)送采用廣播策略,每個(gè)進(jìn)程得到數(shù)據(jù)之后加入廣播者,向其它進(jìn)程發(fā)送。數(shù)據(jù)分塊策略設(shè)計(jì)完成后,需要進(jìn)行計(jì)算單元的并行策略設(shè)計(jì)。計(jì)算單元分為全局參數(shù)計(jì)算以及單樣本值循環(huán)計(jì)算。首先,進(jìn)行全局參數(shù)計(jì)算的并行策略設(shè)計(jì),一般是對(duì)計(jì)算公式本身進(jìn)行分解,將計(jì)算內(nèi)容分配給多個(gè)進(jìn)程。并行策略有區(qū)域分解、功能分解。區(qū)域分解并行策略實(shí)施步驟:將偏微分方程中非重疊的區(qū)域進(jìn)行分解,由此將離散化后的方程化為一些獨(dú)立的小規(guī)模問題和一個(gè)與每個(gè)小問題都關(guān)聯(lián)的全局問題。功能分解并行策略實(shí)施步驟:用Newton迭代法求解線性方程組時(shí),將解函數(shù)值與求導(dǎo)數(shù)值兩個(gè)獨(dú)立的過程可交由不同的計(jì)算機(jī)負(fù)責(zé)。然后,進(jìn)行單樣本值循環(huán)計(jì)算的并行策略設(shè)計(jì),由于每一次的計(jì)算只依賴各樣本值與全局參數(shù),與其他樣本計(jì)算無(wú)關(guān),可采用數(shù)據(jù)并行策略,將樣本平均分配至各個(gè)進(jìn)程。每個(gè)公共算子的詳細(xì)并行策略設(shè)計(jì)如下:(I)數(shù)據(jù)預(yù)處理正則化及分布轉(zhuǎn)換采用了數(shù)據(jù)分塊與異步并行相結(jié)合的策略,可處理多變量數(shù)據(jù),用戶可進(jìn)行多維度選擇的正則化及函數(shù)轉(zhuǎn)換;離散化的目標(biāo)是將數(shù)值類型的數(shù)據(jù)采用優(yōu)化的算法離散化,便于在分類學(xué)習(xí)中取得最優(yōu)的效果。離散化并行策略主要采用同步并行算法以及流水線技術(shù)。在計(jì)算候選斷點(diǎn)時(shí),按照數(shù)據(jù)并行,各個(gè)進(jìn)程分別計(jì)算斷點(diǎn),再匯總至跟進(jìn)程。在篩選斷點(diǎn)時(shí),各個(gè)進(jìn)程分別計(jì)算斷點(diǎn)重要性,并得到每個(gè)進(jìn)程重要性最大的點(diǎn),進(jìn)行reduce操作得到重要性最大的斷點(diǎn),根據(jù)一致性要求判斷是否繼續(xù)循環(huán)。(2)空間相關(guān)性探索空間變異函數(shù)擬合,采用不同函數(shù)擬合,再采用R2選擇最優(yōu)的擬合參數(shù)。并行策略設(shè)計(jì)如圖3所示,總體層面上采用異步并行,而下一級(jí)則可采用區(qū)域分解方法計(jì)算不同方向的變異性。將采用同步并行的設(shè)計(jì)策略,選擇最優(yōu)的模型,提高求解效率。由主進(jìn)程根據(jù)η個(gè)子進(jìn)程結(jié)果選擇R2最大即精度最高的變異函數(shù)模型。
(3)空間插值(一)克里格插值,由于插值的批量性,因此可以將每個(gè)點(diǎn)的插值運(yùn)算分配給一個(gè)MPI進(jìn)程,以獲得非常好的并行性和性能增益。當(dāng)計(jì)算資源遠(yuǎn)遠(yuǎn)大于需要插值點(diǎn)數(shù)量時(shí),考慮對(duì)內(nèi)含的The K-th nearest neighbor運(yùn)算和求解線性方程組運(yùn)算進(jìn)行并行優(yōu)化。插值的兩個(gè)步驟:Ca)找到距離目標(biāo)點(diǎn)最近的N個(gè)點(diǎn);(b)使用某種插值方法計(jì)算結(jié)果。對(duì)于Kriging插值,兩個(gè)步驟演變?yōu)?The nearest K-th neighbor與求解線性方程組。公共算子1:最近鄰算法,具體實(shí)現(xiàn)方法:(a)原始算法:brute_force (暴力法);(b)串行的優(yōu)化算法:基于空間劃分及索引樹的算法,典型算法如ANN ; (c)并行算法:分治法(對(duì)每部分?jǐn)?shù)據(jù)計(jì)算結(jié)果合并)。公共算子2:求解線形方程組使用成熟的并行線性代數(shù)庫(kù),如Linpack或IntelKernal Math Library ;若求解的方程組階數(shù)不高,采用區(qū)域分解、功能分解策略實(shí)現(xiàn),將每個(gè)線性方程組放在單機(jī)上運(yùn)行,以降低通信成本。區(qū)域分解并行策略實(shí)施步驟:將偏微分方程中非重疊的區(qū)域進(jìn)行分解,由此將離散化后的方程化為一些獨(dú)立的小規(guī)模問題和一個(gè)與每個(gè)小問題都關(guān)聯(lián)的全局問題。功能分解并行策略實(shí)施步驟:用Newton迭代法求解線性方程組時(shí),將解函數(shù)值與求導(dǎo)數(shù)值兩個(gè)獨(dú)立的過程可交由不同的計(jì)算機(jī)負(fù)責(zé)。(二)高精度曲面
高精度曲面建模,并行策略設(shè)計(jì)如圖4所示,根本問題是求解約束最小二乘的問題,通過迭代,獲得數(shù)值曲面快速高效進(jìn)行溫度插值。并行策略總體采用對(duì)稱模式,上層采用區(qū)域分解策略。通過將最終問題分解,轉(zhuǎn)化為空間變異自動(dòng)擬合、塊三角變換方程求解、最小二乘法求解三個(gè)部分,三個(gè)公共算子內(nèi)部的并行策略都采用區(qū)域分解。(4)面域總體參數(shù)估計(jì)(a) MSN即異質(zhì)表面均值的無(wú)偏最優(yōu)估計(jì),可以提高研究區(qū)面域均值估計(jì)精度。并行策略設(shè)計(jì)如圖5所示,總體上采用主從模式,最上層采用區(qū)域分解的并行化策略。主要轉(zhuǎn)化為空間變異自動(dòng)擬合、高斯方程無(wú)偏最優(yōu)求解兩個(gè)公共算子的并行,并行策略均為區(qū)域分解。(b)多單元三明治抽樣并行策略設(shè)計(jì)如圖6所示,總體上采用主從模式,將所求問題轉(zhuǎn)化為空間變異自動(dòng)擬合、相似性系數(shù)的計(jì)算、高斯方程無(wú)偏最優(yōu)求解三個(gè)基本公共算子,公共算子內(nèi)部并行策略均為區(qū)域分解。Sandwich空間抽樣模型,將由分層的相似性計(jì)算及無(wú)偏最優(yōu)估計(jì)的高斯方程合成。(5)空間分類空間DAG分類推斷,該模型基于貝葉斯網(wǎng)絡(luò),融入了空間因子。包括網(wǎng)絡(luò)結(jié)構(gòu)的學(xué)習(xí)、網(wǎng)絡(luò)參數(shù)的學(xué)習(xí)、網(wǎng)絡(luò)推理三個(gè)步驟,每個(gè)步驟采用不同的并行策略。網(wǎng)絡(luò)結(jié)構(gòu)的學(xué)習(xí),一般包括兩個(gè)方面模型選擇與模型優(yōu)化,模型選擇決定了評(píng)判不同模型優(yōu)劣的準(zhǔn)則,如打分算法(包括K2、BIC、AIC等),而模型優(yōu)化是將最優(yōu)模型尋找出來(lái),如爬山算法。打分函數(shù)單次操作時(shí)間不長(zhǎng),但是需要反復(fù)調(diào)用,因此不需要對(duì)打分函數(shù)內(nèi)部實(shí)現(xiàn)并行。爬山算法是一種元啟發(fā)局部搜索算法,包括三種局部算子(增加邊、刪除邊、反轉(zhuǎn)邊)。具體實(shí)現(xiàn)是在你給定的初始結(jié)構(gòu)選擇能改善貝葉斯網(wǎng)絡(luò)的得分的算子,不斷迭代。每次都需要尋找能夠最大提高貝葉斯網(wǎng)絡(luò)得分的局部算子,可以將每次運(yùn)算分配至多個(gè)線程進(jìn)行計(jì)算,再采用Reduce操作得到最優(yōu)局部算子,執(zhí)行完成局部算子之后,重新計(jì)算可執(zhí)行的局部算子操作集合,重新分配任務(wù)計(jì)算,不斷重復(fù),直至網(wǎng)絡(luò)得分不再提高。網(wǎng)絡(luò)參數(shù)的學(xué)習(xí)是在給定拓?fù)浣Y(jié)構(gòu)的前提下,確定各節(jié)點(diǎn)的條件概率分布。本發(fā)明中現(xiàn)使用的參數(shù)學(xué)習(xí)方法是EM。具體實(shí)現(xiàn)分為E-M兩步,E步主要采用數(shù)據(jù)并行分隔的策略,每次的計(jì)算都是只依賴單一樣本,所有計(jì)算完成后進(jìn)行通信得到最終結(jié)果即可。在M步利用BN的條件獨(dú)立性和E步的期望充分統(tǒng)計(jì)因子,利用完整數(shù)據(jù)集下的似然函數(shù)可分解性,并行計(jì)算各個(gè)局部似然函數(shù)。網(wǎng)絡(luò)的推理,采用數(shù)據(jù)分塊并行策略。每次的推理操作都只需要當(dāng)前樣本影響因子數(shù)據(jù)與帶條件概率的貝葉斯網(wǎng)絡(luò),便可對(duì)決策因子進(jìn)行分類。因此,并行策略設(shè)計(jì)也僅僅針對(duì)數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行分塊即可。(6)時(shí)空模式識(shí)別時(shí)空掃描統(tǒng)計(jì),熱點(diǎn)/聚集區(qū)域探測(cè)并行化方案:(一)選擇候選聚集區(qū):a.將全部格網(wǎng)點(diǎn)分為η個(gè)互不相交的子集,分配給η個(gè)并行進(jìn)程;b.分別計(jì)算得到子集內(nèi)沒有重復(fù)的候選聚集區(qū)域集合;c.對(duì)于每?jī)蓚€(gè)子集合,進(jìn)行重復(fù)候選聚集區(qū)域的剔除。(二)基于真實(shí)觀察數(shù)據(jù),找到最大可能的聚集區(qū)域:a.將真實(shí)觀察病例值分配到η個(gè)并行進(jìn)程中;b.分別針對(duì)其包括的候選聚集區(qū)域,計(jì)算似然比值;c.找到使似然比值最大化的那個(gè)最大可能聚集區(qū)域。(三)MonteCarlo模擬,計(jì)算最大化`儲(chǔ)在各個(gè)并行進(jìn)程中。(4)計(jì)算最大可能聚集區(qū)域的統(tǒng)計(jì)顯著性P值:a.在每一個(gè)并行進(jìn)程中,分別進(jìn)行最大化似然并值的排序;b.將兩兩進(jìn)程的排序結(jié)果進(jìn)行合并,直到最后合并為一個(gè)包含全部N個(gè)似然比值的排序后序列。公共算子并行實(shí)現(xiàn)根據(jù)已經(jīng)設(shè)計(jì)的并行策略,將每個(gè)公共算子進(jìn)行并行。在分布式網(wǎng)絡(luò)計(jì)算機(jī)系統(tǒng)中,采用消息傳遞方法實(shí)現(xiàn)進(jìn)程間的通訊。當(dāng)前流行的基于消息傳遞的并行編程環(huán)境是MPI (Message Passing Interface)和 PVM (Parallel Virtual Machine),其中消息傳遞接口 MPI以其移植性好、功能強(qiáng)大、高效等優(yōu)點(diǎn)而成為目前最重要的并行編程工具。根據(jù)步驟2中提到的三種運(yùn)算,基于MPI設(shè)計(jì)四種并行原語(yǔ)(Map、Reduce、Broadcast、Multiplex)。如圖7所示,具體是通過對(duì)MPI的函數(shù)進(jìn)行擴(kuò)展,提高其在進(jìn)行大數(shù)據(jù)尤其是空間數(shù)據(jù)時(shí)的傳輸效率。與普通的Map-Reduce相比,并行粒度更細(xì)、多狀態(tài)(Multiple Stages)、且它們的通信機(jī)制不同。(a) Map操作基于MPI_Scatter、MPI_Send、MPI_Recv實(shí)現(xiàn),用于將原始數(shù)據(jù)、中間數(shù)據(jù)分發(fā)到當(dāng)前通信域的所有進(jìn)程。柵格數(shù)據(jù)對(duì)應(yīng)整型或浮點(diǎn)型,屬于MPI默認(rèn)支持類型,直接發(fā)送;矢量數(shù)據(jù)需序列化為二進(jìn)制串,再以Char類型發(fā)送。(b) Reduce操作基于MPI_RedUCe實(shí)現(xiàn),將各個(gè)進(jìn)程計(jì)算的結(jié)果匯總至根進(jìn)程。(c) Broadcast操作基于MPI_Bcast實(shí)現(xiàn),將單一進(jìn)程的結(jié)構(gòu)廣播至所有進(jìn)程。(d) Multiplex 操作基于 MPI_Gatherall、MPI_Bcast、MPI_Send、MPI_Recv 實(shí)現(xiàn),將所有進(jìn)程的讀取的數(shù)據(jù)或計(jì)算結(jié)果廣播給所有進(jìn)程。下面以Moran’ s I為例,說明公共算子并行實(shí)施的具體步驟。在本文中需要對(duì)樣本所有影響因子變量逐個(gè)計(jì)算局部Moran’ s I值,每次計(jì)
算分為三個(gè)階段(求期望^求
-.f>s:求 Σ: Zj Wt, (J1- Mm -1)三階段之間串行執(zhí)行,三階段內(nèi)部并行執(zhí)行。樣
本數(shù)據(jù)分塊后,前兩個(gè)階段都只需塊內(nèi)運(yùn)算后匯總至主進(jìn)程,再?gòu)V播到所有進(jìn)程。最后一個(gè)階段不僅包含塊內(nèi)運(yùn)算,還需進(jìn)行塊間運(yùn)算,將塊內(nèi)塊間值求和。塊間運(yùn)算需要發(fā)送大量數(shù)據(jù),采用進(jìn)程間互相發(fā)送數(shù)據(jù)的方式,避免每個(gè)進(jìn)程都過多等待。Moran’ s I并行計(jì)算的具體步驟如下:(I)進(jìn)程O分塊讀取柵格圖像信息,并輪流發(fā)給其他進(jìn)程;(2)所有進(jìn)程計(jì)算接收到的塊,并計(jì)算塊中觀測(cè)值的總和;(3)通過Reduce計(jì)算所有觀測(cè)值的總和并計(jì)算平均值,同時(shí)將平均值廣播到所有進(jìn)程;(4)所有進(jìn)程計(jì)算本進(jìn)程內(nèi)數(shù)據(jù)塊 Σ Λ -1r與 IΣ; 1 - -5>..
(5)每個(gè)進(jìn)程都廣播自己收到的塊到其他進(jìn)程。每個(gè)進(jìn)程在收到塊后,將其與自己在步驟I中接收到的塊進(jìn)行交叉運(yùn)算(Multiplex),分別計(jì)算出 τ'Χ,'果-為H
(6)通過Reduce獲得各個(gè)進(jìn)程獄S)1和與 [iΣ<氣_ ~ ~和,并
得到最終的Moran’ s I值;(7)將Moran’ s I值寫入樣本屬性中。公共算子調(diào)用每個(gè)公共算子在步驟3中實(shí)現(xiàn)之后都會(huì)編譯為一個(gè)可單獨(dú)執(zhí)行的文件,可由守護(hù)進(jìn)程(守護(hù)進(jìn)程是一個(gè)在Linux系統(tǒng)下的服務(wù),用以進(jìn)行運(yùn)算任務(wù)調(diào)度、執(zhí)行,同時(shí)將計(jì)算結(jié)果與日志寫入服務(wù)器數(shù)據(jù)庫(kù))進(jìn)行不同參數(shù)的調(diào)用。具體操作步驟如下:(a)用戶在客戶端瀏覽器通過網(wǎng)頁(yè)提交需要進(jìn)行公共算子計(jì)算的參數(shù),Web服務(wù)器將參數(shù)寫入服務(wù)器數(shù)據(jù)庫(kù)中;(b)守護(hù)進(jìn)程從服務(wù)器數(shù)據(jù)庫(kù)中讀取參數(shù),對(duì)各部分參數(shù)進(jìn)行拼接處理得到需要執(zhí)行的任務(wù);(C)守護(hù)進(jìn)程將任務(wù)提交,運(yùn)行指令,并通過管道技術(shù)截取程序運(yùn)行輸出信息與日志,將其寫入服務(wù)器數(shù)據(jù)庫(kù)中,運(yùn)算所得結(jié)果寫入服務(wù)器磁盤;(d) Web服務(wù)器從服務(wù)器磁盤以及數(shù)據(jù)庫(kù)提取輸出信息與日志,組織后將運(yùn)行輸出、日志、計(jì)算結(jié)果構(gòu)建為網(wǎng)頁(yè)反饋給用戶;專業(yè)用戶也可在客戶端安裝ssh,然后以命令行的方式進(jìn)行調(diào)用。命令行調(diào)用時(shí)可供選擇的參數(shù)會(huì)更多一些,以下是數(shù)據(jù)預(yù)處理與空間DAG分類推斷的調(diào)用命令即詳細(xì)參數(shù)說明。(I)數(shù)據(jù)預(yù)處理mpirun-np2GeoPreprocessing-a2-coO-kO-p gps_people_s.csv-cO,1,2~o re_dis.csv
參數(shù)解釋:-a0表示log算法,I表示normal算法,2表示離散化算法-p表示輸入文件路徑-O表示輸入文件路徑-C表示需要計(jì)算的列,從O開始;柵格數(shù)據(jù)則表示波段-CO表不是否輸出離散話完成后的分類信息,O表不不輸出,I表不輸出,默認(rèn)為O-k表示是否使用k-mean聚類對(duì)斷點(diǎn)進(jìn)行篩選,O表示不使用,I表示使用,默認(rèn)為
O
-C表示離散化算法中決策屬性所在的列(2)空間DAG分類推斷mpirun-np2ParBayes - a StrLeaning—HC_p re_dis.csv-cn2-dn6_c0,1,2,3,4_a表示進(jìn)行結(jié)構(gòu)學(xué)習(xí)或者參數(shù)學(xué)習(xí)的算法-P表示輸入文件路徑-C表示需要計(jì)算的列,從O開始-cn表示普通節(jié)點(diǎn)的節(jié)點(diǎn)大小,即取值類別,默認(rèn)為2-dn表示決策節(jié)點(diǎn)的節(jié)點(diǎn)大小,默認(rèn)為6公共算子組合每個(gè)公共算子一般只負(fù)責(zé)特定功能與算法的實(shí)現(xiàn),例如離散化公共算子、變異函數(shù)公共算子,要實(shí)現(xiàn)復(fù)雜的功能或者針對(duì)特定領(lǐng)域定制一些功能,必須將多個(gè)公共算子按一定結(jié)構(gòu)組合為復(fù)雜模型。每個(gè)公共算子都有各自算法參數(shù)與接口,基于公共算子的空間數(shù)據(jù)處理并行框架通過提供一個(gè)可視化的復(fù)雜模型編輯器,來(lái)輔助用戶將各個(gè)業(yè)務(wù)的邏輯結(jié)構(gòu)通過可視化模型表達(dá)出來(lái),進(jìn)而由并行框架將其轉(zhuǎn)化為在服務(wù)器可以執(zhí)行的命令運(yùn)行。并行框架調(diào)用公共算子時(shí)不僅內(nèi)部可以并行,不存在依賴的公共算子之間也可以并行,進(jìn)而提高整個(gè)復(fù)雜模型的運(yùn)行效率。具體實(shí)現(xiàn)步驟如下:(a)研究業(yè)務(wù)的邏輯結(jié)構(gòu),得到所需公共算子及各個(gè)公共算子之間的邏輯結(jié)構(gòu)關(guān)系;(b)根據(jù)5.1得到的邏輯結(jié)構(gòu),在可視化復(fù)雜模型編輯器中,將公共算子通過帶方向的連接線組合,得到可視化模型;(c)模型編輯完成后,由復(fù)雜模型編輯器將所得可視化模型轉(zhuǎn)換為帶有順序的指令集合,同時(shí)將指令集合提交到服務(wù)器數(shù)據(jù)庫(kù)中;(d)守護(hù)進(jìn)程從服務(wù)器數(shù)據(jù)庫(kù)讀取指令集合進(jìn)行解譯,確定依賴關(guān)系后逐步運(yùn)行,并將日志寫入服務(wù)器數(shù)據(jù)庫(kù)中;(e)等待5.4中所有指令順序依次運(yùn)行完成后,守護(hù)進(jìn)程將空間處理所得結(jié)果寫入服務(wù)器,由Web服務(wù)器反饋給用戶;若運(yùn)行失敗,根據(jù)日志進(jìn)行回滾,并將錯(cuò)誤信息反饋給用戶。下面以高性能貝葉斯分類器為例說明本發(fā)明實(shí)施的具體步驟:(I)數(shù)據(jù)說明(示例數(shù)據(jù)可從http://159.226.110.219/網(wǎng)站下載)測(cè)試案例:通過已知樣本(軌跡數(shù)據(jù))的信息,研究影響因子變量(如移動(dòng)速度、人的活動(dòng)度等)與類別變量(人的活動(dòng)狀態(tài))之間的關(guān)系,進(jìn)而對(duì)目標(biāo)變量未知的樣本進(jìn)行分類推斷。影響因子變量:移動(dòng)速度、人的活動(dòng)度、前后10分鐘內(nèi)的最大速度、10分鐘中前后的距離差、GPS的測(cè)量參數(shù)等17個(gè)特征變量。類別變量:人的活動(dòng)狀態(tài),包括屋里、屋外、屋外工作中或者是在車?yán)?。?shù)據(jù)量:已知類別變量的12萬(wàn)行矢量數(shù)據(jù)。采用90%的數(shù)據(jù)進(jìn)行學(xué)習(xí),并推斷剩余10%樣本的類別變量,與真實(shí)值進(jìn)行比較得到推斷準(zhǔn)確率。(2)測(cè)試環(huán)境利用上述數(shù)據(jù),在集群環(huán)境上對(duì)本文實(shí)現(xiàn)的并行貝葉斯分類器進(jìn)行了測(cè)試。集群為四個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)兩顆Intel (R) Quad Core E5520Xeon (R) CPU,共計(jì)八個(gè)核心,擁有16G獨(dú)立內(nèi)存、200G磁盤,節(jié)點(diǎn)之間連接帶寬都為千兆以太網(wǎng)。(3)實(shí)施步驟如圖8所示,整個(gè)實(shí)施過程主要分為數(shù)據(jù)預(yù)處理(離散化),貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)學(xué)習(xí),貝葉斯網(wǎng)絡(luò)參數(shù)學(xué)習(xí),貝葉斯網(wǎng)絡(luò)分類推斷。離散化是將連續(xù)性變量變成離散的(分類),離散化后的變量抗干擾性強(qiáng)。由于貝葉斯網(wǎng)絡(luò)學(xué)習(xí)時(shí)需要離散化的數(shù)據(jù),而通常獲得的樣本屬性大多都是連續(xù)的(例如:人的活動(dòng)度、GPS的各項(xiàng)參數(shù)等),因此首先要對(duì)數(shù)據(jù)進(jìn)行離散化。本發(fā)明所使用算法是基于斷點(diǎn)重要性來(lái)計(jì)算??臻gDAG分 類推斷,主要使用的是貝葉斯網(wǎng)絡(luò)。如圖9所示,網(wǎng)絡(luò)結(jié)構(gòu)的學(xué)習(xí),采用爬山算法,得到在局部與總體都是最優(yōu)的貝葉斯網(wǎng)絡(luò);網(wǎng)絡(luò)參數(shù)的學(xué)習(xí),采用EM (極大似然算法)得到帶有先驗(yàn)概率的貝葉斯網(wǎng)絡(luò);網(wǎng)絡(luò)的推理,采用Naive Bayes (樸素貝葉斯)。具體調(diào)用方式包括以下三種方法:(一)每個(gè)公共算子在模型編輯器中都作為一個(gè)對(duì)象,輸入輸出以及參數(shù)與對(duì)象之間的關(guān)系可以通過帶有方向的連接線表達(dá)。(二)登陸網(wǎng)站http://159.226.110.219/,注冊(cè)用戶后,在導(dǎo)航欄選擇添加內(nèi)容->數(shù)據(jù)預(yù)處理_離散化,輸入計(jì)算所需參數(shù)(數(shù)據(jù)過大時(shí)可以通過ftp上傳,然后輸入文件處選擇File attach即可)。同理根據(jù)圖7中的步驟依次進(jìn)行其他操作,得到最終結(jié)果。(三)ssh中輸入命令直接運(yùn)行mpirun-np4GeoPreprocessing-a2-coO-kO-p gps_people_s.shp-cO-17-o re_dis.csvmpirun~np4ParBayes - a StrLeaning—HC_p re_dis.shp-cO-17 - o re.strmpirun-np4ParBayes - a ParLeaning_EM-p re_dis.shp - s re.str_c0_17 - ore.bysmpirun-np4ParBayes - a Inferring—Naive-p data—infer, shp - b re.bys-cO-17(4)計(jì)算結(jié)果并行效率是用來(lái)表示并行計(jì)算算法加速情況的指標(biāo),η核心并行效率計(jì)算公式為
其中,tn表示η個(gè)核心執(zhí)行算法所用時(shí)間,h表示單核心執(zhí)行時(shí)間。貝葉斯分類器平均并行效率為0.84,各步驟并行效率如圖8所示,可以大大提高海量空間數(shù)據(jù)的分類推斷效率。對(duì)最終分類結(jié)果進(jìn)行十倍交叉驗(yàn)證時(shí),推斷準(zhǔn)確率(Pd值)為0.85。圖10中ABCD四條曲線依次表示離散化、爬山算法、EM算法、樸素貝葉斯算法四個(gè)公共算子的并行效率。由于進(jìn)程間通信以及算法存在不可并行化部分,并行效率隨著進(jìn)程數(shù)增加會(huì)下降。曲線斜率,即下降快慢則是由通信次數(shù)、通信量、算法本身可并行部分所占比例三個(gè)因素決定的。總體上看,并行貝葉斯分類器并行效率較高,在進(jìn)行海量空間數(shù)據(jù)分類預(yù)測(cè)時(shí)對(duì)效率的提升非常明顯,同時(shí)也證明了本發(fā)明對(duì)于提高海量空間數(shù)據(jù)處理效率是有效的。對(duì)于離散化的并行,32個(gè)核心時(shí)并行效率仍可達(dá)到0.8 (圖10中A曲線),這主要是由于離散化時(shí)候選斷點(diǎn)選取、斷點(diǎn)重要性計(jì)算、斷點(diǎn)篩選大部分運(yùn)算都可在本地進(jìn)行,通信開銷非常小。采用BIC打分算法與爬山優(yōu)化算法的貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)學(xué)習(xí)的平均并行效率為
0.77 (圖10中B曲線)。隨著迭代次數(shù)增加,并行效率同比會(huì)下降,原因在每次迭代都會(huì)隨機(jī)生成DAG,此步驟無(wú)法進(jìn)行并行,且每一次進(jìn)行局部算子運(yùn)算時(shí)都需要進(jìn)行通信,獲取得分最高的局部算子,并廣播得分值、操作類型、參與節(jié)點(diǎn)。貝葉斯網(wǎng)絡(luò)參數(shù)學(xué)習(xí)采用EM算法,平均并行效率為0.80 (圖10中C曲線)。E步驟中每個(gè)樣本的期望充分統(tǒng)計(jì)因子的計(jì)算彼此獨(dú)立,具有很好的數(shù)據(jù)并行性。而M步驟也可通過分解似然函數(shù),進(jìn)行少量通信并行。但M步使用進(jìn)程個(gè)數(shù)最多只能等于變量個(gè)數(shù),在變量較少時(shí)M步的并 行度不高。由于整個(gè)計(jì)算M步耗費(fèi)時(shí)間很少,所以并行效率較。推斷分類采用樸素貝葉斯,平均并行效率為0.82 (圖10中D曲線)。每個(gè)樣本的分類相互獨(dú)立,且只依賴于已知的帶條件概率的貝葉斯網(wǎng)絡(luò),進(jìn)行數(shù)據(jù)分塊并行后,完全不需要通信,各進(jìn)程分別將運(yùn)算結(jié)果寫入磁盤或數(shù)據(jù)庫(kù),因此并行效率很好。本發(fā)明未詳細(xì)闡述部分屬于本領(lǐng)域公知技術(shù)。以上所述,僅為本發(fā)明部分具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本領(lǐng)域的人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種提高海量空間數(shù)據(jù)處理效率的方法,其特征在于包括以下步驟: (1)公共算子提取 (1.1)將空間數(shù)據(jù)處理方法按輸入輸出、實(shí)現(xiàn)思路、功能用途不同分為預(yù)處理、空間特征探索、空間信息計(jì)算和結(jié)果推斷四個(gè)部分,每個(gè)部分包含多個(gè)空間處理模型,單個(gè)模型能夠完成一個(gè)完整的空間數(shù)據(jù)處理功能; (1.2)研究(1.1)中每個(gè)部分所包含的空間處理模型,依據(jù)功能完整性與不可分割性原貝U,將空間處理模型分拆為多個(gè)獨(dú)立模塊,每個(gè)模塊都作為一個(gè)公共算子,其處理結(jié)果作為后續(xù)流程上其他公共算子的輸入數(shù)據(jù)、輸入條件或直接為最終結(jié)果; (1.3)對(duì)提取到的公共算子集進(jìn)行篩選,去除重復(fù),得到需要進(jìn)行并行化加速處理的公共算子集; 至此已將所有空間數(shù)據(jù)處理方法中的公共算子提取出來(lái),繼而需要對(duì)公共算子進(jìn)行并行化處理實(shí)現(xiàn)加速; (2)公共算子并行策略設(shè)計(jì) (2.1)將步驟(1.3)中得到的每個(gè)公共算子劃分為更細(xì)致的計(jì)算單元,單個(gè)計(jì)算單元只進(jìn)行一次最簡(jiǎn)單的完整計(jì)算操作,求期望和對(duì)數(shù);計(jì)算單元之間為順序串行,內(nèi)部實(shí)現(xiàn)為并行; (2.2)逐個(gè)判斷計(jì)算單元的類型,制定數(shù)據(jù)分塊分發(fā)策略,若計(jì)算單元全部為本地計(jì)算Local或鄰域計(jì)算Focal,柵格數(shù)據(jù)按行進(jìn)行分塊,矢量數(shù)據(jù)需考慮空間拓?fù)潢P(guān)系,按照單一節(jié)點(diǎn)數(shù)據(jù)完整性的原則進(jìn)行分塊; 如果包含全局計(jì)算Global,所有節(jié)點(diǎn)運(yùn)算都需要數(shù)據(jù),因此不進(jìn)行分塊,而將數(shù)據(jù)發(fā)送所有節(jié)點(diǎn),發(fā)送采用廣播策略,進(jìn)行廣播時(shí)的基本單元為進(jìn)程,一個(gè)進(jìn)程就是一個(gè)計(jì)算與通信單元,通常為CPU中的一個(gè)核心,每個(gè)進(jìn)程得到數(shù)據(jù)之后加入廣播者,向本節(jié)點(diǎn)的剩余進(jìn)程與其它節(jié)點(diǎn)的所有進(jìn)程發(fā)送; (2.3)數(shù)據(jù)分塊策略設(shè)計(jì)完成后,需要進(jìn)行計(jì)算單元的并行策略設(shè)計(jì)。計(jì)算單元分為全局參數(shù)計(jì)算以及單樣本值循環(huán)計(jì)算。首先,進(jìn)行全局參數(shù)計(jì)算的并行策略設(shè)計(jì),并行策略有區(qū)域分解、功能分解,由于全局參數(shù)計(jì)算表達(dá)為一個(gè)數(shù)學(xué)公式,對(duì)該公式進(jìn)行分解,將需要進(jìn)行處理的空間數(shù)據(jù)分配給多個(gè)進(jìn)程; (2.4)進(jìn)行單樣本值循環(huán)計(jì)算的并行策略設(shè)計(jì),由于每一次的計(jì)算只依賴各樣本值與全局參數(shù),與其他樣本計(jì)算無(wú)關(guān),可采用數(shù)據(jù)并行策略,將樣本平均分配至各個(gè)進(jìn)程; 至此,所有公共算子的并行策略已經(jīng)設(shè)計(jì)完成,依據(jù)制定的并行策略,采用特定編程語(yǔ)言以及并行接口實(shí)現(xiàn)公共算子; (3)公共算子并行實(shí)現(xiàn) (3.1)根據(jù)步驟(2)中提到的數(shù)據(jù)分塊分發(fā)策略與計(jì)算單元的并行策略,基于MPI即Message Passing Interface,基于消息傳遞接口的并行庫(kù),設(shè)計(jì)四種并行原語(yǔ),包括分發(fā)Map、規(guī)約Reduce、廣播Broadcast、交叉運(yùn)算Multiplex,從而實(shí)現(xiàn)對(duì)MPI函數(shù)庫(kù)的擴(kuò)展,提高公共算子在大數(shù)據(jù)條件下尤其是海量空間數(shù)據(jù)的傳輸效率; (3.2)依據(jù)步驟(3.1)中的四種并行原語(yǔ)以及MPI函數(shù),采用高級(jí)語(yǔ)言C++編寫代碼,將公共算子進(jìn)行并行化處理,得到高效運(yùn)行的并行公共算子集; (3.3)將步驟(3.2)實(shí)現(xiàn)的公共算子在單節(jié)點(diǎn)與多節(jié)點(diǎn)集群上分別進(jìn)行并行效率測(cè)試,統(tǒng)計(jì)10、通信代價(jià),不斷改進(jìn),直至得到滿足要求的可執(zhí)行并行公共算子;至此,所有的公共算子已經(jīng)并行實(shí)現(xiàn),每個(gè)公共算子都會(huì)編譯成一個(gè)高效運(yùn)行在高性能計(jì)算平臺(tái)上的獨(dú)立可執(zhí)行文件; (4)公共算子調(diào)用 (4.1)將步驟(3.3)中得到的公共算子的可執(zhí)行文件部署到高性能集群上,并編寫守護(hù)進(jìn)程,集群上的守護(hù)進(jìn)程是隨系統(tǒng)啟動(dòng)并在后臺(tái)運(yùn)行的服務(wù),用來(lái)進(jìn)行參數(shù)解析、任務(wù)執(zhí)行、結(jié)果反饋; (4.2)守護(hù)進(jìn)程啟動(dòng)后,用戶即在客戶端瀏覽器通過網(wǎng)頁(yè)提交公共算子計(jì)算所需參數(shù),由Web服務(wù)器將參數(shù)寫入數(shù)據(jù)庫(kù)中; (4.3)守護(hù)進(jìn)程從數(shù)據(jù)庫(kù)中讀取公共算子計(jì)算參數(shù)并解譯得到包含多個(gè)Key-Value鍵值對(duì)的哈希表,Key表示參數(shù)名稱,Value表示參數(shù)值,將哈希表中的所有鍵值對(duì)拼接處理后得到需要進(jìn)行空間數(shù)據(jù)處理任務(wù)的指令表達(dá); (4.4)守護(hù)進(jìn)程運(yùn)行(4.3)中得到的任務(wù)指令,同時(shí)將運(yùn)行輸出信息與日志寫入數(shù)據(jù)庫(kù)中,運(yùn)算所得結(jié)果寫入磁盤; (4.5 )ffeb服務(wù)器從磁盤以及數(shù)據(jù)庫(kù)提取輸出信息與日志,組織后將運(yùn)行輸出、日志、計(jì)算結(jié)果構(gòu)建為網(wǎng)頁(yè)反饋給用戶,用戶獲得運(yùn)算結(jié)果以及輸出信息后,整個(gè)公共算子調(diào)用過程也就結(jié)束; 當(dāng)進(jìn)行簡(jiǎn)單空間數(shù)據(jù)處理時(shí),即只進(jìn)行單個(gè)公共算子的使用,整個(gè)流程至此已經(jīng)結(jié)束,此時(shí)用戶已可以通過網(wǎng)頁(yè)將公共算子參數(shù)提交,并獲得運(yùn)算結(jié)果、輸出信息以及日志; (5)公共算子組合 如果需要進(jìn)行復(fù)雜空間數(shù)據(jù)處理或者完成特定領(lǐng)域的空間數(shù)據(jù)處理要求,則直接跳過步驟(4),執(zhí)行步驟(5); (5.1)將步驟(3)中得到的公共算子的可執(zhí)行文件部署到高性能集群上,并編寫守護(hù)進(jìn)程; (5.2)研究要進(jìn)行的復(fù)雜空間數(shù)據(jù)處理或特定領(lǐng)域空間數(shù)據(jù)處理的邏輯結(jié)構(gòu),得到所需公共算子及各個(gè)公共算子之間的邏輯結(jié)構(gòu)關(guān)系,包括公共算子執(zhí)行先后關(guān)系、依賴關(guān)系以及公共算子輸入輸出之間的關(guān)系; (5.3)根據(jù)步驟(5.2)得到的邏輯結(jié)構(gòu)關(guān)系,在可視化復(fù)雜模型編輯器中,將公共算子通過帶方向的連接線組合,得到可視化模型; (5.4)復(fù)雜模型編輯器將所得可視化模型轉(zhuǎn)換為帶有順序的指令集合,同時(shí)將指令集合提交到數(shù)據(jù)庫(kù)中; (5.5)守護(hù)進(jìn)程從數(shù)據(jù)庫(kù)讀取指令集合進(jìn)行解譯,確定依賴關(guān)系后逐步運(yùn)行,并將日志寫入數(shù)據(jù)庫(kù); (5.6)等待步驟(5.5)中所有指令順序依次運(yùn)行完成后,守護(hù)進(jìn)程將空間處理所得結(jié)果寫入磁盤,由Web服務(wù)器反饋給用戶;若運(yùn)行失敗,根據(jù)日志進(jìn)行回滾,并將錯(cuò)誤信息反饋給用戶,至此提高海量空間數(shù)據(jù)處理的方法已經(jīng)構(gòu)建完成。
2.根據(jù)權(quán)利要求1所述的提高海量空間數(shù)據(jù)處理效率的方法,其特征在于:所述步驟(2.3)中所述區(qū)域分解并行策略實(shí)施步驟為:將偏微分方程中非重疊的區(qū)域進(jìn)行分解,由此將離散化后的方程化為一些獨(dú)立的簡(jiǎn)單方程 求解問題和一個(gè)與每個(gè)簡(jiǎn)單方程都關(guān)聯(lián)的全局問題;所述功能分解并行策略實(shí)施步驟:用Newton迭代法求解線性方程組時(shí),將解函數(shù)值與求導(dǎo)數(shù)值兩個(gè)獨(dú)立的過程可交由`不同的計(jì)算機(jī)負(fù)責(zé)。
全文摘要
一種提高海量空間數(shù)據(jù)處理效率的方法,步驟為公共算子提取、公共算子并行策略設(shè)計(jì)、公共算子并行實(shí)現(xiàn)、公共算子調(diào)用、公共算子組合等步驟。本發(fā)明通過將空間數(shù)據(jù)處理中的基礎(chǔ)與通用部分提取出來(lái)作為公共算子,基于MPI進(jìn)行并行化,在數(shù)據(jù)規(guī)模上可以處理百萬(wàn)樣本、上百個(gè)屬性的海量空間數(shù)據(jù),而現(xiàn)有空間數(shù)據(jù)處理方法是無(wú)法運(yùn)算的,同時(shí)可以高效正確地進(jìn)行處理,任務(wù)提交、參數(shù)設(shè)定采用網(wǎng)頁(yè)進(jìn)行交互,所有計(jì)算都集中在服務(wù)端高效執(zhí)行完成,客戶端壓力小且操作簡(jiǎn)單。
文檔編號(hào)G06N7/00GK103235974SQ20131014808
公開日2013年8月7日 申請(qǐng)日期2013年4月25日 優(yōu)先權(quán)日2013年4月25日
發(fā)明者李連發(fā), 王陽(yáng), 趙斯思, 王勁峰, 梁金能 申請(qǐng)人:中國(guó)科學(xué)院地理科學(xué)與資源研究所