黨 妮,范志芳
(1.中國(guó)空間技術(shù)研究院西安分院,西安 710000; 2.航天東方紅衛(wèi)星有限公司,北京 100094)
遙感衛(wèi)星[1-6]在實(shí)際的應(yīng)用中越來(lái)越廣泛,尤其是在軍事偵察、資源探測(cè)等方面。遙感衛(wèi)星是低軌道衛(wèi)星[7-12],其在國(guó)防和民用等方面均發(fā)揮著巨大作用,數(shù)據(jù)處理與傳輸系統(tǒng)的主要功能就是完成數(shù)據(jù)的傳輸以及處理,遙感數(shù)傳從最初的低碼速率逐漸發(fā)展到如今的高碼速率的傳輸與處理,經(jīng)歷了從單一的傳輸?shù)教幚韨鬏敗膯我贿b感器的傳輸?shù)蕉噙b感器的傳輸、從分離結(jié)構(gòu)到集中結(jié)構(gòu)等過(guò)程,目前,遙感衛(wèi)星的數(shù)據(jù)處理與傳輸已經(jīng)發(fā)展為一個(gè)較復(fù)雜的系統(tǒng)。數(shù)據(jù)處理與傳輸?shù)闹饕蝿?wù)就是將遙感數(shù)據(jù)準(zhǔn)確地傳到地面,而隨著數(shù)據(jù)傳輸速率的越來(lái)越高和圖像的復(fù)雜度越來(lái)越大,對(duì)數(shù)傳基帶處理系統(tǒng)的要求也越來(lái)越高。如何更加高效、高速率地完成地面數(shù)據(jù)基帶處理成為了難點(diǎn)。
為滿足當(dāng)前衛(wèi)星數(shù)傳基帶處理系統(tǒng)的要求,本文提出一種基于OpenMP[13]多核并行機(jī)制的基帶數(shù)據(jù)處理方法[14],該基帶數(shù)據(jù)處理方法具有如下優(yōu)點(diǎn):1)該方法能夠?qū)崿F(xiàn)實(shí)時(shí)數(shù)據(jù)處理;2)充分利用CPU多核并行調(diào)度的設(shè)備數(shù)據(jù)處理能力,大大提高了設(shè)備的資源利用率;3)運(yùn)用了多核調(diào)度、多核指定、并行處理機(jī)制來(lái)完成數(shù)據(jù)處理,大幅度提高了數(shù)據(jù)處理速度,為整個(gè)數(shù)據(jù)處理過(guò)程節(jié)約了時(shí)間;4)采用了雙緩存機(jī)制,保證數(shù)據(jù)的有效性、穩(wěn)定性以及可靠性;5)采用乒乓緩存控制處理機(jī)制,解決數(shù)據(jù)的突發(fā)性和集中性給軟件系統(tǒng)帶來(lái)的阻塞,并有效地控制數(shù)據(jù)在處理和傳輸過(guò)程中的流暢性。
OpenMP是串行編程語(yǔ)言上的一種擴(kuò)展,是為在多核處理器上能夠編寫并行程序而設(shè)計(jì)的一種API,其目標(biāo)是為具有統(tǒng)一地址空間的并行系統(tǒng)提供可移植、可擴(kuò)展的開發(fā)接口。OpenMP比較適合單機(jī)多核上的并行計(jì)算,而且程序并行化簡(jiǎn)單,可以把更多的精力投入到并行算法本身,而非具體實(shí)現(xiàn)細(xì)節(jié)。在共享存儲(chǔ)平臺(tái)上工作,采用OpenMP具有簡(jiǎn)單易行、移植性好等特點(diǎn),是共享存儲(chǔ)系統(tǒng)并行編程的工業(yè)標(biāo)準(zhǔn),提供對(duì)并行區(qū)域、工作區(qū)間共享、同步等處理的支持。隨著計(jì)算機(jī)技術(shù)的發(fā)展和多核處理器的普及,OpenMP作為多核結(jié)構(gòu)編程模型的有力競(jìng)爭(zhēng)者,在眾多領(lǐng)域得到了越來(lái)越多的應(yīng)用。
為了最大限度地提高數(shù)據(jù)處理的實(shí)時(shí)性,解壓縮軟件在系統(tǒng)中的平臺(tái)上建立了多個(gè)線程進(jìn)行數(shù)據(jù)后處理,將數(shù)據(jù)后處理過(guò)程分解到多個(gè)線程中并行處理;同時(shí)充分利用CPU多核并行調(diào)度的設(shè)備數(shù)據(jù)處理能力,提高數(shù)據(jù)處理速度,降低數(shù)據(jù)處理時(shí)間。在解壓縮軟件設(shè)計(jì)過(guò)程中成功運(yùn)用了多核調(diào)度、多核指定、并行處理機(jī)制來(lái)完成數(shù)據(jù)后處理過(guò)程,大幅度提高了數(shù)據(jù)處理速度,為整個(gè)數(shù)據(jù)處理過(guò)程節(jié)約了時(shí)間。
同樣,為保證多核多線程處理機(jī)制的穩(wěn)定性以及數(shù)據(jù)的可靠性,多級(jí)多緩存機(jī)制在各處理模塊中起著重要的數(shù)據(jù)轉(zhuǎn)換和樞紐作用。采用了雙緩存機(jī)制,保證數(shù)據(jù)的有效性以及可靠性。采用乒乓緩存控制處理機(jī)制,解決數(shù)據(jù)的突發(fā)性以及集中性給軟件系統(tǒng)帶來(lái)的阻塞,并有效的控制數(shù)據(jù)在處理和傳輸過(guò)程中的流暢性。配套多線程處理機(jī)制,進(jìn)一步有效的提高數(shù)據(jù)后處理穩(wěn)定性、可靠性、非阻塞性,縮短了后處理時(shí)延,保證數(shù)據(jù)處理的實(shí)時(shí)性。
本文提出一種基于OpenMP多核并行機(jī)制的算法實(shí)現(xiàn),并對(duì)該算法進(jìn)行了驗(yàn)證,通過(guò)在系統(tǒng)平臺(tái)上建立多個(gè)線程,并將數(shù)據(jù)處理分解到多個(gè)線程中進(jìn)行并行處理,解決了衛(wèi)星處理的實(shí)時(shí)性差、低效率、高耗時(shí)、低可靠性、穩(wěn)定性差等問題,符合當(dāng)前衛(wèi)星的快響發(fā)展理念,有效提升了衛(wèi)星處理的實(shí)時(shí)性。
如圖1所示,基于OpenMP多核并行機(jī)制的數(shù)據(jù)處理方法具體流程說(shuō)明如下:
1)并行化解壓縮算法軟件首先讀取配置文件,根據(jù)配置文件里面的內(nèi)容對(duì)軟件進(jìn)行初始化設(shè)置同時(shí)啟動(dòng)該軟件;
2)該軟件一旦啟動(dòng),即開始連接集群軟件,等待集群軟件下發(fā)命令(包括啟動(dòng)某一項(xiàng)處理任務(wù)、是否連接前端發(fā)送軟件、是否連接后端接收軟件、終止任務(wù)等);
3)若并行化解壓縮算法軟件收到的是任務(wù)終止命令,那么,該軟件立即終止本次任務(wù),等待集群下發(fā)下一次任務(wù);
4)若并行化解壓縮算法軟件收到的是啟動(dòng)任務(wù)命令,該軟件立即開始執(zhí)行本次任務(wù),具體的處理過(guò)程為:
a)首先,并行化解壓縮算法軟件接收前端發(fā)送軟件傳輸過(guò)來(lái)的原始?jí)嚎s碼流數(shù)據(jù);
b)根據(jù)讀取配置參數(shù)進(jìn)行數(shù)據(jù)解析,包括本次任務(wù)是當(dāng)前任務(wù)數(shù)據(jù)的衛(wèi)星標(biāo)識(shí)、下傳的數(shù)據(jù)時(shí)間點(diǎn)、下傳數(shù)據(jù)的軌道號(hào)、下傳數(shù)據(jù)的通道號(hào)等,因?yàn)閷?duì)于不同的衛(wèi)星、軌道、通道等參數(shù),并行化解壓縮算法軟件的算法會(huì)有所不同;
c)對(duì)接收到的原始?jí)嚎s碼流數(shù)據(jù)進(jìn)行判讀,包括數(shù)據(jù)格式正確與否的判讀、有效標(biāo)識(shí)符的判讀、壓縮碼流長(zhǎng)度的判讀、計(jì)數(shù)器連續(xù)性的判讀等。把不符合的數(shù)據(jù)(比如數(shù)據(jù)格式不正確、標(biāo)識(shí)符錯(cuò)誤、壓縮碼流長(zhǎng)度過(guò)短或者過(guò)長(zhǎng)、計(jì)數(shù)器不連續(xù))進(jìn)行丟棄或者告警處理,丟棄無(wú)效的幀數(shù)據(jù)可以使得并行化解壓縮算法軟件的解壓縮效率更高,不必再對(duì)無(wú)效的數(shù)據(jù)進(jìn)行處理,告警處理可以方便用戶知悉本次任務(wù)的數(shù)據(jù)本身就有異常的幀數(shù)據(jù);
d)對(duì)數(shù)據(jù)進(jìn)行并行化的解壓縮處理,對(duì)不同的衛(wèi)星不同虛擬信道的數(shù)據(jù)使用的解壓縮算法不一樣,我們都對(duì)算法進(jìn)行了并行化的處理,通過(guò)并行化的解壓縮,就可以把原始的壓縮碼流數(shù)據(jù)解壓出圖像數(shù)據(jù),針對(duì)不同的衛(wèi)星型號(hào),可能還需要在解壓縮算法里面增加相應(yīng)的輔助處理,比如首先對(duì)原始?jí)嚎s碼流進(jìn)行圖像分塊,然后對(duì)小圖像塊進(jìn)行并行化的解壓縮,最后再對(duì)并行化解壓縮后的圖像數(shù)據(jù)進(jìn)行圖像拼接等處理;
e)將并行化解壓縮處理后的圖像數(shù)據(jù)發(fā)送給后端的接收軟件,以便后端軟件設(shè)備繼續(xù)對(duì)圖像數(shù)據(jù)進(jìn)行后級(jí)的優(yōu)化處理或者圖像顯示。發(fā)送機(jī)制也采用并行化的方法,對(duì)于不同的衛(wèi)星,具有的虛擬信道個(gè)數(shù)不一樣,多則幾十個(gè),少則幾個(gè),要將這么多路數(shù)據(jù)都要近乎無(wú)延遲地發(fā)送給后端設(shè)備,就需要采用并行化的方法,把這么多路數(shù)據(jù)分配到不同的發(fā)送線程中,這樣能夠保證各自都互不影響,而且能夠近乎無(wú)延遲地、實(shí)時(shí)地、同步地發(fā)送給后端接收設(shè)備;
f)該次任務(wù)處理完成,結(jié)束本次任務(wù),繼續(xù)等待下次任務(wù)下發(fā)。
圖2所示為OpenMP共享內(nèi)存模型,在系統(tǒng)平臺(tái)的地址空間滿足條件的情況下,OpenMP多核并行機(jī)制是通過(guò)在系統(tǒng)平臺(tái)上建立多個(gè)線程,并將數(shù)據(jù)處理分解到多個(gè)線程中進(jìn)行并行處理的一種方法,這些多個(gè)線程自身是獨(dú)立進(jìn)行處理各自的任務(wù),但是它們共享著同一個(gè)地址空間,多個(gè)線程內(nèi)部的地址空間分布是系統(tǒng)根據(jù)需要自動(dòng)分配的,比如,當(dāng)某個(gè)線程需要的資源空間比較多的話,就會(huì)給分配較大的空間,需要的資源空間比較少的話,就會(huì)給分配較小的空間。多線程運(yùn)算能夠保證數(shù)據(jù)處理過(guò)程的高效、穩(wěn)定,很大程度提升了軟件對(duì)數(shù)據(jù)的處理能力和運(yùn)行穩(wěn)定性,共享內(nèi)存避免了對(duì)硬盤存儲(chǔ)設(shè)備的頻繁讀寫,軟件開啟即申請(qǐng)了一定的大小內(nèi)存,同時(shí)定義線程的個(gè)數(shù)和大小,且總線程大小不能超過(guò)申請(qǐng)的內(nèi)存大小,在后續(xù)數(shù)據(jù)處理中,對(duì)線程進(jìn)行實(shí)時(shí)運(yùn)算,讓數(shù)據(jù)處理過(guò)程有條不紊地進(jìn)行,避免了處理混亂現(xiàn)象發(fā)生同時(shí)提高了數(shù)據(jù)處理的準(zhǔn)確性,這種多線程并行算法可以同時(shí)對(duì)多種數(shù)據(jù)進(jìn)行同時(shí)處理和分析,每個(gè)環(huán)節(jié)之間有其適合的緩存機(jī)制緩沖,節(jié)省了運(yùn)算時(shí)間提高軟件的效率,每個(gè)環(huán)節(jié)處理模塊分別使用不同的線程,保證每個(gè)處理環(huán)節(jié)幾乎能同時(shí)進(jìn)行,大大減小了處理延遲。
圖2 OpenMP共享內(nèi)存模型Fig.2 Model of OpenMP shared memory
為了測(cè)試在真實(shí)的衛(wèi)星數(shù)據(jù)處理情況下,采用并行調(diào)度機(jī)制下的算法性能的提升效果,采用某衛(wèi)星的真實(shí)的遙感圖片(包括城市+山川+河流)作為數(shù)據(jù)源,分別測(cè)試在4∶1模式和無(wú)損模式下算法并行化設(shè)計(jì)前后的性能并進(jìn)行對(duì)比,具體步驟如下:
1)選擇一臺(tái)機(jī)架式服務(wù)器系統(tǒng)平臺(tái),系統(tǒng)性能較優(yōu),能夠滿足任務(wù)需求。
2)為了測(cè)試使得過(guò)程是在真實(shí)的衛(wèi)星數(shù)據(jù)處理情況下,采用并行調(diào)度機(jī)制下的算法性能的提升效果,選擇采用某衛(wèi)星的真實(shí)的遙感在軌圖片(包括城市+山川+河流)作為數(shù)據(jù)源。
3)由于解壓縮在不同壓縮比下對(duì)解壓縮算法效率有影響,選擇兩種典型的壓縮比模式—4∶1壓縮模式和無(wú)損壓縮模式。
4)對(duì)4∶1模式下解壓縮算法進(jìn)行并行化設(shè)計(jì),把該壓縮比模式下的真實(shí)遙感數(shù)據(jù)分別進(jìn)行并行化解壓縮處理,并計(jì)算出該數(shù)據(jù)在并行化解壓縮處理后的指標(biāo),包括解壓縮使用的時(shí)間、解壓縮速率、所占用的CPU百分比、所占用的內(nèi)存、所占用的設(shè)備資源利用率等。
5)對(duì)4∶1模式下解壓縮算法常規(guī)未并行化設(shè)計(jì)下,把該壓縮比模式下的真實(shí)遙感數(shù)據(jù)分別進(jìn)行常規(guī)未并行化解壓縮處理,并計(jì)算出該數(shù)據(jù)在常規(guī)未并行化解壓縮處理后的指標(biāo),包括解壓縮使用的時(shí)間、解壓縮速率、所占用的CPU百分比、所占用的內(nèi)存、所占用的設(shè)備資源利用率等。
6)對(duì)無(wú)損模式下解壓縮算法進(jìn)行并行化設(shè)計(jì),把該壓縮比模式下的真實(shí)遙感數(shù)據(jù)分別進(jìn)行并行化解壓縮處理,并計(jì)算出該數(shù)據(jù)在并行化解壓縮處理后的指標(biāo),包括解壓縮使用的時(shí)間、解壓縮速率、所占用的CPU百分比、所占用的內(nèi)存、所占用的設(shè)備資源利用率等。
7)對(duì)無(wú)損模式下解壓縮算法常規(guī)未并行化設(shè)計(jì)下,把該壓縮比模式下的真實(shí)遙感數(shù)據(jù)分別進(jìn)行常規(guī)未并行化解壓縮處理,并計(jì)算出該數(shù)據(jù)在常規(guī)未并行化解壓縮處理后的指標(biāo),包括解壓縮使用的時(shí)間、解壓縮速率、所占用的CPU百分比、所占用的內(nèi)存、所占用的設(shè)備資源利用率等。
8)對(duì)步驟4~7的試驗(yàn)結(jié)果進(jìn)行分析總結(jié),并制作出表1和表2,表1為4∶1壓縮下的并行化前后結(jié)果參數(shù)對(duì)比,表2為無(wú)損壓縮下的并行化前后結(jié)果參數(shù)對(duì)比,圖3為并行前的設(shè)備資源利用率,圖4為并行后的設(shè)備資源利用率。
表1 4∶1壓縮并行化前后對(duì)比
表2 無(wú)損壓縮并行化前后對(duì)比
圖3 并行前設(shè)備資源利用率Fig.3 Pre-parallel resource utilization
圖4 并行后設(shè)備資源利用率Fig.4 Parallel resource utilization
通過(guò)表1和表2可以看出,使用了OpenMP并行化后,算法的解壓縮效率對(duì)于數(shù)據(jù)的性能提高是非常明顯的,均超過(guò)了4倍;同時(shí)從圖3和圖4可以看出,并行后解壓縮算法充分利用了CPU的并行調(diào)度機(jī)制,充分利用了多核的處理能力;從CPU的占用率上也可以看到,并行化后,CPU的占用率明顯提高,也超過(guò)了4倍,且無(wú)損壓縮的提升倍數(shù)大于4∶1壓縮的提升倍數(shù),同時(shí)算法的內(nèi)存占用率沒有明顯地提高,且隨著解碼時(shí)間的縮短,每秒解碼的兆像素?cái)?shù)有著對(duì)應(yīng)倍數(shù)的增加,這說(shuō)明OpenMP并行化后,解壓縮能夠充分利用CPU資源,提高解壓縮的效率,而且在內(nèi)存需求上不是非常明顯。
綜上測(cè)試結(jié)果表明:采用了基于OpenMP并行化調(diào)度體制下的解壓縮軟件在充分利用硬件平臺(tái)性能的基礎(chǔ)上,能提升將近4倍的解壓縮速度,從而能夠充分保證衛(wèi)星數(shù)傳基帶處理需求。
本文提出一種基于OpenMP多核并行機(jī)制的數(shù)據(jù)處理方法與驗(yàn)證方法,實(shí)現(xiàn)了數(shù)據(jù)處理的實(shí)時(shí)性;充分利用CPU多核并行調(diào)度的設(shè)備數(shù)據(jù)處理能力,提高了數(shù)據(jù)處理的速度;運(yùn)用了多核調(diào)度、多核指定、并行處理機(jī)制來(lái)完成數(shù)據(jù)處理,大幅度提高了數(shù)據(jù)處理速度,為整個(gè)數(shù)據(jù)處理過(guò)程節(jié)約了時(shí)間;采用了雙緩存機(jī)制,保證數(shù)據(jù)的有效性、穩(wěn)定性以及可靠性;采用乒乓緩存控制處理機(jī)制,解決數(shù)據(jù)的突發(fā)性以及集中性給軟件系統(tǒng)帶來(lái)的阻塞,并有效的控制數(shù)據(jù)在處理和傳輸過(guò)程中的流暢性。經(jīng)過(guò)大量的測(cè)試驗(yàn)證,在該機(jī)制下,功能處理軟件能夠完成實(shí)時(shí)高速率處理以及實(shí)時(shí)性的性能需求,該機(jī)制對(duì)于軟件的效率具有較大的提升,具有很好的應(yīng)用價(jià)值和前景。