陳正生 呂志平 崔 陽 呂 浩
(信息工程大學地理空間信息學院,鄭州 450052)
基于BPE的GNSS數據并行快速解算*
陳正生 呂志平 崔 陽 呂 浩
(信息工程大學地理空間信息學院,鄭州 450052)
采用分布式計算技術,基于Bernese處理引擎,實現對Bernese 5.0 GPS數據處理軟件的并行化處理,突破了其在單機解算GNSS測量數據時的規模限制和時效性差的問題,并通過精密單點定位和雙差網解試驗驗證了該方法的可行性和優越性。
Bernese處理引擎;分布式計算;并行計算;快速解算;全球衛星導航系統
Bernese GPS軟件是當前國際上少有的高精度GNSS(Global Navigation Satellite System)數據解算軟件,具有用戶界面友好,模塊條理清晰,功能強大等特點,被廣泛應用于GNSS衛星定軌以及長基線、大面積的導航定位應用中[1,2]。但該軟件存在數據準備和配置比較麻煩和同時處理測站的數量有限等不足。據本文測試,按照單機版的Bernese 5.0默認設置,其精密單點定位(PPP,Precise Point Positioning)解算測站數量限制在200個以內,另外,使用全天采樣率為30 s的GPS觀測數據,當測站數超過30個時,該軟件執行雙差網解的速度將大大增長,甚至有可能出現卡死現象。通常,解決軟件計算時間過長和數量限制可以通過增加計算機硬件性能、修改軟件內部設置來實現,但是前者花費代價大而效果低,單臺計算機硬件性能的增加難以滿足數據規模的擴張,而后者需要修改軟件內部代碼,對非軟件開發者而言,實現難度較大。為了解決以上不足,本文對Bernese進行了分布式計算擴展和封裝,在不改變其內部結構的條件下,實現分布式應用,在易用性和執行效率上都取得了較好的效果。
分布式計算是一種把需要進行大量計算的工程數據分隔成小塊,由多臺計算機分布計算的方法,其運行環境是分布式系統。分布式系統是能彼此通信的多個獨立計算裝置所組成的集合[3],其中獨立計算裝置包括范圍很廣,從超大規模集成電路芯片,到緊密耦合共享存儲器的多處理器、本地工作站集群、局域網、因特網等。分布式計算具有高性能的計算能力的理論基礎是并行計算。本文主要采用空間上的并行計算。為了方便描述并行計算的性能,一般采用加速比指標來進行度量,其定義為[4,5]:

其中,n表示處理器個數,T1是改進前整個任務的執行時間,Tn是改進后n個處理器并行執行時間。
對GNSS數據處理而言,分布式計算實現的難點和關鍵是要對任務進行合理的分解與組合,在計算節點有限的分布式系統中,保證計算精度的同時,使節點計算粒度最大化,以提高分布式系統的利用率和數據的計算效率。本文對Bernese軟件的分布式應用是從數據層次進行的。通過采用合理的數據分解和組合策略,數據層次的并行計算可以較大程度的突破單機計算瓶頸,獲得計算性能的提升。
Bernese 5.0 GPS 軟件[6]的程序語言是 FORTRAN77,個別程序由FORTRAN90編寫,源代碼有30多萬行,包括約1 200個子程序和函數模塊和100個左右的菜單程序組成,可以同時處理GPS和GLONASS數據。圖形界面采用QT庫,支持Windows、Unix/Linux等操作系統,既可以通過程序圖形界面進行數據解算,也可以通過BPE進行調用。BPE是在Bernese 4.0中引入的,目的是實現自動化的GNSS數據解算。BPE的執行可以通過界面程序運行,也可以通過Perl腳本調用。
軟件的分布式應用可以從數據、功能、模型等方面進行。由于Bernese軟件自成體系,二次開發比較困難,我們采用數據共享的方式對其進行分布式設計。Bernese是高可配置軟件,并且這些配置文件都是文本文件,因此不用運行Bernese界面程序,而用外部程序直接修改這些配置文件,再調用Bernese BPE實現軟件的自動調用。這些配置文件的內容包含:工程、會話、解算步驟和類型等等。Bernese軟件的數據處理流程可分為數據準備、數據計算和成果輸出三個階段。我們的實現方法是:在數據準備和成果匯總階段由我們自己編制軟件實現,而在數據解算階段調用Bernese實現,整個運行過程不需要人工干預,由程序自動實現。以Windows環境為例,通過DOS命令運行${C}MENUmenu.exe,并以進程控制文件(PCF,Process Control File)的路徑作為其參數,實現對Bernese BPE的調用;通過修改或編寫PCF實現對Bernese執行計算方法的控制;通過讀取PCF狀態文件獲取Bernese的當前運行狀態,一旦Bernese運行完畢,就將計算結果傳輸給主程序。
系統由控制端、執行端、數據服務器三部分組成,采用C/S(Client/Server)結構。控制端只有一個控制程序,負責任務生成、分配、發送命令、接收解算結果;執行端(客戶端/計算節點)包含Bernese解算軟件和我們自己開發的任務解析執行終端,負責解析任務、修改PCF、運行BPE、監控運行狀態、發送解算結果等;數據服務器采用ftp存儲和傳輸原始數據及解算結果。控制端和執行端采用C#語言編寫,運行環境為.Net Framework 4.0,系統采用 XML(eX-tensible Markup Language)技術傳遞命令,ftp傳輸數據。系統部署在廣域網或局域網上,為使系統發揮最大效能,視任務分解程度,需有多個計算節點并行執行任務,并根據網絡結構分配任務和傳輸數據。
圖1是分布式計算流程。首先主控制機讀取觀測網絡的元數據和分布式網絡信息,由觀測網絡元數據生成解算任務,并根據分布式計算網絡的信息,如節點數量、服務器數據位置、網絡帶寬等,決定任務分解的數量和策略,然后將分解后的任務與計算節點進行綁定,之后將這些數據以命令的形式通知相關計算節點。各個計算節點在接收到任務命令后,解析命令,并執行相應的解算任務,最后將解算結果發回主控制機。
整個處理過程中,計算節點自動解析命令,修改Bernese配置文件,下載數據,執行計算,并將解算后的結果發送到指定的ftp服務器或直接傳給主控制機。

