楊肇桐
摘要: 低空航拍可以獲得大比例尺、高精度的影像,具有響應(yīng)時間短、靈活等優(yōu)點,常用于災(zāi)害應(yīng)急制圖中。同時,救災(zāi)的緊迫性要求遙感影像能夠被快速處理。在快速處理領(lǐng)域,一般采用分布式集群計算機和多核CPU來獲得大數(shù)據(jù)量和復(fù)雜計算的加速效果,但其局限性比較大,大集群占用太大物理空間,多核CPU性能難以達到要求,而可編程圖形處理器(GPU)同時解決了分布式集群和多核CPU的局限性。特別是近年來,可編程圖形處理器的并行處理在其他領(lǐng)域得到了很好的應(yīng)用和發(fā)展。因此,研究其在遙感圖像快速處理領(lǐng)域中的應(yīng)用具有重要的現(xiàn)實意義。
關(guān)鍵詞: GPU;快速處理;錯峰調(diào)度;快速傅里葉變換
【中圖分類號】P37【文獻標(biāo)識碼】B【文章編號】1674-3733(2020)15-0226-02
分析GPU的并行可編程性和CUDA編程模型特征,通過對遙感影像錯峰調(diào)度、快速傅里葉變換和高斯差分算法的CUDA編程設(shè)計,在GPU上實現(xiàn)這3種算法的快速并行處理,并與CPU結(jié)果對比,證明GPU能夠在數(shù)據(jù)精度和CPU保持一致的基礎(chǔ)上大幅縮短遙感影像處理時間,加速比可以達到一個數(shù)量級。
1影像處理算法分析CUDA設(shè)計
1.1錯峰調(diào)度算法分析優(yōu)化。在改正航攝過程中,由于航攝軸傾斜、中心投影、大氣折光、地球曲率等因素影響會產(chǎn)生影像幾何變形問題。錯峰調(diào)度算法模型在進行共線方程計算像點坐標(biāo)、灰度插值這兩個有大量迭代和計算的作業(yè)中,可通過選擇適合的作業(yè)啟動時間,實現(xiàn)不同作業(yè)高低峰負載的交叉重疊,以充分利用計算資源。
如圖1所示,在共線方程和灰度插值迭代過程中,每一步參與計算的頂點的數(shù)目是動態(tài)變化的,因此計算負載會出現(xiàn)三類變化。(1)漸降類,迭代初始階段,所有頂點均參與計算,但在后續(xù)迭代計算過程中,參與計算的頂點數(shù)目呈逐漸下降趨勢;(2)循環(huán)類,圖中頂點被分組,組內(nèi)頂點在一個迭代步內(nèi)處理,組間頂點在不同步內(nèi)處理,故計算負載循環(huán)變化;(3)拋物線類,頂點參與計算的時間點與圖的遍歷過程緊密相關(guān),計算負載呈現(xiàn)單調(diào)漸變特性。三種圖算法類的差異化的頂點收斂速度為
這三種變化會導(dǎo)致GPU計算負載低的時候,很多線程處于空轉(zhuǎn)狀態(tài)??赏ㄟ^CUDA編程模型對共線方程和灰度插值作業(yè)的準確分類和調(diào)度啟動時間的準確計算,實現(xiàn)在基于GPU的影像幾何糾正過程中對于大量遙感影像數(shù)據(jù)的快速處理。
1.2快速傅里葉變換算法分析??焖俑道锶~變換(fast Fourier transform,F(xiàn)FT)的基本思想是利用DFT旋轉(zhuǎn)因子的周期性和對稱性,使長序列的DFT分解為更小長度的DFT,然后利用這些小的DFT計算來代替大的DFT計算,從而達到提高效率的目的。FFT算法在CPU端主要的費時操作是因為像幅大、循環(huán)次數(shù)多、計算較為復(fù)雜。設(shè)x(n)為長度為N的有限長序列,則其離散傅里葉正變換(DFT)為;
式中,稱為旋轉(zhuǎn)因子或蝶形因子。通過兩次調(diào)用一維快速傅里葉變換即可實現(xiàn)二維快速傅里葉變換。二維快速傅里葉變換的輸入相當(dāng)于一個M行N列的復(fù)數(shù)矩陣,對其每行進行一維快速傅里葉變換,再對其每列進行一維快速傅里葉變換,這樣就達到了變換的目的。根據(jù)以上算法分析,每一個像素都要依次進行行列各一次DFT變換。此算法具有相對的數(shù)據(jù)獨立性,可以利用GPU并行處理技術(shù),適合CUDA編程模型。本試驗編程調(diào)用了CUFFT函數(shù)庫。CUDA提供了封裝好的CUFFT庫,它提供了與CPU上的FFTW庫相似的接口,能夠讓使用者輕易地挖掘GPU的強大浮點處理能力,不用自己去實現(xiàn)專門的FFT內(nèi)核函數(shù)。使用者通過調(diào)用CUFFT庫的API函數(shù),即可完成FFT變換。
1.3高斯差分算法分析設(shè)計。高斯差分是SIFT匹配算法的關(guān)鍵步驟,它包括影像空間域卷積和生成DOG影像。影像空間域卷積算法簡單,即用一個窗口模板移動來平滑整幅影像;再把不同卷積模板卷積的影像對應(yīng)位置相減即得到高斯差分圖像。高斯差分算法在CPU端所需時間主要還是消耗在大量的循環(huán)和復(fù)雜的計算中。本次試驗算法決定使用5幅卷積圖像生成1組4層高斯差分影像。為了簡便算法,設(shè)計把二維卷積變換為先行卷積再列卷積,再利用卷積圖像相減得到差分圖像。根據(jù)以上算法分析,每一個像素點都要先行卷積再列卷積,再對應(yīng)位置相減。此過程具有天然的數(shù)據(jù)獨立性,非常適合GPU并行CUDA編程模型。根據(jù)高斯差分算法分析和CUDA編程模型,整個算法的實現(xiàn)流程如下:(1)CPU讀入影像,生成卷積模板;(2)CPU把影像和模板數(shù)據(jù)開辟,并拷貝顯存空間,影像放入全局存儲器,采用合并訪存的方式訪問,因為模板具有重復(fù)使用性和不改變性,所以放入共享存儲器來提高訪問速度,另外還需在全局存儲器中開辟5幅中間影像空間和5幅高斯差分結(jié)果空間;(3)在GPU端,為了確保列變換之前行變換已完成,采用CUDA中的流控制來依次啟動行列兩個卷積Kernel函數(shù),利用CUDA編程模型的多線程并行處理技術(shù)來拆分多次循環(huán),卷積在各線程內(nèi)部進行,每個線程負責(zé)一個像素點的相減;(4)在CPU端把4幅高斯差分影像拷貝到內(nèi)存,釋放各種GPU存儲器資源,并將差分影像寫入硬盤。
2CUDA試驗及精度時間分析
2.1試驗環(huán)境。為了更有效地說明圖形處理器在遙感影像快速處理領(lǐng)域的作用,所有編程試驗均在統(tǒng)一的電腦配置環(huán)境下進行,除了添加一個GPU Quadro4000顯卡外,其余配置都和經(jīng)典編程環(huán)境一致。算法實現(xiàn)的主要硬件平臺:青島海洋科學(xué)與技術(shù)-高性能計算中心提供GPU服務(wù)器(GPU計算節(jié)點8臺,每節(jié)點配置:2顆Intel Xeon E5-2680v4十四核處理器,主頻2.4GHz,256GB DDR4內(nèi)存,4個Nvidia Kepler K40M GPU加速卡)。算法依賴的主要軟件平臺:Windows 10、Visual Studio 2019、 NVIDIA GPU Computing Toolkit(CUDA 10)、FFTW和CUFFT函數(shù)庫。為了更好地體現(xiàn)圖形處理器的性能,不僅要對多幅不同像幅的原始遙感影像進行處理,還要分析算法在CPU和GPU上運算數(shù)據(jù)精度和時間的差異。
2.2CPU與GPU數(shù)據(jù)精度分析。由于CPU和GPU由不同的處理單元組成,對單浮點和雙浮點類型的支持可能不同,因此有可能會造成除法保留的小數(shù)位不同,最終造成影像灰度級別的差異。同時,由于算法必須為適合CUDA統(tǒng)一編程模型而作適當(dāng)?shù)男薷?,同樣可能存在差異,因此必須對比它們的?shù)據(jù)精度。在此,僅以單波段正射糾正為例,將基于CPU和GPU獲得的影像進行數(shù)據(jù)精度分析,統(tǒng)計兩者的差異。
2.3CPU與GPU時間分析。為了更加充分地說明GPU加速遙感影像處理的能力,采用像幅大小分別為1024像素×1024像素、2048像素×2048像素、4096像素×4096像素的遙感影像進行時間統(tǒng)計對比分析。正射糾正的最高加速比為1947/377=5.16;FFT的最高加速比為2453/233=10.53;高斯差分的最高加速比為3057/330=9.26。GPU處理遙感影像的加速比隨著像幅的增大而增加,這說明在不超過GPU存儲單元容量的條件下,遙感影像數(shù)據(jù)量越大越能體現(xiàn)GPU的加速效果,也能得到更大的加速比。僅從表1處理時間上分析,利用GPU并行處理技術(shù)可以在4096像素×4096像素像幅的情況下獲得比CPU串行高達一個量級的加速比,向影像快速處理邁進了重要一步。
總之,GPU能夠在影像正射糾正、快速傅里葉變換和高斯差分方面得到明顯的加速,并能夠在數(shù)據(jù)精度上與CPU保持一致的情況下,大幅提高遙感影像的處理速度。遙感影像處理是針對像素的操作,數(shù)據(jù)處理具有以下特點:數(shù)據(jù)量大、計算復(fù)雜、處理方法固定、處理方法具有內(nèi)在的并行特性等。遙感影像處理的這些特點決定了它適合于GPU的并行處理架構(gòu)和CUDA編程模型。認為利用GPU技術(shù)能夠?qū)崿F(xiàn)遙感圖像快速處理領(lǐng)域的巨大飛躍。
參考文獻
[1]張艷萍.遙感圖像并行處理算法的研究與應(yīng)用.2018.
[2]劉宏宇.關(guān)于基于可編程GPU的遙感影像快速處理研究.2019.