本發(fā)明涉及計(jì)算機(jī)數(shù)據(jù)處理領(lǐng)域,尤其涉及一種基于消息隊(duì)列的并行雷達(dá)數(shù)據(jù)處理方法。
背景技術(shù):
通過(guò)加載和解析獲取的雷達(dá)實(shí)測(cè)數(shù)據(jù),對(duì)原始回波數(shù)據(jù)進(jìn)行野值剔除,對(duì)窄帶回波數(shù)據(jù)進(jìn)行脈壓處理,對(duì)寬帶原始回波數(shù)據(jù)進(jìn)行降噪、對(duì)齊、成像、多目標(biāo)分割處理,并對(duì)解析后的數(shù)據(jù)進(jìn)行存儲(chǔ),用于后續(xù)數(shù)據(jù)回放、特征提取和目標(biāo)識(shí)別等。如何快速地處理雷達(dá)實(shí)測(cè)數(shù)據(jù),對(duì)外場(chǎng)實(shí)驗(yàn)和實(shí)驗(yàn)室研究具有重要意義。
隨著計(jì)算機(jī)技術(shù)的發(fā)展,高性能計(jì)算朝著多cpu多核計(jì)算、gpu計(jì)算、集群計(jì)算等方向發(fā)展,為充分發(fā)揮計(jì)算機(jī)的處理能力、提高數(shù)據(jù)處理效率,常見(jiàn)的做法是對(duì)程序進(jìn)行并行化。并行化常用的方法主要是多線程/進(jìn)程方式,該方式需要修改原有程序處理邏輯,容易出現(xiàn)死鎖等問(wèn)題,編程難度大。actor模式是一個(gè)解決分布式計(jì)算的數(shù)學(xué)模型,其中actor是計(jì)算實(shí)體,它接收和處理接收到的消息,能夠與其他actor并行地進(jìn)行協(xié)作。通過(guò)消息隊(duì)列,應(yīng)用程序開(kāi)發(fā)人員可以通過(guò)發(fā)送和接收消息,方便地與其他程序進(jìn)行快速可靠的通信,減少模塊間的耦合,提高程序的可靠性和穩(wěn)定性。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)上述現(xiàn)有技術(shù)存在的狀態(tài),本發(fā)明提供一種基于消息隊(duì)列的并行雷達(dá)數(shù)據(jù)處理方法,充分利用多核cpu、gpu加速雷達(dá)數(shù)據(jù)處理,提高數(shù)據(jù)處理效率,減少并行程序開(kāi)發(fā)難度。
本發(fā)明提供一種基于消息隊(duì)列的并行雷達(dá)數(shù)據(jù)處理方法,其改進(jìn)之處在于,發(fā)送端根據(jù)業(yè)務(wù)需求,將雷達(dá)原始回波數(shù)據(jù)根據(jù)數(shù)據(jù)幀結(jié)構(gòu)分割成獨(dú)立的數(shù)據(jù)塊,發(fā)送給消息輸入隊(duì)列,處理模塊采用競(jìng)爭(zhēng)方式搶占消息進(jìn)行所述數(shù)據(jù)塊的數(shù)據(jù)處理,并將結(jié)果發(fā)送給輸出隊(duì)列,接收端將所述結(jié)果進(jìn)行出隊(duì)列處理,并對(duì)處理結(jié)果進(jìn)行合并。
優(yōu)選的,所述發(fā)送端和所述接收端的處理模塊保持原有單線程方式進(jìn)行數(shù)據(jù)處理,無(wú)需進(jìn)行復(fù)雜的多線程開(kāi)發(fā);當(dāng)存在多個(gè)發(fā)送端和接收端時(shí),系統(tǒng)按照生產(chǎn)者-消費(fèi)者方式并行地進(jìn)行數(shù)據(jù)處理。
較優(yōu)選的,通過(guò)設(shè)置不同的消息類(lèi)型,每種消息類(lèi)型對(duì)應(yīng)一個(gè)消息隊(duì)列,同一類(lèi)型的處理模塊只處理所述消息隊(duì)列中某一特定類(lèi)型的消息;多個(gè)同類(lèi)型處理模塊并行化處理數(shù)據(jù);
所述處理模塊根據(jù)所述消息類(lèi)型的數(shù)量進(jìn)行增減。
較優(yōu)選的,設(shè)置重試隊(duì)列,保存執(zhí)行異常的數(shù)據(jù),根據(jù)重試策略重新被其他處理模塊執(zhí)行。
較優(yōu)選的,所述特定類(lèi)型的消息包括雷達(dá)的原始數(shù)據(jù)、寬帶回波數(shù)據(jù)、窄帶回波數(shù)據(jù)、寬帶回波處理結(jié)果和窄帶回波處理結(jié)果。
較優(yōu)選的,通過(guò)優(yōu)化消息隊(duì)列參數(shù),提高i/o吞吐率,保證了消息隊(duì)列的i/o時(shí)間遠(yuǎn)小于處理模塊的處理時(shí)間,系統(tǒng)可提高處理效率。
本發(fā)明的技術(shù)方案中,將雷達(dá)數(shù)據(jù)處理過(guò)程中的各個(gè)模塊抽取成單獨(dú)的程序,獨(dú)立運(yùn)行,每個(gè)程序只處理單一的數(shù)據(jù),減少了模塊間的耦合程度;對(duì)于耗時(shí)的處理流程,可在滿足硬件需求的情況下部署多個(gè)處理模塊進(jìn)行加速數(shù)據(jù)處理過(guò)程,提高雷達(dá)數(shù)據(jù)處理的效率和實(shí)時(shí)性。
附圖說(shuō)明
圖1為本發(fā)明實(shí)施例的基于消息隊(duì)列的并行程序處理流程示意圖;
圖2為本發(fā)明實(shí)施例的基于消息隊(duì)列的并行雷達(dá)數(shù)據(jù)處理流程示意圖;
圖3為本發(fā)明實(shí)施例的程序部署示意圖;
圖4為本發(fā)明實(shí)施例的單線程方式處理時(shí)間分布示意圖;
圖5為本發(fā)明實(shí)施例的基于消息隊(duì)列的并行處理時(shí)間分布示意圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉出優(yōu)選實(shí)施例,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。然而,需要說(shuō)明的是,說(shuō)明書(shū)中列出的許多細(xì)節(jié)僅僅是為了使讀者對(duì)本發(fā)明的一個(gè)或多個(gè)方面有一個(gè)透徹的理解,即便沒(méi)有這些特定的細(xì)節(jié)也可以實(shí)現(xiàn)本發(fā)明的這些方面。
本實(shí)施例采用基于消息隊(duì)列的push-pop模式,將系統(tǒng)功能拆分成多個(gè)獨(dú)立的模塊,模塊之間通過(guò)消息隊(duì)列方式傳遞數(shù)據(jù),減少模塊間的耦合度。并行雷達(dá)數(shù)據(jù)處理流程示意圖如圖1所示,可由發(fā)送端、消息輸入隊(duì)列、處理模塊、結(jié)果輸出隊(duì)列、接收端五部分組成,本實(shí)施例提出的一種基于消息隊(duì)列的并行雷達(dá)數(shù)據(jù)處理方法,其流程示意圖如圖2所示,發(fā)送端根據(jù)業(yè)務(wù)需求,將雷達(dá)原始回波數(shù)據(jù)根據(jù)數(shù)據(jù)幀結(jié)構(gòu)分割成獨(dú)立的數(shù)據(jù)塊,發(fā)送給消息輸入隊(duì)列,處理模塊采用競(jìng)爭(zhēng)方式搶占消息進(jìn)行所述數(shù)據(jù)塊的數(shù)據(jù)處理,并將結(jié)果發(fā)送給輸出隊(duì)列,接收端將所述結(jié)果進(jìn)行出隊(duì)列處理,并對(duì)處理結(jié)果進(jìn)行合并。
其中,發(fā)送端和所述接收端的處理模塊分別采用單線程方式進(jìn)行數(shù)據(jù)處理,可減少算法移植及多線程并發(fā)帶來(lái)的問(wèn)題。當(dāng)存在多個(gè)發(fā)送端和接收端時(shí),系統(tǒng)按照生產(chǎn)者-消費(fèi)者方式并行地進(jìn)行數(shù)據(jù)處理。
本實(shí)施例中,可以設(shè)置不同的消息類(lèi)型,每個(gè)消息類(lèi)型對(duì)應(yīng)一個(gè)消息隊(duì)列,同一類(lèi)型的處理模塊采用預(yù)處理、分析和處理的過(guò)程,只處理消息隊(duì)列中某一特定類(lèi)型的消息。多個(gè)同類(lèi)型處理模塊實(shí)例可同時(shí)執(zhí)行,并行性地處理數(shù)據(jù),還可動(dòng)態(tài)增加處理模塊實(shí)例,提高系統(tǒng)吞吐率。本實(shí)施例采用redis作為消息隊(duì)列,消息隊(duì)列不持久化存儲(chǔ)數(shù)據(jù)(將消息保存到內(nèi)存中,不持久化到硬盤(pán)等設(shè)備上),處理模塊負(fù)責(zé)消息的插入、刪除、執(zhí)行、異常處理、重試等;可設(shè)置重試隊(duì)列,保存執(zhí)行異常的數(shù)據(jù),根據(jù)重試策略選擇其他處理模塊重新執(zhí)行。
本實(shí)施例由于存在i/o傳輸時(shí)延、線程切換等開(kāi)銷(xiāo),但通過(guò)優(yōu)化消息隊(duì)列參數(shù),提高了i/o吞吐率,保證消息隊(duì)列的i/o時(shí)間遠(yuǎn)小于處理模塊的處理時(shí)間,提高了處理效率。
具體的,本實(shí)施例采用redis作為消息隊(duì)列,程序采用c++語(yǔ)言編寫(xiě),如圖3所示部署在一臺(tái)8核心cpu的工作站上,若使用多臺(tái)機(jī)器,可將處理模塊根據(jù)需要分別部署在不同的機(jī)器上,各機(jī)器間通過(guò)千兆網(wǎng)絡(luò)連接。
8核cpu的工作站上,每個(gè)處理模塊獨(dú)占一個(gè)cpu核心,其中寬/窄帶特征提取與識(shí)別程序分別部署了兩個(gè)實(shí)例。對(duì)于傳統(tǒng)的單線程方式,其處理時(shí)間分布如圖4所示。采用本實(shí)施例的程序處理時(shí)間分布如圖5所示,每個(gè)處理模塊總耗時(shí)與對(duì)應(yīng)的單線程方式基本相同,由于充分利用了多核心cpu的性能,其處理耗時(shí)要遠(yuǎn)遠(yuǎn)低于單線程方式。對(duì)于4gb的測(cè)試數(shù)據(jù),單線程方式處理耗時(shí)約15min(與所選算法及實(shí)現(xiàn)有關(guān));本方法的處理時(shí)間約6min(其中磁盤(pán)和網(wǎng)絡(luò)i/o以及進(jìn)程間的切換等占用了一定時(shí)間),大大加速了雷達(dá)數(shù)據(jù)處理速度和效率。
本發(fā)明支持異構(gòu)計(jì)算和多機(jī)器并行計(jì)算,處理模塊可運(yùn)行在cpu核心(獨(dú)占)或gpu上,處理模塊間只通過(guò)消息隊(duì)列進(jìn)行通信,降低了模塊間的耦合程序,可靈活部署在多臺(tái)機(jī)器上。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以作出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。