耿昭謙,朱虎明,李旭明,陳梅青,楊貴鵬
(1.南京長江電子信息產業集團有限公司,江蘇 南京 210038;2.西安電子科技大學 智能感知與圖像理解教育部重點實驗室, 陜西 西安 710071)
在雷達系統中,信號處理子系統扮演著十分重要的角色[1]。近年來,隨著雷達系統技術的快速發展以及應用需求的不斷增加,傳統以硬件系統設計為核心的雷達處理架構和開發模式面臨著極大的挑戰。一方面,用戶希望雷達系統具備越來越多的功能;而另外一方面,開發人員希望提高開發效率并降低開發和維護等成本。
高性能計算是研究、開發和利用強大的計算系統的一門學科,涉及計算體系結構、并行算法和軟件開發等方面技術。并行計算是高性能計算的重要組成部分,它是提高計算速度最有效的途徑之一,通過將處理任務分解成多個可以并行處理的子任務,在多個計算核心上處理,以便提高計算速度。近年來,由于高能效等諸多優點的存在,以多核處理器、圖形處理器(Graphics Processing Unit,GPU)和集群架構為代表的高性能計算平臺越來越多地被用于雷達信號處理系統[2-3]。
本文系統分析了已有的高性能計算軟硬件技術,利用Pthread針對CPU(Centeral Processing Unit)設計了并行雷達信號處理算法,并對高性能計算在雷達信號處理領域的發展方向進行了展望,為雷達信號處理領域研究人員快速了解本領域的研究現狀和最新進展提供參考。
近年來,在需求的牽引和新技術的推動下,雷達信號處理系統呈現出蓬勃發展的趨勢,現代雷達信號處理系統向著高性能、軟件化和模塊化的方向快速發展。基于高性能計算平臺設計信號處理算法成為新的發展方向。在雷達信號處理中,關鍵的處理算法主要有脈沖壓縮、動目標檢測、恒虛警檢測[4-6]等。
為了同時提高探測距離和距離分辨率,雷達系統要采用大時寬帶寬積信號。脈沖壓縮算法將發射的寬脈沖信號壓縮成窄脈沖信號,使得雷達系統同時具有高測速精度和好的距離、速度分辨率的優點。脈沖壓縮主要的算法模塊是時域卷積法和頻域快速傅里葉變換(Fast Fourier Transform,FFT)。當下很多雷達應用要處理的數據點數高達數十萬個,對實時性計算平臺提出了很高的要求。
利用濾波器組覆蓋多普勒范圍來抑制雜波,從而提高雷達在雜波背景下檢測運動目標能力。動目標檢測過程在程序開發中經常使用矩陣乘法來實現。
在雷達信號檢測中,當外界雜波干擾信號強度變化時,雷達能自動調整其靈敏度,使雷達的虛警概率保持不變,這種特性稱為恒虛警特性。常用的恒虛警處理方法有二進制積累、單元平均選小恒虛警、單元平均選大恒虛警、單元平均恒虛警、順序統計、修正的單元平均恒虛警、最優線性無偏估計恒虛警和秩值檢測器等。恒虛警算法的計算量在信號處理系統中占有比較大的比重,它的并行計算效率對整個信號處理系統的實時性起著決定性作用。
雷達系統由于應用場景的巨大差異,其信號處理系統在并行計算架構、帶寬、計算性能、功耗和應用開發軟件等方面存在很大的不同。目前常用的硬件平臺有數字信號處理器(Digital Signal Processor,DSP)、集成眾核(Many Integrated Core、多核CPU、GPU、MIC)、現場可編程門陣列(Field Programmable Gate Array,FPGA)[7-9]等。
2.1.1 DSP
DSP是對數字信號進行實時處理的高速專用集成電路。由于功耗墻和工藝等技術的制約, DSP也進入了多核時代,其具有更強的并行處理能力,但也提高了對編程者并行算法設計能力的要求。以TI公司的TMS320C6678為例,它內置8個計算核心,具有160 GFLOPs的浮點運算能力,目前已經支持高級并行編程接口。
2.1.2 多核CPU
受功耗墻的限制,目前單核CPU無法繼續通過提高主頻的方法來提升計算性能,CPU轉為利用更多的計算核心來提高計算能力。在CPU硬件里面最多可以集成上千個同構的計算內核,不同計算內核之間相互獨立,可以并行的執行指令。以Intel 2019年發布的Xeon Platinum 9200 處理器為例,其采用14 nm制程工藝,包含56個物理核,支持AVX-512指令集,雙精度浮點計算能力約為4.5 TFLOPs,最高功耗約400 W。AMD的EPYC 7742處理器使用TSMC的7 nm制程,擁有64個核心,并采用了Infinity Fabric結構將芯片組及各個處理器連接起來,雙精度浮點計算能力約為2 TFLOPs。
國產的CPU處理器近年來也取得了長足的進步。例如,基于申威眾核處理器26010設計的神威太湖之光超級計算機奪得世界第一。26010處理器基于異構計算的理念而設計,其包括4個核心組,每組有65個內核,由8×8 Mesh架構計算集群、一個管理單元和一個內存控制器組成,處理器計算能力為3.062 4 FLOPs,帶寬為136 GB·s-1。飛騰FT-2000+ CPU使用臺積電16 nm制造工藝,主頻為2.0~2.4 GHz,系統采用了同構的64個與 ARMv8指令集兼容處理器內核FTC662核,峰值計算性能588.8 GFLOPs。目前國產處理器的數學庫、編程易用性和應用生態離國外發達水平還有較大的差距。
2.1.3 GPU
GPU已經廣泛用于雷達的圖形顯示系統。近年來,由于其強大的計算能力越來越多地被用作異構加速器來加速雷達的信號處理和數據處理。GPU硬件上支持大規模線程并行執行,即所謂的單指令多線程并行計算模式(Single Instruction Multiple Threads,SIMT),適合計算密集型的雷達信號處理算法。具有異構加速功能的GPU生成廠商主要是NVIDIA、Intel和AMD公司,這些廠商生產的GPU在硬件架構和功耗之間差別很大。以NVIDIA公司最強大的計算加速卡Tesla Volta 100 PCI GPU為例,其采用12 nm FFN制程工藝,有5 210個計算核心,顯存帶寬為900 GB·s-1,能提供7 TFLOPs的雙精度、14 TFLOPs單精度和28 TFLOPs半精度計算能力。
景嘉微JM7200 芯片是目前公開報道已知性能最強的國產圖形處理芯片,于2018年9月完成流片和封裝,單精度可約0.5 TFLOPs,目前主要用于圖形學應用。
2.1.4 MIC
MIC架構處理器是英特爾公司專為高性能計算設計,它能最大支持72個同構物理核心288線程的眾核計算平臺。由于市場原因,目前Intel公司已經停止了此系列產品的升級換代。
2.1.5 FPGA
FPGA是通過編程來改變內部結構的芯片,可以同時進行大規模的細粒度并行計算(主要依靠DSP),具有高性能和低功耗的特點。編程要使用硬件描述語言,其會編譯為晶體管電路,而CPU和GPU等通用計算處理器是使用指令集來完成計算任務。Xilinx 2019年推出了全新架構的計算平臺—自適應計算加速平臺ACAP(Adaptive Compute Acceleration Platform),包括加速人工智能和數據中心應用的Versal 和 Alveo 兩大芯片產品系列。Versal計算引擎是SOC架構,集成有標量引擎、適應性引擎和智能引擎3個模塊,分別對應不同的計算應用場景,這個平臺滿足了未來高性能智能雷達的性能需要。2020年發布的7 nm Versal Premium芯片最高計算能力可達上百TOPs(INT 8)。Alveo 系列是PCI加速卡。Intel 公司2019年基于10 nm生產的Agilex 系列FPGA最高可以提供11.8 TFLOPs的單精度和23.6 TFLOPs的半精度計算能力。FPGA目前也支持高級并行編程接口。
隨著雷達系統的功能日益復雜和軟件定義雷達開發模式的快速發展,基于高性能計算硬件設計和實施并行雷達信號處理算法日益重要,處在硬件和應用開發中間的并行開發框架也日趨豐富。目前,比較常用的通用并行計算軟件框架包括:統一計算設備架構 (Compute Unified Device Architecture,CUDA)、OpenMP、消息傳遞接口MPI(Message Passing Interface,MPI)、開放計算語言(Open Computing Language,OpenCL)和Pthread等[10-13]。
2.2.1 CUDA
CUDA是NVIDIA公司2007年推出的基于擴展C語言的GPU通用計算編程語言,只能運行在本公司的GPU上。從2006年CUDA 1.0版本到2020年的10.2版本,由于編程越來越簡單,再加上cuBLAS等豐富的數學庫,其已經成為NVIDIA公司GPU計算生態的核心力量,因此大量的研究者嘗試利用GPU加速各個領域的算法。
2.2.2 OpenCL
OpenCL是一個跨平臺、免費和開放的通用并行編程標準,支持CPU、GPU、FPGA和DSP等處理器。OpenCL由非盈利技術聯盟Khronos 維護。目前絕大多數硬件廠商都支持OpenCL,包括NVIDIA、AMD、Intel、高通、ARM、TI、IBM和Xilin等公司。OpenCL主要利用標準的API來控制計算設備和傳輸數據。利用標準OpenCL編寫的并行程序可以實現代碼的可移植性,即實現一次編寫,然后就能運行在各種計算設備上。該方式可以較好地提高開發效率,降低代碼的移植代價。
2.2.3 OpenMP

