姚 群,童 真,柴 恒
(中國船舶集團有限公司第七二三研究所,江蘇 揚州 225101)
隨著新體制雷達的廣泛使用,現代電子戰面臨的電磁環境更加復雜,信號波形復雜多變,各類脈內調制類型如相位調制、線性/非線性調頻、頻率編碼、復合調制等調制類型的雷達信號逐漸增多。傳統的電子偵察(ESM)設備測量的五大常規參數(中心頻率、幅度、脈寬、到達時間和到達角)已經無法適應當前復雜電磁環境下的電子對抗過程中信號分選、目標識別等關鍵環節的需求。雷達信號的脈內調制信息作為雷達信號的重要參數,可以更加詳細地反映雷達信號的本質信息,為參數復雜多變的新體制雷達信號的分選與識別提供幫助[1]。
雷達脈內分析一般采用中頻數據,數據量大,處理算法復雜,運算量大,實時性很難滿足,無法有效支援電子戰行動[2-3]。為了充分利用雷達脈內調制特征信息,提高分選和識別的準確性,迫切需要提高脈內分析的計算速度,提高脈內分析的實時性。
隨著多核通用計算處理器技術的高速發展,高性能多核CPU正逐漸取代數字信號處理器(DSP)、PowerPC成為電子偵察信號處理領域的主要處理單元,并且進一步向多節點集群化的方向發展[4-6]。為了充分發揮電子偵察信號處理計算平臺的性能,本文開展了基于多節點多核CPU計算平臺的并行計算技術研究,根據雷達信號脈內分析處理的特點,提出了一種基于消息傳遞接口+開放式多處理(MPI+OpenMP)的雷達信號脈內分析并行計算技術,綜合了 MPI 和OpenMP 并行編程環境的優點,提高了雷達信號脈內分析的處理速度。
多節點多核CPU計算平臺屬于對稱多處理(Symmetric Multi-Processing,SMP)架構,該結構同時具備了節點內共享內存與節點間分布式存儲的層次特點,因此同時支持節點間消息傳遞和節點內共享內存并行編程模型,其中MPI與OpenMP是這2類并行編程模型的代表。
OpenMP是用于共享內存并行化的標準共享內存、多處理應用程序接口(API)。OpenMP為線程創建、管理和同步提供了一組編譯器指令、環境變量和運行庫函數,通過fork-join編程模型實現并行性。在此模型中,程序開始作為單個進程或線程順序執行,當運行至并行區域時,創建其他幾個從線程來執行并行任務,并行域代碼執行完后再回到主線程[7]。OpenMP為程序員提供了更高層的并行編程抽象,只需要在程序中添加編譯指令以及調用庫函數,就可以在共享內存系統中實現高效的并行程序,降低了并行編程的難度和復雜度,同時具有良好的可移植性。
MPI是為開發基于消息傳遞模型的并行程序而制定的工業標準消息傳遞接口。在并行計算中,多臺計算機或者同一臺計算機內的多個處理器核心被稱為一個節點,共同完成計算任務。在分布式內存系統中,并行計算的最大挑戰是如何同步各個并行節點的動作,在節點之間交換數據以及對整個并行集群提供命令和控制[8]。MPI為這些任務定義了一套標準的函數。MPI的優點是高性能、大規模性和可移植性,是高性能計算的主要模型。
OpenMP和MPI這2種編程模型可以在同一個程序中使用,適用于由共享和分布式內存組成的架構,如多核處理器集群[9-10]。在OpenMP和MPI混合編程模型中,MPI可用于跨節點提供過程級并行,而OpenMP可用于通過使用編譯器指令在節點內實現循環級并行,如圖1所示。在混合編程模型中,OpenMP線程將共享每個節點的內存,因而此時的消耗內存總量會遠遠小于使用純MPI進程模型時所占用的內存總量,輕量級線程間的通信也因為取代了傳統的MPI進程收發通信機制而變得更快,并且由于跨節點間更少的MPI,通信混合模型的可擴展性也因而得到顯著提升。

圖1 MPI+OpenMP模型
電子偵察雷達信號脈內分析架構如圖2所示,通常分為兩部分:首先對原始的中頻信號進行數字化采樣,完成信號檢測,這一部分通常在FPGA處理單元內完成;之后將脈沖信號數據送至脈內分析模塊,獲取脈內特征參數以及常規參數(中心頻率、幅度、脈寬、到達時間),生成包含調制樣式與調制參數的脈沖描述字(PDW),供后續分選識別模塊進一步使用,生成輻射源描述字(EDW),提高其對復雜環境的適應性。上述流程關鍵是提升脈內分析環節處理速度,以滿足實時性要求[11-12]。

圖2 電子偵察雷達信號脈內分析架構
雷達信號脈內分析的最主要功能是對脈沖數據的調制類型識別與參數解調,目前廣泛應用的脈內分析方法主要分為基于似然函數的分析算法和基于特征的分析算法。基于似然函數的方法計算量大,計算復雜度高,工程中一般采用基于特征提取的脈內分析方法,算法流程如圖3所示。

