楊紀偉,趙汝哲,張學亮,彭會湘,白 晶,顏 博,岳群彬
(中國電子科技集團公司第五十四研究所,河北 石家莊 050081)
隨著遙感技術的發(fā)展,衛(wèi)星成像技術廣泛應用于戰(zhàn)場觀測、國土普查、環(huán)境監(jiān)測和氣象預測等領域[1]。采用多星協(xié)同觀測特定目標或目標群的方法,可以充分利用衛(wèi)星資源。多星協(xié)同規(guī)劃的前提是預先計算所有衛(wèi)星對目標或目標群的可見信息[2]??焖賹崟r計算衛(wèi)星對目標的可見信息,能夠為后續(xù)任務規(guī)劃預留更多機動時間[3];如果計算耗時過長,甚至有可能影響到任務的順利進行。
傳統(tǒng)目標訪問計算通常采用多星排隊計算、單星逐點搜索的方法。多星之間按照時間先后順序,依次進行訪問計算,一顆衛(wèi)星計算完成后再繼續(xù)處理下一顆衛(wèi)星,直至所有衛(wèi)星處理完成;對于單顆衛(wèi)星的訪問計算,逐時刻點搜索最優(yōu)訪問時刻,直至所有時刻點搜索完成。該算法隨著衛(wèi)星數量和目標數量的增加,訪問計算所需的時間將線性增加。
針對多星多任務訪問計算時效性差的問題,提出了基于雙層并行架構的高速目標訪問計算技術,該技術通過多節(jié)點并行架構將不同的衛(wèi)星計算任務分配到不同的訪問計算節(jié)點,可以解決多星排隊計算的問題;通過CPU+GPU異構架構將單星單任務逐點計算問題轉化為多線程并行計算問題[4]。最后通過多顆衛(wèi)星的實測數據驗證了算法的時效性。
對地觀測衛(wèi)星的主要任務是實現(xiàn)對地面目標的準確觀測,考慮到多星協(xié)同觀測以及對衛(wèi)星反應速度的要求,需要快速、準確地計算觀測衛(wèi)星對地面目標的訪問時段及相應時段衛(wèi)星觀測目標的姿態(tài)信息[5]。目標訪問計算技術的主要功能是根據衛(wèi)星星歷數據(包括衛(wèi)星空間位置信息、衛(wèi)星速度信息和星下點地理位置信息等)、目標地理位置信息以及衛(wèi)星的約束條件(包括衛(wèi)星側擺角范圍、衛(wèi)星俯仰角范圍、衛(wèi)星傳感器成像太陽高度角等)計算衛(wèi)星對地面目標的訪問時段及對應的姿態(tài)信息(側擺角、俯仰角)。
計算衛(wèi)星指向地面目標的側擺角和俯仰角示意如圖1所示[6]。
圖1 衛(wèi)星二維指向示意Fig.1 Schematic diagram of satellite two- dimensional pointing
衛(wèi)星相機光軸在衛(wèi)星本體坐標中為(0,0,1),即指向衛(wèi)星本體坐標系z軸;不進行姿態(tài)機動時,衛(wèi)星本體坐標系與衛(wèi)星軌道坐標系重合;先繞x軸轉動側擺角θ,再繞y軸轉動俯仰角φ后,相機光軸矢量(本體坐標系z軸方向)指向目標[7]。
傳統(tǒng)目標訪問計算架構為純串行架構,如圖2所示。
收到目標訪問計算申請任務后,接收線程將任務加入到任務申請隊列中。處理線程監(jiān)視任務申請隊列,如果任務申請隊列中有待處理任務,處理線程就從申請隊列中取出第一個任務作為當前任務進行處理,當前任務處理完成后,再繼續(xù)處理下一個申請任務,任務與任務間是串行處理的,遵從“先來先服務”原則。
具體到對某一個任務的處理時,處理線程對所有時刻逐點進行搜索計算,計算對應時刻的衛(wèi)星姿態(tài)信息(側擺角、俯仰角)以及其他約束信息(太陽高度角)。計算完成后對姿態(tài)信息和約束信息進行判定,如果滿足約束條件,對結果進行記錄,如果不滿足約束條件,直接舍棄;處理完當前時刻后,將時間自加1 s。如果自加1 s后的時間已經超過時間范圍,直接結束;如果沒有超過時間范圍,則處理該時刻,直至所有時刻處理完成。
圖2 傳統(tǒng)目標訪問計算架構Fig.2 Traditional target access computing architecture
對于上述目標訪問計算架構,任務與任務之間是串行處理的,每次只能處理一個任務;任務內部所有時刻的搜索是串行處理的,每次只能處理一個時刻。
雙層并行高速目標訪問計算架構采用任務級并行和任務內部線程級并行的雙層并行策略[8],任務級并行架構如圖3所示。
圖3 任務級并行架構Fig.3 Diagram of task level parallel architecture
并行調度軟件與訪問計算節(jié)點通信的消息有2種:握手消息和計算任務消息。并行調度軟件通過握手消息判斷訪問計算節(jié)點是否正常。對于正常節(jié)點,當有任務申請時,并行調度軟件會將任務發(fā)送到空閑的訪問計算節(jié)點,如果空閑的訪問計算節(jié)點數量少于任務總數量,按照“先來先服務”原則,多出的申請任務繼續(xù)排隊,任意一個節(jié)點返回計算結果后,并行調度軟件會將排隊的任務繼續(xù)分發(fā),直到所有的任務都計算完成[9]。
對于任務級并行,當任務量增加時,可以通過擴充訪問計算節(jié)點的方式保證訪問計算的反應時間,從而減少因為任務之間進行排隊而造成的訪問計算反應時間不可控的情況發(fā)生。
線程級并行架構采用CPU+GPU異構架構,CPU負責進行邏輯處理,GPU負責大數據量的計算,CPU+GPU的異構架構之所以能夠實現(xiàn)多線程并行,是由GPU本身架構決定的。CPU與GPU的對比如圖4所示[10]。
圖4 CPU與GPU架構對比Fig.4 Comparison between CPU and GPU architecture
ALU為計算單元,相比于CPU,GPU的控制單元較少,即GPU的邏輯控制能力相對較弱,但GPU將更多的單元用于執(zhí)行數字計算。所以相比于CPU,GPU更適合大量的數字計算,卻不適合于邏輯處理[11]。
基于以上原因,采用CPU進行邏輯處理、讀寫操作;采用GPU進行數字計算。線程級并行流程如圖5所示。
圖5 線程級并行流程Fig.5 Diagram of thread level parallel process
CPU端負責讀取目標信息及衛(wèi)星約束條件,獲取星歷數據,GPU端負責進行對應時刻的姿態(tài)信息及其他約束信息的計算[12]。
具體流程為:
① CPU端讀取衛(wèi)星數據、約束條件、設定時間段內的星歷文件和目標文件,傳遞到GPU,并為GPU分配多個線程。所述的約束條件包括衛(wèi)星的最小太陽高度角、最小側擺角、最大側擺角、最小俯仰角、最大俯仰角、衛(wèi)星軌道傾角和軌道高度[13]。
② GPU端根據星歷文件、衛(wèi)星數據以及目標文件同時計算每個線程對應的星歷時刻下的星下點到目標點的球面距離以及星下點的太陽高度角。
③ GPU端根據衛(wèi)星數據計算星下點到目標點的球面最大距離,將步驟②中所得的所有星歷時刻下的星下點到目標點的球面距離分別與星下點到目標點的球面最大距離進行對比,將步驟②中所得的所有星歷時刻下的星下點的太陽高度角分別與衛(wèi)星的最小太陽高度角進行對比,若該星歷時刻下星下點到目標點球面距離小于星下點到目標點的球面最大距離,且星下點的太陽高度角大于衛(wèi)星的最小太陽高度角,則執(zhí)行步驟④;否則結束該線程。
④ GPU端計算每個星歷時刻下衛(wèi)星訪問目標的滾動角和俯仰角,將滾動角與最小側擺角和最大側擺角進行對比,將俯仰角與最小俯仰角和最大俯仰角進行對比,若滾動角在最小側擺角和最大側擺角范圍內且俯仰角在最小俯仰角和最大俯仰角范圍內,則記錄該星歷時刻及該星歷時刻下計算所得的星下點到目標點的球面距離、星下點的太陽高度角以及衛(wèi)星訪問目標的滾動角和俯仰角;否則結束本線程[14]。
具體到GPU進行數據處理,邏輯示意如圖6所示。
圖6 GPU執(zhí)行目標訪問計算示意Fig.6 The schematic diagram of GPU executing target access computing
根據GPU的核心數量和時間跨度,對GPU核心進行編號,對不同編號的核心分配不同的待執(zhí)行線程,不同的執(zhí)行線程根據編號取不同的待處理數據進行處理。
在某個線程具體進行姿態(tài)信息計算時,考慮到衛(wèi)星星下點與目標點球面距離的計算比衛(wèi)星姿態(tài)信息計算的計算量小、耗時少,首先計算衛(wèi)星星下點與目標點的球面距離,如果球面距離不滿足約束條件,該線程直接結束,相應的GPU核心可以繼續(xù)處理其他待處理任務[15]。
經實驗,對于衛(wèi)星高度500~800 km,側擺角范圍45°以內的衛(wèi)星,星歷預篩選可以篩選掉不低于85%的星歷數據,搜索速度得到了一定的提升。
從單星多目標單節(jié)點計算能力、多任務反應能力2個維度對雙層并行目標訪問計算架構與傳統(tǒng)目標訪問計算架構進行對比。
單/多計算節(jié)點、外推星歷24 h情況下,針對單/多星多目標情況進行了試驗,具體耗時和加速比如表1所示。表1中,加速比1代表單節(jié)點CPU版訪問計算耗時與單節(jié)點CPU+GPU版訪問計算耗時之比;加速比2代表單節(jié)點CPU+GPU版訪問計算耗時與10個節(jié)點CPU+GPU版訪問計算之比。
表1 單/多星目標訪問計算耗時對比Tab.1 Comparison of calculation time of single-satellite and multi-satellite target access
單節(jié)點情況下,衛(wèi)星數量、目標數量與不同計算架構下的耗時之間的關系如圖7所示。
圖7 2種計算架構下的目標訪問計算耗時Fig.7 Target access calculation time of two computing architectures
CPU,CPU+GPU兩種計算架構下的加速比曲線如圖8所示。
圖8 2種計算架構下的加速比曲線Fig.8 Acceleration ratio curve of two computing architectures
CPU+GPU異構計算架構下,單節(jié)點與任務級多節(jié)點并行時,不同的衛(wèi)星數量、目標數量對應的耗時曲線如圖9和圖10所示。
圖9 單GPU節(jié)點目標訪問計算耗時Fig.9 Target access calculation time of 1 GPU node
圖10 10 GPU節(jié)點目標訪問計算耗時Fig.10 Target access calculation time of 10 GPU node
單節(jié)點與任務級多節(jié)點并行時的加速比曲線如圖11所示。
圖11 不同并行節(jié)點數時的加速比曲線Fig.11 Acceleration ratio curve of different parallel nodes
由表1、圖7和圖8可知,對于單節(jié)點,當目標數較少時,加速比較低,隨著目標數的增加,加速比逐漸提高,但是當目標數達到一定數量后,加速比趨近于一個定值,不再提升。
由表1、圖9、圖10和圖11可知,雙層并行計算架構的加速比受并行節(jié)點數量、單次任務目標數量兩方面因素影響。當所有節(jié)點滿負荷運行時,加速比與節(jié)點數量大致成正比例關系。
本文提出了一種基于雙層并行架構的高速目標訪問計算技術,用于解決衛(wèi)星管控中多星多目標籌劃實時性差的問題。通過多節(jié)點的任務級并行,將多星任務分解為單星任務進行處理。同時,通過CPU+GPU異構架構,提高了單點目標最優(yōu)訪問時刻的搜索效率。在本文給出的數據集上的實驗,表明了該技術的有效性。