高光譜遙感影像數(shù)據(jù)量大、操作復(fù)雜的特點(diǎn)使其處理過(guò)程對(duì)于高性能并行計(jì)算的需求是十分迫切的。高性能計(jì)算是以并行計(jì)算的形式同時(shí)使用多種計(jì)算資源解決大型且復(fù)雜的計(jì)算問(wèn)題。
目前,國(guó)內(nèi)外學(xué)者針對(duì)不同的高光譜遙感應(yīng)用研究其高性能并行計(jì)算方法。目前,基于GPU的并行計(jì)算將CPU作為主機(jī)端,其作用類似一個(gè)控制器,決定何時(shí)調(diào)用GPU函數(shù)進(jìn)行基于GPU的并行計(jì)算。該計(jì)算模型充分利用了GPU的高計(jì)算性能,卻忽視了CPU本身的運(yùn)算能力,在多核CPU普及的情況下浪費(fèi)了系統(tǒng)資源。本文提出一種基于多核CPU和GPU的并行計(jì)算模型,在GPU強(qiáng)大的計(jì)算能力進(jìn)行并行計(jì)算的同時(shí)利用多核CPU創(chuàng)建多線程進(jìn)行數(shù)據(jù)讀/寫(xiě),隱藏?cái)?shù)據(jù)I/O時(shí)間。
1 基于POS數(shù)據(jù)的幾何校正方法
在遙感數(shù)據(jù)獲取過(guò)程中,由于地形起伏、遙感器平臺(tái)位置姿態(tài)等原因,遙感影像存在不同程度的幾何畸變。遙感影像數(shù)據(jù)在面向應(yīng)用之前需進(jìn)行幾何校正,消除幾何畸變。本文所涉及的高光譜遙感影像數(shù)據(jù)幾何校正是基于POS的幾何校正。其過(guò)程包含坐標(biāo)變換和重采樣兩個(gè)部分。坐標(biāo)變換是指利用獲取遙感影像時(shí)記錄的POS數(shù)據(jù)(飛機(jī)飛行參數(shù)和姿態(tài)信息等)和測(cè)區(qū)DEM高程數(shù)據(jù)建立共線方程、求解坐標(biāo)系轉(zhuǎn)換矩陣,獲取各像元地面坐標(biāo)。坐標(biāo)轉(zhuǎn)換過(guò)程算法復(fù)雜,計(jì)算量較大。
重采樣是指根據(jù)求得的像元地面坐標(biāo)并結(jié)合原始影像數(shù)據(jù)信息,計(jì)算校正后影像像元灰度值,得到幾何校正遙感影像。重采樣過(guò)程需要在空間維和光譜維遍歷高光譜數(shù)據(jù)立方體,計(jì)算量大,數(shù)據(jù)I/O頻繁。兩個(gè)步驟的特點(diǎn)決定幾何校正過(guò)程計(jì)算耗時(shí),需通過(guò)并行計(jì)算提高其處理速度。
2 并行幾何校正
2.1 幾何校正并行方法和實(shí)現(xiàn)
坐標(biāo)轉(zhuǎn)換針對(duì)各像元進(jìn)行單獨(dú)計(jì)算,計(jì)算過(guò)程相互獨(dú)立,因此能夠采用基于GPU并行計(jì)算平臺(tái)實(shí)現(xiàn)各像元坐標(biāo)轉(zhuǎn)換矩陣并行計(jì)算。重采樣過(guò)程中各個(gè)波段之間的計(jì)算不相關(guān),屬于空間維計(jì)算,且各計(jì)算區(qū)域的相關(guān)性低。按光譜維劃分?jǐn)?shù)據(jù),依次將待處理數(shù)據(jù)塊輸入到GPU中,實(shí)現(xiàn)各空間點(diǎn)或空間區(qū)域之間的并行計(jì)算。并行計(jì)算大幅降低幾何校正過(guò)程的計(jì)算時(shí)間,高光譜數(shù)據(jù)I/O時(shí)間所占比例提升,限制了處理速度的進(jìn)一步提升。因此,研究數(shù)據(jù)I/O的優(yōu)化方法對(duì)于提升并行計(jì)算速度是十分必要的。
2.2 基于CPU和GPU系統(tǒng)的I/O優(yōu)化方法
在基于GPU的并行幾何校正算法中,重采樣部分的數(shù)據(jù)讀/寫(xiě)時(shí)間相比計(jì)算時(shí)間所占比例大幅提高,I/O瓶頸限制了并行程序運(yùn)行效率的進(jìn)一步提高。
計(jì)算模型是對(duì)一類計(jì)算機(jī)系統(tǒng)提供抽象描述,即用少量參數(shù)簡(jiǎn)單、充分地反映該系統(tǒng)的資源和性能特征?;贑PU和GPU異構(gòu)并行計(jì)算模型可由式(1)表述:
式中:Tread和Twrite是數(shù)據(jù)I/O時(shí)間;TGPU為主機(jī)端調(diào)用核函數(shù)進(jìn)行GPU并行計(jì)算的時(shí)間,包括通信時(shí)間和計(jì)算時(shí)間;T1,T2,…,TN-1,為各個(gè)CPU處理核心/線程執(zhí)行任務(wù)的處理時(shí)間。
根據(jù)式(1)所描述的計(jì)算模型,實(shí)現(xiàn)I/O優(yōu)化。在主線程進(jìn)行基于GPU的并行計(jì)算的同時(shí),創(chuàng)建多個(gè)派生線程并分配給每個(gè)線程一定任務(wù)并行執(zhí)行。針對(duì)高光譜應(yīng)用的特點(diǎn),參考流水線的并行思想,利用CPU多核特性,設(shè)計(jì)基于多線程的并行方法,將讀數(shù)據(jù)、計(jì)算、寫(xiě)數(shù)據(jù)三個(gè)互不相關(guān)的過(guò)程分配給三個(gè)線程同時(shí)運(yùn)行,線程一從磁盤(pán)讀取未計(jì)算數(shù)據(jù)塊并存到內(nèi)存中,線程二調(diào)用核函數(shù)對(duì)內(nèi)存中待計(jì)算的數(shù)據(jù)塊進(jìn)行基于GPU的并行計(jì)算,線程三對(duì)內(nèi)存中已計(jì)算數(shù)據(jù)塊的計(jì)算結(jié)果進(jìn)行寫(xiě)操作。I/O與計(jì)算并行執(zhí)行可隱藏部分I/O時(shí)間?;贑PU和GPU的并行計(jì)算每個(gè)數(shù)據(jù)塊的計(jì)算時(shí)間可由式(2)中的Ti優(yōu)化為式(3)中的Ti’。
式中:TI/O是并行讀寫(xiě)優(yōu)化后數(shù)據(jù)I/O時(shí)間。數(shù)據(jù)讀、寫(xiě)并行化能夠提高存儲(chǔ)帶寬利用率,降低I/O總時(shí)間,可知TI/O
對(duì)比式(4)和式(5),易知該處理過(guò)程通過(guò)任務(wù)級(jí)并行計(jì)算隱藏部分?jǐn)?shù)據(jù)I/O時(shí)間(此處i為處理的數(shù)據(jù)塊編號(hào),n為數(shù)據(jù)塊的總數(shù)目)。
3 實(shí)驗(yàn)結(jié)果與分析
3.1 實(shí)驗(yàn)平臺(tái)參數(shù)
基于CPU和GPU的并行計(jì)算平臺(tái)處理核心參數(shù)如表1和表2所示。