圖1 分布式解算流程圖Fig.1 Flow chart of distributed computing
精密單點定位技術是近年來GNSS數據處理領域的研究熱點之一[7,8],由于測站采用非差處理手段,單臺接收機就可在全球實現mm~cm級的靜態和cm~dm級的動態定位。Bernese是率先支持PPP的軟件之一,在軟件范例中直接提供了PPP的BPE標準處理流程,并且其雙差解也是建立在PPP解的基礎上的。由于Bernese默認PPP腳本中加入了一些如合并結果的額外操作,使得計算時間和測站數量為非線性,隨著測站數量的增加解算時間劇增。對于此,對其PPP腳本進行優化,優化后的解算時間與測站數量為線性關系。圖2是隨著測站的增加Bernese解算PPP的時耗對比,宿主計算機CPU 為四核3.1 GHz,內存4 GB。

圖2 Bernese單機PPP解算時耗趨勢Fig.2 Time consumption trend of PPP in a single computer of Bernese
可以看到在Bernese默認PPP的配置下,隨著測站數量的增加,Bernese軟件的時耗呈指數形式遞增。當測站達到60個時,計算時間達到了10小時左右,而優化后腳本的解算時間僅為21分鐘。
在分布式環境中,控制機將待解測站進行分組,并異步發送解算命令到各計算節點,計算節點接收到命令后,修改本地Bernese配置文件,從指定ftp服務器下載觀測數據,然后調用BPE進行解算,解算完成后將解算結果(Sinex)發往指定的ftp服務器。我們分別在5個和10個節點的分布式環境中進行測試,參與解算的10個節點計算機配置相當,得到的結果如表1。

表1 5個和10個節點計算時間的統計對比Tab.1 Statistics of time consuming in 5 and 10 nodes
由于在當前版本Bernese的配置中,單機解算PPP的測站數不能超過200個,因此沒能統計出測站數在200以上的加速比。從表1可以看出,由于采用了多臺計算機并行的計算方法,執行速度得到了較大的提高,5個節點的平均加速比為3.7,10個節點的平均加速比為6.05。
相對PPP,采用同步觀測數據的載波相位差分算法具有更高的解算精度。Bernese 5.0采用雙差模型實現對GNSS觀測網的高精度解算,支持長達2 000 km的長基線的模糊度確定。但是由于雙差網解所涉及的參數眾多,其解算時間隨著網解規模迅速遞增,并且按照Bernese默認的雙差網解BPE腳本(RNX2SNX.PCF),在解算超過30個測站時,很容易提示參數過多的報錯而終止解算。為使解算結果具有可比性,我們選取IGS的29個站全天的觀測數據,選擇4個IGS核心站作為參考基準站,將剩下的測站劃分3個區(表2)。
通過將29個站的觀測數據利用Bernese軟件整體網平差,獲得網平差計算結果和計算時間。三個分區采用分布式系統進行并行計算,解算結果發回控制機,由控制機再組網平差得到結果。整體網解與子網劃分網解坐標分量較差,統計如圖3。

