杜翠 王寧 劉杰 程遠水 張千里 劉歡
1.中國鐵道科學研究院集團有限公司鐵道建筑研究所,北京 100081;2.中國鐵道科學研究院集團有限公司高速鐵路軌道技術國家重點實驗室,北京 100081;3.中國鐵路西安局集團有限公司閻良工務段,西安 710089;4.中國鐵道科學研究院集團有限公司鐵科檢測有限公司,北京 100081;5.中國地質大學(北京)地球物理與信息技術學院,北京 100083
探地雷達具有快速、無損、高效的優(yōu)點,廣泛應用于鐵路路基、隧道等基礎設施檢測領域[1-3]。隨著檢測速度、檢測精度和檢測里程的飛速增長,GPR數據規(guī)模呈指數增長。目前應用較多的處理軟件主要由設備廠商開發(fā),通常針對中小數據集,100 MB數據的算法運行時間大多為分鐘級以上。因此,探地雷達鐵路檢測大數據的處理效率亟待提升。
近年來,國內外學者陸續(xù)開展了探地雷達數據處理算法并行化的研究,主要集中于正演模擬、反演、偏移算法等方向。文獻[4-5]利用GPU加速技術建立了地下管道探地雷達正演模型以及含非金屬管道地下結構中傳播的精細化數值模型。GPR數據時域的全波形反演(Full-Waveform Inversion,FWI)涉及大量計算,文獻[6-7]采用基于GPU并行加速的優(yōu)化共軛梯度法和維數提升方案,在PC機實現了二維時域GPR雙參數反演。文獻[8]基于OpenMP并行采用有限單元法實現了頻率域2.5維GPR正演模擬。文獻[9]基于混合MPI和OpenMP方案的并行有限差分時域(Finite-Difference Time-Domain,FDTD)算法,實現3D GPR信號的逆時偏移。針對大規(guī)模探地雷達數據,文獻[10]采用集群模式,在Hadoop平臺下實現了并行化的卷積、反卷積與增益處理。
鐵路路基、隧道的探地雷達檢測基本形成了標準化的處理流程,即由一系列信號處理算法及參數組成的標準工作流[11]。因此,鐵路檢測大數據的并行需求為建立適應性強、通用性強的并行框架,以減少這些算法的技術遷移工作量?;诩耗J降奶幚砥脚_是大規(guī)模數據處理軟件的主要形態(tài),但由于檢測場景的多樣化,單機模式仍是主要應用場景之一。
綜上,本文提出了一種適用于單機模式的多線程并行處理方法,分析常用GPR信號處理算法的并行性特征,設計GPR數據的細粒度劃分方法,實現各線程處理任意大小道集,采用靜態(tài)調度方法完成并行任務調度。采用某線路路基檢測數據進行測試,對比多線程并行算法與串行算法的計算效率,分析各算法的并行適應性和最優(yōu)線程數設置原則。
鐵路路基、隧道檢測的GPR數據,處理流程通常包括背景去噪、增益、滑動平均、一維濾波、二維濾波等算法,算法參數根據檢測目的、檢測對象具體設置。本文以背景去噪、二維濾波為例,分析算法的基本計算單元、依賴性、計算量等并行性特征。
由于阻抗不匹配產生的駐波干擾信號為鐵路路基數據采集中的主要噪聲,具有道間水平信號強、視速度高的特點。由于深部信號反射能量較弱,水平干擾信號會壓制有效信號,須將這種水平干擾信號去除,才能提取出反映路基層位結構的反射信號。
水平干擾信號由原始信號平均值表征。首先選取雷達剖面明顯出現道間水平干擾信號的區(qū)域,將該區(qū)域的所有道數據進行求平均值運算,即
式中:xΣ(t)為背景噪聲信號;N1和N2分別為剖面背景噪聲的起始道號和終止道號;xi(t)為原始信號。
平均值運算結果可認為是儀器內部造成的干擾信號,需要從雷達剖面的所有數據中去除。計算雷達剖面所有數據與背景噪聲xΣ(t)之間的差值,達到去除背景噪聲的目的,計算式為
式中:yi(t)為去除背景噪聲后的信號;p(t)為背景道的增益曲線;N為雷達剖面最大道數。
背景去噪算法的基本計算單元為道集。各單元的計算步驟是完全相同的,且均值計算與差值計算均不依賴其他數據,其計算結果也不影響相鄰區(qū)域的計算,具有良好的并行性。
一維濾波應用有效波和干擾波的頻譜成分不同進行濾波,當有效波和干擾波的頻譜成分接近時,無法用一維頻率濾波來壓制干擾。如果有效波和干擾波存在視速度差異,則可進行視速度濾波,二維濾波即利用頻率和視速度不同來實現濾波功能。
在時間-空間域中,二維濾波由輸入信號與濾波算子的二維卷積運算實現,即
式中:y(t,x)為二維濾波后的輸出信號;g(t,x)為輸入信號;h(t,x)為濾波算子。
由于觀測的離散性和排列長度的有限性,必須用有限個(N)記錄道的求和代替空間坐標的積分,計算式為
式中:n為原始道號;m為結果道號;dτ為時間間隔。
由此可知,二維濾波可歸結為對一維濾波的再求和,即在測線上任一點,二維濾波的結果可由N道數據通過一維濾波結果相加得到。因此,二維濾波每一道的計算依賴于其相鄰N道數據(其左右各N/2道)的一維濾波計算結果,計算量較大,但每一道的二維濾波結果不影響其他道數據的計算,具有良好的并行性。
數據劃分的目標是將待處理的GPR數據合理、均衡地劃分給計算環(huán)境包含的所有線程,使各線程分配的計算量大致相同,在多線程并行計算開始前盡可能保證負載均衡。
GPR原始數據為非結構化的特定文件格式,通常采用二進制存儲,分為文件頭和數據道2部分。文件頭中一般包含道數、采樣點數、時窗、天線頻率等關鍵采集參數,數據道的道頭也包含特定的標記信息。
文件頭中的信息通常是算法的輸入參數,所以傳統的信號處理算法通常以單個文件為輸入。當單個文件過大時容易產生物理內存不足的情況,從而導致其他節(jié)點等待。當各文件大小不一時,也難以實現各線程計算量均衡。因此,為實現多線程并行處理的負載均衡,本文將文件頭信息存入關系型數據庫中,數據道則按指定道集大小進行分塊存儲,實現了從文件到道集的細粒度拆分。
在數據劃分的基礎上,通過對并行處理任務的實時調度可實現計算資源的充分利用以及計算效率的進一步提高。目前,對并行任務的調度方法有兩種:靜態(tài)調度方法和動態(tài)調度方法[12]。靜態(tài)調度方法將數據劃分成與計算節(jié)點數相同的數據分塊,再平均分配到各計算節(jié)點上進行處理,在并行執(zhí)行過程中不再進行任務調度,開發(fā)簡便易維護。動態(tài)調度方法主要采用主從式的并行模式,在并行計算開始前進行少量數據的劃分,在執(zhí)行過程中持續(xù)對數據分塊進行循環(huán)分配,通常用于計算量未知的場景。對于背景去噪等GPR算法,計算量與數據量成正比,因此采用靜態(tài)調度方法即可滿足需求。
綜上,對GPR數據進行多線程并行處理時,由主線程負責讀取和保存數據;當數據讀取完成后,將數據分配給不同的線程,每個線程的任務量=總道數/線程數;所有數據處理完成后,再由主線程保存數據文件。單機模式下的串行、并行處理流程如圖1所示。
圖1 GPR數據單機模式處理流程
為了驗證本文提出的GPR數據并行處理方法的性能提升效果,采用某線路路基檢測數據進行了背景去噪、增益、滑動平均、一維濾波、二維濾波共5種算法的測試試驗。試驗硬件參數:CPU為四核八線程,主頻2.9 GHz,最高3.9 GHz;內存為32 GB;系統磁盤為雙SSD RAID;測試數據磁盤為SSD移動硬盤(外掛USB3.0);操作系統為windows 10專業(yè)版。
對于256 MB數據,各算法在不同線程數的計算時間見表1。除背景去噪算法外,其他4種算法采用多線程并行的性能均優(yōu)于串行計算。根據1.1節(jié)的算法原理分析可知,背景去噪算法的復雜度極低,并行計算帶來的加鎖資源申請和釋放、線程控制等反而降低了算法的性能。對于一維濾波、二維濾波等復雜度較高的算法,并行化改造可大大減少運算時間。
表1 各算法在不同線程數的計算時間
各算法線程并行加速比見圖2??芍翰⑿谢脑旌?,背景去噪算法性能反而下降,線性增益算法與串行計算接近,滑動平均、一維濾波、二維濾波3種算法的性能均有明顯提升,加速比隨線程數增加而增加,最高達到3倍以上,約為使用的物理核數。
圖2 各算法多線程并行加速比
用戶使用單機軟件處理GPR數據時,通常不會同時操作其他大型軟件,但需保證機器可進行其他輕量操作。由于加速比與線程數并不是線性關系,為了實現較高的加速效果同時兼顧CPU使用率,建議確定線程數N的計算式為
式中:K為物理核數;C為CPU線程數。
即至少剩余1個物理核給操作系統和其他后臺軟件使用。對于本文采用的四核八線程機器,N=(4-1)×2=6。
以一維濾波算法為例,測試了多線程并行處理對數據量增長的適應性,結果見圖3??芍孩偎惴ǖ倪\行時間基本同數據量成正比。②隨數據量的增長,一維濾波加速比整體平穩(wěn)但略有下降。這是由于數據量增大后,資源使用更加頻繁,并行會在CPU高速緩存和內存交換上消耗更多的CPU基礎計算周期,同時受到了物理機資源消耗過大的影響。
圖3 不同數據量的一維濾波多線程運算時間及加速比
本文針對探地雷達鐵路檢測大數據的處理效率問題,通過設計面向并行負載均衡的數據劃分方法與并行任務調度方法,提出了一種適用于單機模式的多線程并行處理方法。
采用路基實測數據進行了背景去噪、增益、滑動平均、一維濾波、二維濾波共5種算法的測試試驗。采用多線程并行處理后,復雜度高的算法性能提升效果最好,加速比約為硬件環(huán)境的物理核數。線程數可根據物理核數和CPU線程數進行優(yōu)選。當數據量不同時,加速比保持穩(wěn)定,表現出良好的適應性。
在未來的研究中將進一步利研究面向集群模式的GPR數據并行處理方法,為更大規(guī)模數據的細粒度并行處理提供技術支撐。