圖3 基于特征的脈內分析算法
雷達信號脈內分析以一個完整的脈沖數據為數據分析單元,各個脈沖間的數據是相互獨立的[13-14]。因此脈內分析功能的并行計算加速根據并行的粒度不同可分為2種方式:一種是細粒度單脈沖級的加速,即對單個脈沖脈內分析的算法流程進行加速;另一種粗粒度加速方式是以脈沖為最小單位進行并行計算。為了獲得最大的單脈沖并行計算性能,細粒度單脈沖級脈內分析并行加速需要根據圖3流程中的算法模塊進行并行化設計,系統的并行化程度取決于設計人員對算法的設計。圖4給出了一種可供參考的單脈沖級別脈內分析并行化示意圖,針對脈內分析流程中不同處理算法進行相應的并行化設計,輸出包含調制參數的單個PDW。單脈沖級的加速方式,理論上可以獲取最小的單脈沖脈內分析時延。但是由于脈沖流數據量大,該方法會頻繁產生I/O讀取與線程切換,導致處理開銷變大,同時該方式對脈內算法分析流程的并行化實現要求極高,設計難度大,不易于后期算法更新擴展。

圖4 單脈沖脈內分析并行化參考示意圖
另一種粗粒度加速方式是以脈沖為最小單位進行并行計算,即為每個脈沖的脈內分析任務分配一個線程,并行計算多個脈沖數據,最終匯總所有脈沖的PDW結果輸出,如圖5所示。脈內分析算法各個脈沖分析計算任務數據完全獨立[15],在并行計算時不需要額外的數據通信開銷,該并行方式可以充分發揮系統并行計算的能力,并且易于后期處理算法的靈活升級。但是該方式需要存儲一段時間的脈沖數據,因此會引入至少1幀數據塊的延遲,而雷達信號分選功能本身就需要累積一段時間的數據,因此此部分延遲開銷并不影響后續分選功能。

圖5 脈沖級脈內分析并行化
綜上所述,實時脈內分析針對實時脈沖數據流,進行相同的分析處理,各個脈沖數據相互獨立,因此本文提出為每個節點分配1個MPI進程,用于處理一定數量的脈沖數據,同時在節點內部利用OpenMP為每個脈沖串分配一個分析線程,實現多線程并行計算,如圖6所示。為了考慮各個節點的負載均衡性,脈沖串數據的分配一般需要考慮數據量而非脈沖數據個數,具體實現步驟如下:

圖6 基于MPI+OpenMP的并行脈內分析流程
(1) 在每個節點上建立MPI進程,并進行必要的初始化;
(2) 主數據節點的主進程對數據進行劃分,通過節點間通信為每個節點的MPI進程分配數據;
(3) 在每個節點的MPI進程內部,通過 OpenMP 編譯指導語句,對脈沖串數據進行脈沖級的多線程并行計算(線程數量根據硬件平臺的計算核心數進行配置);
(4) 當全部計算完成后,MPI進程結束,由主節點進程匯總結果輸出。
下面給出混合編程模型實時脈內分析的偽代碼:
MPI_Init();
MPI_Comm_rank();
MPI_Comm_size();
if (myid == 0)//主進程分發數據
{
MPI_Send();
}
else //其余節點進程接收數據
{
MPI_Recv();
}
omp_set_num_threads(n);//設置OpenMP線程數n
#pragma omp parallel for //N個脈沖多線程并行
For i=1:N
Elint();//脈內分析計算
/*MPI進程通信,結果匯總至主節點輸出*/
MPI_Finalize();
本文采用的硬件測試平臺為2臺高性能計算服務器(每臺包含2個Xeon E5-2640 CPU,單個CPU包含8核心,主頻2.6 GHz),即每個節點共包含16核。軟件環境為Centos 7操作系統,測試程序采用c++編寫,編譯環境使用gcc-8.3.1,mpich-3.3.2等。
在單個節點上,測試了采用OpenMP并行編程模型在不同CPU核心數的情況下對脈內分析算法(常規參數測量、調制識別、調制參數解調等)的加速情況,如圖7所示。其中測試采用常規信號中頻脈沖數據,脈沖寬度10 μs,脈沖數量1 000。

圖7 單節點OpenMP/MPI加速比
由圖7可以看出:單節點內由于不需要進行進程間通信,OpenMP獲得了相對較好的加速性能。但隨著核數的增多,因為存在多線程資源分配、回收等開銷,加速比并未呈現線性增加的趨勢。因此在實際應用中,需要根據具體處理算法需求,合理分配線程數以達到最優的效率。
進一步對比單節點串行計算,單節點OpenMP并行計算以及兩節點MPI+OpenMP并行計算的脈內分析處理時間,測試結果如表1所示。其中測試數據采用常規信號(NS)、線性調頻信號(LFM)、二相編碼信號(BPSK)和四相編碼信號(QPSK)的中頻脈沖數據,脈沖寬度10 μs,脈沖數量1 000。

表1 處理用時對比(單位ms)
表1中,OpenMP計算時使用單個服務器、單個進程32線程并行計算,MPI+OpenMP計算時使用2臺服務器,將計算數據平均分配至2個節點,在每個節點上采用單進程32線程的并行計算。可以看出,在單節點上采用OpenMP加速能有效提高脈內分析的處理速度。在2個節點間采用MPI+OpenMP時,每個節點的計算數據量降低1倍,但是由于節點間通信的開銷,導致實際計算速度提升小于2倍。圖8給出了2種并行計算方式對不同調制類型數據的加速比。可以看出:MPI+OpenMP的加速方法對不同調制類型的加速比達到了15以上。

圖8 不同調制類型的加速比
本文提出了一種基于MPI+OpenMP的雷達信號實時脈內分析并行計算方法,針對雷達信號脈沖數據流,在每個節點分配MPI進程,在節點進程的內部利用OpenMP為每個脈沖串分配一個線程,實現脈沖級的脈內分析并行計算,充分發揮電子偵察信號處理計算平臺的性能。測試結果表明,該方法對不同調制類型信號的處理速度都獲得了較大的提升。該方法實時性好,并且易于擴展,可以為雷達信號脈內分析的實時處理提供解決方案。