表2 站點分區表Tab.2 Blocking of sites

圖3 坐標分量差值統計Fig.3 Difference statistics of coordinate components
由圖3可知,兩個方案的點位較差都在3 mm內,解算結果相差很小,符合解算要求。另外,整體網解與子網劃分并行解算的各方向中誤差最大不超過2 mm,解算精度相當。對比整體網解與子網劃分并行解算的計算時間如表3。

表3 整體網解與分區并行網解的時間對比Tab.3 Time consuming comparison between entirety solving and block parallel computing
可以得出,利用3個節點并行子網劃分并行解算的計算時間相對于整體網解,在精度相當的情況下,加速比達到1.725,相當于提高了1.725倍。另外,隨著GNSS網規模的增大,測站數超過30個時,Bernese單機的基線網解,容易因參數過多而解算失敗,而并行、分區的解算方法能突破這種的解算限制,在解算效率和規模上都優于單機解算。
通過修改Bernese軟件的配置文件和調用BPE,在沒有改變軟件內部結構的條件下,從數據層次實現了Bernese軟件的分布式應用,使得GNSS解算過程簡單化和自動化,最后通過算例證明該方法可以較大程度的提高Bernese軟件處理GNSS數據的效率。GNSS的分布式計算可以從數據、功能、模型和服務等層次進行實現,要完全發揮分布式計算的優點,則需要從這幾方面同時進行實現。介于Bernese軟件內部實現比較復雜,從數據計算模型和功能層次實現代價太高,因而本文只是從數據層次進行了實現。近年來,隨著分布式計算的發展,特別是云計算技術的出現,各種計算、存儲、傳輸等需求都可以以服務的形式得以實現。該技術能屏蔽數據處理中間過程,可以直接、快速、穩定地提供服務,是GNSS數據處理的發展方向之一。
1 韓菲,等.基于Bernese GPS軟件的GPS數據自動解算系統的研究[J].測繪通報,2011,(11):8 -10,56.(Han Fei,et al.A study of automatic GPS data processing system based on Bernese GPS software[J].Bulletin of Surveying and Mapping,2011,(11):8 -10,56)
2 王偉,等.中國大陸現今地殼運動速度場[J].大地測量與地球動力學,2012,(6):29 - 32.(Wang Wei,et al.Present-day crustal movement velocity field in Chinese mainland[J].Journal of Geodesy and Geodynamics,2012,(6):29 -32)
3 Hagit Attiya and Jennifer Welch.Distributed computing fundamentals,simulations,and advanced topics(Second Edition)[M].Wiley,2004.
4 王剛強,等.多核計算機上的快速傅里葉變換并行算法[J].計算機工程,2011,37(16):57-59.(Wang Gangqiang,et al.Fast fourier transform parallel algorithm on multi-core computer[J].Computer Engineering,2011,37(16):57-59)
5 余磊,等.LU分解在眾核結構仿真器上的指令級調度研究[J].系統仿真學報,2011,23(12):2 603 -2 610.(Yu Lei,et al.Study on instruction scheduling of LU decomposition on many-core architecture simulator[J].Journal of System Simulation,2011,23(12):2 603 -2 610)
6 Dach R,et a1.Bernese GPS software version 5.0 [S].Bern:Astronomical Institute,University of Bern,2007.
7 Jan Kouba and Pierre Héroux.Precise point positioning using IGS orbit and clock products[J].GPS Solutions,2001,5(2):12 -28.]
8 姜衛平,等.基于CORS網絡的單頻GPS實時精密單點定位新方法[J].地球物理學報,2012,55(5):1 549-1 556.(Jiang WeiPing,et al.A new kind of real-time PPP method for GPS single-frequency receiver using CORS network[J].Chinese Journal of Geophysics,2012,55(5):1 549-1 556)
PARALLEL COMPUTING OF GNSS DATA BASED ON BERNESE PROCESSING ENGINE
Chen Zhengsheng,LZhiping,Cui Yang and Lǚ Hao
(Institute of Surveying and Mapping,Information Engineering University,Zhengzhou450052)
This paper uses distributed computing technology to achieve parallel processing of the Bernese 5.0 GPS software based on the Bernese processing engine,and we overcome the disadvantage of scale limits and poor timeliness of GNSS observations in a single computer.Then,the viability and superiority of this method are validated through precise point positioning and double-difference network solution.
Bernese processing engine;distributed computing;parallel computing;fast computing;GNSS
P228
A
1671-5942(2013)05-0079-04
2013-05-31
國家自然科學基金(41274015);國家863計劃項目(2013AA122501)
陳正生,男,1984年生,博士生,主要從事測量數據處理理論與方法研究.E-mail:czsgeo@126.com