李 楊,李朝奎,方 軍,吳柏燕,陳愛民
(1. 湖南科技大學(xué) 地理空間信息技術(shù)國(guó)家地方聯(lián)合工程實(shí)驗(yàn)室,湖南 湘潭 411201;2. 湖南科技大學(xué) 地理空間信息湖南省工程實(shí)驗(yàn)室,湖南 湘潭 411201;3. 湘潭市地理空間信息應(yīng)用工程技術(shù)研究中心,湖南 湘潭 411000)
社會(huì)經(jīng)濟(jì)的高速發(fā)展對(duì)自然環(huán)境的影響日益加劇,造成地質(zhì)災(zāi)害頻發(fā)。如何有效監(jiān)測(cè)并預(yù)警地質(zhì)災(zāi)害的發(fā)生、減少災(zāi)害對(duì)人類的損失是一項(xiàng)長(zhǎng)期而艱巨的任務(wù)。一直以來,很多學(xué)者通過建立各種災(zāi)害預(yù)測(cè)模型來對(duì)地質(zhì)災(zāi)害進(jìn)行預(yù)警,比如文獻(xiàn)[1]以模糊綜合評(píng)判法和地質(zhì)-氣象耦合模型為基礎(chǔ)對(duì)滑坡災(zāi)害進(jìn)行預(yù)警;文獻(xiàn)[2]初步建立了較為完善的地質(zhì)災(zāi)害綜合監(jiān)測(cè)自動(dòng)預(yù)警方法體系,實(shí)現(xiàn)了對(duì)不同災(zāi)害類型的自動(dòng)預(yù)警。但上述地質(zhì)災(zāi)害預(yù)警方法僅限于對(duì)單個(gè)地質(zhì)災(zāi)害點(diǎn)進(jìn)行災(zāi)變監(jiān)測(cè)與分析預(yù)警,對(duì)于大范圍地質(zhì)災(zāi)害發(fā)生的情況,預(yù)警速度很慢,難以保證預(yù)警的時(shí)效性。采用并行計(jì)算的方法對(duì)大規(guī)模數(shù)據(jù)進(jìn)行快速處理和計(jì)算,能有效提高地質(zhì)災(zāi)害預(yù)警效率,但并行計(jì)算架構(gòu)的構(gòu)建卻是一個(gè)較難解決的問題。首先,地質(zhì)災(zāi)害預(yù)警所采用的數(shù)據(jù)是由多種監(jiān)測(cè)儀器采集的多源數(shù)據(jù),并行計(jì)算架構(gòu)中對(duì)多源數(shù)據(jù)的存儲(chǔ)和調(diào)用是需要解決的問題之一;其次,在地質(zhì)災(zāi)害并行計(jì)算中需要使用到矢量空間數(shù)據(jù)和多源監(jiān)測(cè)數(shù)據(jù)在計(jì)算節(jié)點(diǎn)間的通信[3],這又是需要解決的另一問題;再次,采用怎樣的并行計(jì)算方法對(duì)計(jì)算任務(wù)分解能最大限度地達(dá)到提高預(yù)警效率的目的,同樣是要思考的問題。
當(dāng)前較為主流的并行計(jì)算框架有Hadoop MapReduce、Spark、Phoenix、Disco、Mars等,但這些并行計(jì)算框架的共同特點(diǎn)是需要搭建大型的并行計(jì)算平臺(tái),而高性能服務(wù)器較為昂貴,而且要進(jìn)行適合多源數(shù)據(jù)的開發(fā),過程較為復(fù)雜。相對(duì)于上述并行計(jì)算框架,采用基于消息傳遞機(jī)制(MPI)的并行計(jì)算方法可直接使用MPI提供的接口進(jìn)行編程實(shí)現(xiàn),使用普通的PC機(jī)即可完成并行計(jì)算環(huán)境的搭建,同時(shí),使用Socket套接字來進(jìn)行并行計(jì)算節(jié)點(diǎn)間矢量空間數(shù)據(jù)的傳輸,可避免MPI因信道擁堵而帶來的通信故障,確保了本文倡導(dǎo)的地質(zhì)災(zāi)害預(yù)警并行計(jì)算架構(gòu)的可行性和穩(wěn)定性。
從算法設(shè)計(jì)的角度分析,并行計(jì)算可分為數(shù)據(jù)級(jí)并行和任務(wù)級(jí)并行。數(shù)據(jù)級(jí)并行對(duì)計(jì)算對(duì)象進(jìn)行分解,各線程操作相同,且相互獨(dú)立;任務(wù)級(jí)并行則對(duì)計(jì)算任務(wù)進(jìn)行分解,每個(gè)線程執(zhí)行不同計(jì)算任務(wù)且依賴其他線程。地質(zhì)災(zāi)害預(yù)警的計(jì)算目標(biāo)是研究區(qū)內(nèi)的地質(zhì)災(zāi)害隱患點(diǎn),地質(zhì)災(zāi)害隱患點(diǎn)的潛在危險(xiǎn)等級(jí)受其自身的巖土構(gòu)成、水系、植被、地勢(shì)起伏等因素影響,發(fā)生地質(zhì)災(zāi)害的誘發(fā)因素包括降雨、地表位移、深部位移、土體含水率等。因此對(duì)每個(gè)地質(zhì)災(zāi)害隱患點(diǎn)的預(yù)警相互獨(dú)立且操作相同,在預(yù)警數(shù)據(jù)預(yù)處理的基礎(chǔ)上,采用基于數(shù)據(jù)級(jí)任務(wù)分解的并行計(jì)算方法[4],以地質(zhì)災(zāi)害隱患點(diǎn)為計(jì)算單元的子任務(wù)進(jìn)行并行計(jì)算。
本文著重探討了大范圍地質(zhì)災(zāi)害預(yù)警并行計(jì)算架構(gòu)的設(shè)計(jì)與應(yīng)用中的關(guān)鍵技術(shù)難題,包括:①搭建地質(zhì)災(zāi)害預(yù)警并行計(jì)算架構(gòu);②解決并行計(jì)算架構(gòu)中的關(guān)鍵技術(shù)問題,包括地質(zhì)災(zāi)害預(yù)警模型、數(shù)據(jù)管理、任務(wù)監(jiān)控與調(diào)度以及節(jié)點(diǎn)通信;③地質(zhì)災(zāi)害預(yù)警并行計(jì)算架構(gòu)實(shí)驗(yàn)驗(yàn)證。
根據(jù)層次結(jié)構(gòu)劃分,并行計(jì)算架構(gòu)可以劃分為四層,如圖1所示。各層功能如下:
圖1 并行計(jì)算架構(gòu)圖Fig.1 Parallel computing frame
1)數(shù)據(jù)管理層:矢量空間數(shù)據(jù)、預(yù)警模型相關(guān)配置參數(shù)、監(jiān)測(cè)數(shù)據(jù)以及預(yù)警結(jié)果等均存儲(chǔ)在Oracle數(shù)據(jù)庫中,計(jì)算過程中的中間結(jié)果在Oracle數(shù)據(jù)庫創(chuàng)建的臨時(shí)表中進(jìn)行存儲(chǔ)。
2)任務(wù)調(diào)度層:是整個(gè)并行計(jì)算架構(gòu)的核心部分,主要負(fù)責(zé)將任務(wù)分配到各計(jì)算節(jié)點(diǎn)上,達(dá)到負(fù)載均衡的目的。并行計(jì)算和傳統(tǒng)的串行計(jì)算最大的區(qū)別就是并行計(jì)算需要考慮各計(jì)算節(jié)點(diǎn)的運(yùn)行狀態(tài),計(jì)算任務(wù)在各個(gè)節(jié)點(diǎn)的分配以及計(jì)算結(jié)果的整合等。計(jì)算任務(wù)在任務(wù)提交管理器排隊(duì)等待提交,等待集群資源空閑時(shí)才可提交計(jì)算任務(wù)[5]。
3)通信層:對(duì)于通訊量較小的算法輸入?yún)?shù)等消息采用MPI進(jìn)行通信,對(duì)于通訊量較大的空間矢量數(shù)據(jù)采用底層Socket管道進(jìn)行快速文件傳輸[6]。
4)計(jì)算層:主要由并行地質(zhì)災(zāi)害預(yù)警模型算法模塊組成。各個(gè)節(jié)點(diǎn)分別部署一個(gè)并行地質(zhì)災(zāi)害預(yù)警模型算法包。本部分是整個(gè)并行計(jì)算架構(gòu)的核心內(nèi)容,結(jié)合MPI多進(jìn)程技術(shù)從底層研發(fā),有效提升并行計(jì)算性能[7]。該地質(zhì)災(zāi)害預(yù)警模型選取了潛勢(shì)度算法和模糊綜合評(píng)判法對(duì)地質(zhì)災(zāi)害預(yù)警模型進(jìn)行并行化封裝,其目的是最大限度地提升地質(zhì)災(zāi)害預(yù)警并行計(jì)算的效率。
本文提出的地質(zhì)災(zāi)害預(yù)警并行計(jì)算架構(gòu)以O(shè)racle為數(shù)據(jù)庫支撐,MPI和Socket套接字負(fù)責(zé)并行計(jì)算節(jié)點(diǎn)的通信減少人工控制通信的開發(fā)成本,并行計(jì)算架構(gòu)的任務(wù)管理與調(diào)度采用優(yōu)先隊(duì)列式管理,通過Master節(jié)點(diǎn)監(jiān)控集群工作狀態(tài),合理分配任務(wù)到各計(jì)算節(jié)點(diǎn),實(shí)現(xiàn)負(fù)載均衡[8]。本文地質(zhì)災(zāi)害預(yù)警并行計(jì)算架構(gòu)中,計(jì)算任務(wù)讀取由串行計(jì)算完成;自計(jì)算任務(wù)由數(shù)據(jù)級(jí)任務(wù)分解成子任務(wù)開始,直到各執(zhí)行進(jìn)程分別將計(jì)算結(jié)果傳回Oracle數(shù)據(jù)庫的各階段計(jì)算工作均由并行計(jì)算完成。
1.2.1 地質(zhì)災(zāi)害預(yù)警算法模型
地質(zhì)災(zāi)害預(yù)警算法模型如圖2子任務(wù)計(jì)算[9]部分,首先對(duì)預(yù)警數(shù)據(jù)進(jìn)行預(yù)處理操作,剔除未返回監(jiān)測(cè)數(shù)據(jù)的地質(zhì)災(zāi)害隱患點(diǎn),將有監(jiān)測(cè)數(shù)據(jù)的地質(zhì)災(zāi)害隱患點(diǎn)根據(jù)威脅人口數(shù)量的優(yōu)先級(jí)進(jìn)行排序,然后判斷同一個(gè)地質(zhì)災(zāi)害隱患點(diǎn)返回的監(jiān)測(cè)指標(biāo)種類,若返回的監(jiān)測(cè)指標(biāo)種類未超過兩種則進(jìn)入單指標(biāo)預(yù)警模型,反之,則進(jìn)入多指標(biāo)預(yù)警模型對(duì)該地質(zhì)災(zāi)害隱患點(diǎn)進(jìn)行預(yù)警計(jì)算。
圖2 地質(zhì)災(zāi)害預(yù)警并行計(jì)算實(shí)現(xiàn)流程圖Fig.2 Parallel computing of geological disaster early warning
1)單指標(biāo)預(yù)警模型
單指標(biāo)預(yù)警模型主要根據(jù)研究區(qū)內(nèi)歷史地質(zhì)災(zāi)害的相關(guān)經(jīng)驗(yàn)[10],對(duì)不同監(jiān)測(cè)指標(biāo)的各級(jí)預(yù)警設(shè)定一定的預(yù)警閾值,當(dāng)該監(jiān)測(cè)指標(biāo)的數(shù)值達(dá)到某個(gè)預(yù)警閾值時(shí)則判定該地質(zhì)災(zāi)害隱患點(diǎn)處于該級(jí)預(yù)警風(fēng)險(xiǎn)等級(jí)。
2)多指標(biāo)預(yù)警模型
多指標(biāo)預(yù)警模型主要采用地質(zhì)災(zāi)害潛勢(shì)度[11]和模糊綜合評(píng)判法[12]作為算法依據(jù)。
首先,通過地質(zhì)災(zāi)害潛勢(shì)度計(jì)算各地質(zhì)災(zāi)害隱患點(diǎn)的地質(zhì)災(zāi)害風(fēng)險(xiǎn)等級(jí),計(jì)算地質(zhì)災(zāi)害潛勢(shì)度的值(G)。
式(1)中,qi為各因子權(quán)重;Qi為因子定量值(CF值)
然后,將地質(zhì)災(zāi)害風(fēng)險(xiǎn)等級(jí)作為地質(zhì)災(zāi)害預(yù)警的評(píng)價(jià)因子之一,其他評(píng)價(jià)因子有降雨量,表面位移,深部位移,GNSS位移,含水率,泥位等。模糊評(píng)價(jià)集[12-15]分為高風(fēng)險(xiǎn)、中風(fēng)險(xiǎn)、低風(fēng)險(xiǎn)和無風(fēng)險(xiǎn)。該方法利用模糊數(shù)學(xué)的隸屬度理論對(duì)收到若干因素影響的事物或?qū)ο笞龀隽硕康目傮w評(píng)價(jià),適合地質(zhì)災(zāi)害預(yù)警分級(jí)這樣的非確定性問題的解決[16-19]。
1.2.2 數(shù)據(jù)級(jí)任務(wù)分解
數(shù)據(jù)級(jí)任務(wù)分解是與任務(wù)級(jí)任務(wù)分解相對(duì)而言的,其特點(diǎn)是對(duì)計(jì)算對(duì)象進(jìn)行分解,各線程操作相同,且相互獨(dú)立。地質(zhì)災(zāi)害預(yù)警的計(jì)算目標(biāo)是研究區(qū)內(nèi)的地質(zhì)災(zāi)害隱患點(diǎn)。地質(zhì)災(zāi)害隱患點(diǎn)的潛在危險(xiǎn)等級(jí)受其自身的巖土構(gòu)成、水系、植被、地勢(shì)起伏等因素影響,發(fā)生地質(zhì)災(zāi)害的誘發(fā)因素包括降雨、地表位移、深部位移、土體含水率等。因此對(duì)每個(gè)地質(zhì)災(zāi)害隱患點(diǎn)的預(yù)警相互獨(dú)立且操作相同,在預(yù)警數(shù)據(jù)預(yù)處理的基礎(chǔ)上,以地質(zhì)災(zāi)害隱患點(diǎn)為分析計(jì)算單元,采用基于數(shù)據(jù)級(jí)任務(wù)分解的并行計(jì)算方法,對(duì)并行計(jì)算任務(wù)作并行計(jì)算是行之有效的途徑。
1.2.3 數(shù)據(jù)管理
地質(zhì)災(zāi)害預(yù)警并行計(jì)算需要用到的數(shù)據(jù)包括矢量空間數(shù)據(jù)、監(jiān)測(cè)數(shù)據(jù)、預(yù)警模型參數(shù)等,這些數(shù)據(jù)均存儲(chǔ)在Master服務(wù)器的Oracle數(shù)據(jù)庫中。在并行計(jì)算過程中,數(shù)據(jù)讀操作遠(yuǎn)大于寫操作,因此如何快速讀取數(shù)據(jù)而避免數(shù)據(jù)庫訪問并發(fā)性問題是并行計(jì)算讀取數(shù)據(jù)必須要解決的問題。為提高并行計(jì)算過程中數(shù)據(jù)訪問效率,減少數(shù)據(jù)讀操作等待時(shí)間,采用Oracle高級(jí)復(fù)制機(jī)制的過程級(jí)復(fù)制。當(dāng)存在對(duì)數(shù)據(jù)進(jìn)行大規(guī)模更新和批處理操作時(shí)采用這種復(fù)制方案[20],正好符合地質(zhì)災(zāi)害預(yù)警并行計(jì)算時(shí)監(jiān)測(cè)數(shù)據(jù)的大量讀取操作。這個(gè)功能在大規(guī)模讀寫操作中非常實(shí)用,而且可以提高并行計(jì)算性能的穩(wěn)定性和負(fù)載平衡。
1.2.4 任務(wù)監(jiān)控與調(diào)度
地質(zhì)災(zāi)害預(yù)警并行計(jì)算的任務(wù)調(diào)度由資源管理器和任務(wù)調(diào)度器組成[4],負(fù)責(zé)計(jì)算任務(wù)的提交、排隊(duì)分發(fā)和狀態(tài)監(jiān)控。資源管理器負(fù)責(zé)實(shí)時(shí)獲取子節(jié)點(diǎn)心跳信息,解析該節(jié)點(diǎn)的現(xiàn)狀,包括內(nèi)存、CPU占有率、硬盤資源等,根據(jù)資源管理器提供的監(jiān)控結(jié)果,對(duì)計(jì)算任務(wù)進(jìn)行分配,以做到合理利用資源保證并行計(jì)算效率。
任務(wù)調(diào)度器采用改進(jìn)的FIFO算法[6],即在監(jiān)測(cè)數(shù)據(jù)預(yù)處理的基礎(chǔ)上,對(duì)計(jì)算任務(wù)內(nèi)的地質(zhì)災(zāi)害隱患點(diǎn)以威脅人口的數(shù)量從多到少的順序進(jìn)行任務(wù)提交。根據(jù)理論分析,可以通過改變?nèi)蝿?wù)執(zhí)行順序來實(shí)現(xiàn)負(fù)載平衡。本文改進(jìn)的任務(wù)調(diào)度算法可抽象理解為以下幾個(gè)步驟:①將地質(zhì)災(zāi)害預(yù)警接受任務(wù)匯總到提交任務(wù)管理器;②對(duì)任務(wù)提交管理器中的任務(wù)使用調(diào)度算法,得到任務(wù)待提交隊(duì)列;③資源管理器實(shí)時(shí)監(jiān)控集群計(jì)算資源狀況,當(dāng)計(jì)算資源空閑且存在待提交計(jì)算任務(wù),按照任務(wù)排序依次提交;當(dāng)計(jì)算資源滿載則暫停提交。
1.2.5 節(jié)點(diǎn)通信
消息傳遞接口(MPI)只適用于浮點(diǎn)型、字符型和整型3種數(shù)據(jù)類型,適合傳遞簡(jiǎn)單的輸入?yún)?shù)或小型矩陣數(shù)組[7],一旦數(shù)據(jù)量過大很容易造成信道阻塞。本地質(zhì)災(zāi)害預(yù)警并行計(jì)算架構(gòu)中MPI主要負(fù)責(zé)啟動(dòng)地質(zhì)災(zāi)害預(yù)警算法包和并行計(jì)算節(jié)點(diǎn)間小容量數(shù)據(jù)的通信[5]。
對(duì)于并行計(jì)算中較大容量的數(shù)據(jù)傳輸則直接利用Socket套接字進(jìn)行通信,避免因MPI的信道阻塞[3]而帶來的通信故障。
搭建由4臺(tái)普通PC機(jī)組成的集群,其中1臺(tái)作為主控制節(jié)點(diǎn)(命名為Master),另外3臺(tái)是工作節(jié)點(diǎn)(命名為Slave1--3),1Gbps高速交換機(jī)作為集群互聯(lián)網(wǎng)絡(luò)。試驗(yàn)集群的配置見表1。
表1 集群配置表Tab.1 Conf i guration able of PC clusters
地質(zhì)災(zāi)害并行計(jì)算實(shí)現(xiàn)流程如圖2所示。為驗(yàn)證該地質(zhì)災(zāi)害預(yù)警并行計(jì)算架構(gòu)的實(shí)際計(jì)算能力,本文將該并行計(jì)算架構(gòu)應(yīng)用于某省2016年8月2~4日臺(tái)風(fēng)造成的大范圍強(qiáng)降雨進(jìn)行地質(zhì)災(zāi)害預(yù)警工作。該測(cè)試算例包括2 657個(gè)地質(zhì)災(zāi)害隱患點(diǎn),監(jiān)測(cè)數(shù)據(jù)共計(jì)達(dá)900多萬條。并行計(jì)算環(huán)境如2.1節(jié)所述。通過使用不等數(shù)量的執(zhí)行進(jìn)程,依次對(duì)測(cè)試進(jìn)行計(jì)算實(shí)驗(yàn),計(jì)算結(jié)果見表2。
表2 地質(zhì)災(zāi)害監(jiān)測(cè)預(yù)警并行計(jì)算耗費(fèi)時(shí)間Tab.2 Parallel computing time of geological disaster early warning
表2中:當(dāng)進(jìn)程數(shù)為1時(shí),表示串行計(jì)算模式;當(dāng)進(jìn)程數(shù)為4、8、16時(shí)為并行計(jì)算模式。并行計(jì)算總耗時(shí)為任務(wù)讀取時(shí)間、任務(wù)分解時(shí)間、子任務(wù)并行計(jì)算時(shí)間和通信時(shí)間相加之總和。本實(shí)驗(yàn)通過改變執(zhí)行進(jìn)程數(shù)量,測(cè)試不同進(jìn)程數(shù)量并行計(jì)算所需要的時(shí)間。當(dāng)運(yùn)行一個(gè)執(zhí)行進(jìn)程時(shí)用時(shí)167.74 s,隨著執(zhí)行進(jìn)程數(shù)量的增加,地質(zhì)災(zāi)害預(yù)警并行計(jì)算總用時(shí)逐漸減少,當(dāng)執(zhí)行進(jìn)程數(shù)量增加到16個(gè)時(shí),計(jì)算時(shí)間為19.678s。此時(shí),并行計(jì)算對(duì)地質(zhì)災(zāi)害預(yù)警的計(jì)算用時(shí)得到了大幅縮減。并行計(jì)算耗時(shí)如圖3所示。
圖3 并行計(jì)算耗時(shí)與節(jié)點(diǎn)數(shù)關(guān)系Fig.3 Relationship between the number of nodes and parallel computing cost time
以執(zhí)行一個(gè)進(jìn)程總的耗費(fèi)時(shí)間作為地質(zhì)災(zāi)害預(yù)警并行計(jì)算為基準(zhǔn)[15],計(jì)算運(yùn)行不同數(shù)量進(jìn)程時(shí)的加速比,如圖4所示。加速比隨執(zhí)行進(jìn)程數(shù)目的增加而增大,但隨著執(zhí)行進(jìn)程的增加,各個(gè)執(zhí)行進(jìn)程之間的通信時(shí)間增加,加速比曲線斜率逐漸減小。
圖4 并行加速比Fig.4 Parallel acceleration ratio
實(shí)驗(yàn)結(jié)果表明:
1)以地質(zhì)災(zāi)害隱患點(diǎn)為單位對(duì)地質(zhì)災(zāi)害預(yù)警計(jì)算進(jìn)行數(shù)據(jù)級(jí)任務(wù)分解,啟用多個(gè)執(zhí)行進(jìn)程進(jìn)行并行計(jì)算可以大幅減少地質(zhì)災(zāi)害預(yù)警的計(jì)算時(shí)間,能夠獲得一定的加速比。
2)本文提出的地質(zhì)災(zāi)害預(yù)警并行計(jì)算架構(gòu)可以進(jìn)行大規(guī)模地質(zhì)災(zāi)害隱患點(diǎn)預(yù)警的并行計(jì)算,滿足地質(zhì)災(zāi)害預(yù)警時(shí)效性的需求[16-20]。
采用數(shù)據(jù)級(jí)任務(wù)分解方法對(duì)地質(zhì)災(zāi)害預(yù)警計(jì)算任務(wù)進(jìn)行分解,設(shè)計(jì)了并行計(jì)算架構(gòu)。將該并行計(jì)算架構(gòu)應(yīng)用于某省2016年8月2~4日臺(tái)風(fēng)造成的大范圍強(qiáng)降雨進(jìn)行地質(zhì)災(zāi)害預(yù)警工作,得到如下結(jié)論:
1)采用Oracle高級(jí)復(fù)制機(jī)制極大地避免了并行計(jì)算過程中數(shù)據(jù)訪問并發(fā)性問題。
2)采用改進(jìn)的FIFO算法保證了并行計(jì)算的負(fù)載均衡。
3)使用消息傳遞接口(MPI)和Socket套接字分別對(duì)小容量的模型參數(shù)和大容量空間數(shù)據(jù)進(jìn)行通信。
4)將本文設(shè)計(jì)的地質(zhì)災(zāi)害預(yù)警并行計(jì)算架構(gòu)應(yīng)用到實(shí)際地質(zhì)災(zāi)害預(yù)警工作中,取得了良好的效果,大幅縮短了大范圍地質(zhì)災(zāi)害預(yù)警所需的時(shí)間,滿足了地質(zhì)災(zāi)害實(shí)時(shí)預(yù)警的需要。