2.2.4 MPI
MPI是由全世界大學、工業界和研究實驗室聯合研發的一種基于消息傳遞的并行程序編程事實標準。MPI主要應用于大規模集群計算系統,用其編寫的并行程序可以運行在數萬個計算節點上。MPI并行程序設計時要利用點對點和廣播等通信方式在計算節點間傳遞數據。MPI程序執行時,在集群的每個節點上啟動多個進程,節點間的進程通過InfiniBand等高速網絡顯式地交換數據,并行協同完成計算任務。
2.2.5 Pthread
Pthread是IEEE POSIX標準。該標準定義了創建和控制線程的一整套API。Pthread是基于共享內存的并行編程模型,由用戶負責管理線程和任務分配。
從章節2.1和章節2.2可以看出,雷達信號處理的高性能計算系統在功耗、計算能力、支持的并行編程模型、并行算法開發的難易程度等方面存在較大差異,如表1所示。表1中CPU的計算能力為雙精度,其余均為單精度。
由于高性能計算的硬件平臺架構差異巨大,軟件編程模型并行機理與執行效率也完全不一樣,這就使得基于高性能計算的雷達信號處理算法設計面臨很多挑戰。若要充分發揮出軟硬件的計算能力,既需要良好的算法設計,也需要軟硬件協同的優化。
最近幾年,基于新的軟硬件架構來設計和實施雷達信號處理并行算法飛速發展,國內的中國電子科技集團有限公司第十四研究所、第三十八研究所、西安電子科技大學、北京理工大學、武漢濱湖電子有限責任公司、航天南湖電子信息技術股份有限公司等單位在新型計算系統和并行算法設計等方面做了大量的工作,重點集中在CPU并行算法設計和國產化處理器適配方面。文獻[14]使用多核CPU與眾核GPU對并行雷達信號處理算法進行了詳細分析。文獻[15]在FPGA上利用OpenCL實施并行脈沖壓縮。文獻[16]基于TMS320C66X DSP利用OpenMP并行編程模型設計并行FFT算法。文獻[17]在CPU上利用OpenMP實施并行動目標檢測算法。文獻[18]研究了基于ArrayFire庫的并行信號處理算法性能。
使用高性能計算平臺加速雷達信號處理時,需將雷達信號處理的計算任務進行劃分,按照計算任務粒度來劃分,可以分為細粒度的指令級并行、粗粒度的線程級并行和進程級并行。指令級并行是通過流水線等技術實現多條指令同時并行執行。CPU內部一般都支持指令級流水線并行。線程級并行是指多個線程同時并行處理計算任務,各線程之間共享同一進程的內存空間。這些線程由用戶管理或者系統自動管理,例如OpenMP的線程就由系統管理。由于線程切換系統開銷較小,因此對于并發度高而且實時性要求高的應用適合使用線程級并行。進程級并行是指多個進程同時并行處理計算任務,每個進程獨享自己的內存空間。進程之間的切換比線程之間的切換代價大。
雷達信號處理過程中有著很強的并行性。對處理流程進行分析可以發現雷達信號處理子模塊之間存在流水線并行,例如脈沖壓縮的輸出結果為動目標檢測的輸入,而動目標檢測的輸出結果為求模模塊的輸入,求模模塊接收動目標檢測的輸入并輸出結果給恒虛警檢測。因此在并行程序設計時,將信號處理的子模塊作為計算子任務;然后采用流水線的并行策略,將算法子模塊分配到不同的線程上;最后通過線程通信控制指令實現數據的流動,實現利用多個核運行多個線程共同完成雷達信號的并行處理。
在信號處理子模塊內部,其并行性體現在處理模塊是按照脈沖進行處理的,例如在脈沖壓縮處理中,每個脈沖的處理過程相同,因此在計算時可以通過將不同脈沖分配到不同的計算核心上并行處理,以提高計算效率。另一個并行性體現在很多現代雷達信號處理模塊是按照距離單元進行的,而每個距離單元的運算是相同的,例如在計算恒虛警檢測時,需要對每個距離單元計算周圍環境,并選擇合適的CFAR類型進行處理。因此在進行計算時,可以考慮將每個距離單元的計算過程分配到不同的計算核心上進行處理,從而起到加速的目的。從上述討論可以得出,在對信號處理過程并行化時,需要根據不同的任務粒度選擇不同的并行計算模式。
傳統雷達信號處理系統基于FPGA加DSP的模式開發,研究人員需要掌握大量的專業硬件知識,因此系統的設計、實施和調試周期都比較長。正如表1所列,現在的CPU也提供了強大的計算能力。在一些信號處理系統對體積和功耗要求不高的應用場景,可以使用基于CPU的雷達信號處理模式,從而提高了開發效率。本章節將給出一個針對通用CPU利用Pthread設計并行雷達信號處理的示例。
目前CPU支持的并行編程模型包括Pthread、OpenMP、MPI和OpenCL等。Pthread能夠在不同的操作系統上運行,具有良好的可移植性,所有線程都可以訪問全局的共享內存區域,減少了線程之間數據通信的代價,但是在訪問共享內存時需要注意線程安全問題。Pthread多線程庫提供了互斥量管理、線程管理、同步管理以及信號量管理等功能,方便多線程程序的開發。由于雷達信號處理中要管理大量IO數據的讀寫,需要很多獨立的線程來承擔這些任務,而OpenMP一般對線程是隱式管理,因此不太適合這個場景。MPI屬于進程級并行處理,進程之間的數據交換代價比較大,雷達信號處理對系統的實時性有很高的要求,因此MPI也不是一個好的選擇。OpenCL目前在GPU中使用最多,在CPU上的計算效率和優化技巧文獻報道不多,因此最終針對CPU采用Pthread來設計雷達信號處理并行算法。
流水線并行計算技術類似于工業領域中的生產線。使用流水線技術設計并行算法時先把一個大的計算任務分解為幾個小的計算任務,這些任務按照一定的順序執行。一個任務組由一個單獨的線程處理,一般稱一個流水線處理線程為一個流水級或一級流水,每個級完成一小部分計算任務,并向下一級提供計算數據。
要處理的雷達回波數據由5個脈組組成,分別為5×2 048、5×4 096、12×2 048、5×16 384和5×16 384。輸入數據首先經過反異步干擾處理,剔除異常值;之后經過脈沖壓縮處理提高回波信號的分辨率和信噪比;然后經過動目標檢測,濾除背景雜波,提取運動目標的回波;最后經過恒虛警檢測實現目標檢測功能。
在設計并行雷達信號處理系統之前,首先需要通過計時函數對各個模塊進行分析,評估需要的計算資源。本實驗采用的計算平臺為E5-2609 8核8線程CPU,操作系統為Ubuntu14.04,內存為DDR4 2 133 MHz、8 GB,編譯器為Intel ICPC 15.0.0。在此CPU上測試的串行算法時間為26.67 ms。
設計多線程流水線并行的關鍵問題就是要保證每個脈組處理過程前后依賴的同時將每一個線程上的任務量(或者計算時間)劃分盡可能相等。另外流水級間的通信是設計流水線并行的一個重要組成部分。為了達到實時處理,最后使用5個線程組成流水線,每一個線程上的處理過程分為6個步驟:
步驟1等待來自上一級的信號量,該信號表示上一級流水已經將結果處理完畢,本級流水可以開始計算;
步驟2計算本級流水任務;
步驟3等待來自下一級的信號量,該信號量表示下一級流水計算完畢,并且可以將本級流水結果寫入到下一級的內存中;
步驟4將結果寫入下一級內存中;
步驟5向上一級流水發送信號量,表示本級流水執行完畢;
步驟6向下一級流水發送信號量,表示本級流水執行完畢。
采用流水線并行后測試的計算時間為6.18 ms,相比串行時間的加速比為4.3倍,計算效率高達86%,可見采用多線程實現的并行算法效率很高,能保證系統的實時性。
對于FPGA上基于OpenCL的雷達信號處理算法設計、實現與優化。傳統基于FPGA的雷達信號處理算法主要通過VHDL或Verilog實現,這兩種硬件描述語言的開發需要大量的硬件知識,使得開發難度大、開發效率較低。而OpenCL是使用擴展的C語言作為并行計算開發語言,開發效率高。但由于是一種新的開發方式, FPGA上OpenCL的編譯工具、調試工具和數學庫等還存在很多不足,因此在算法設計、調試和優化方面還有很多工作要做[19-20]。
基于OpenCL的雷達信號并行化處理的性能可移植性分析。目前的雷達信號處理由于使用多種語言開發,使得針對一種計算平臺開發的雷達信號處理模塊在另外一種計算平臺上運行時必須花比較大的代價進行代碼重寫和性能優化。如果在開發時采用跨平臺的編程語言OpenCL,就很容易實現代碼的功能可移植性。然而由于不同種類計算硬件內部結構和編譯器的巨大差異,使得基于OpenCL開發代碼還不能實現計算性能的可移植性,造成相同的代碼在性能類似的硬件上運行時算法的性能差別比較大。因此,基于OpenCL的雷達信號并行處理的性能可移植性亟需研究者解決。未來可以利用設計新的性能模型和性能自調優等技術來解決。
雷達數據處理并行化研究。目前,對雷達信號處理算法的并行化研究已經取得了較大的進展,隨著智能化雷達技術的發展,為實現對目標的自動跟蹤和智能識別,數據智能處理算法也日趨復雜。數據處理的實時性需要研究,因此雷達數據處理的并行化也是一個值得探究的方向。
隨著智能雷達系統的發展與信號處理復雜度的提升,再加上軟件定義雷達開發模式的興起,使得雷達信號處理的實時性面臨很多挑戰。因此,利用高性能計算技術來加速雷達信號處理算法是很重要的研究方向。本文對比分析了高性能計算相關的軟硬件技術,利用軟硬件協同思想解釋了雷達信號處理系統的內在并行計算特性,據此設計了多線程流水線并行信號處理算法,并對未來的發展方向進行了展望。研究人員認為,隨著高性能計算技術的發展,雷達信號處理的時效性將不斷突破,高性能計算將更好地服務于雷達行業。