凌樂鑫 陳志文
摘要:隨著空間分辨率和波譜分辨率的不斷提高,高光譜遙感的數據量己經達到海量級別,其處理方法過程復雜,數據計算密集,可以進行并行性的優化。本文對基于CUDA框架下的高光譜遙感數據GPU并行應用模型進行研究,在并行設計時,盡可能地減少循環次數和執行指令,減少通信時間,提高GPU的利用率。
關鍵詞:GPU;高光譜遙感;并行設計
GPU是計算機中顯卡的核心組成部件,不僅具備高質量、高性能圖形圖像處理能力,而且隨著技術的發展,GPU己經可以用于通用計算。特別是在在浮點數計算、并行處理等方面,GPU的性能要比CPU高出數十倍甚至上百倍。原因在于計算核心的數量,CPU的核心數量一般為是2至4個,目前己經出現8核或者16核,但是在一般的使用還是很少,而且價格昂貴,而GPU己經發展到超過240個計算核心。
1 GPU計算模型分析概述
1.1 GPU計算模型概念
目前針對大數據量高光譜遙感影像的處理主要采用多核CPU或者集群模式,CPU的工作原理是將進入CPU的計算機程序指令,經過控制單元的調度分配后送往指定的邏輯運算單元,根據計算得到處理后的數據,再存放到存儲單元中,最后交由應用程序使用,整個過程采用的是單線程的處理模式。該模式的對于環境配置和硬件要求較高,運算速度的提升空間也不理想,很難實現對于海量數高光譜遙感影像的實時處理。與之相對的,GPU的設計完全是從指令并行的角度出發的,它包含了大量的執行處理單元,因而能夠輕松的加載并行計算。高性能計算技術是圖像處理技術發展的重要方向,可編程圖形處理器(GPU)技術發展極為迅速。從并行的角度來看,現代的多核CPU針對的是指令集并行(ILP)和任務并行(TLP),而GPU則是數據并行(DLP)在同樣面積的芯片之上,CPU更多的放置了多級緩存(L1/L2/LLC)和指令并行相關的控制部件,而GPU上則更多的是運算單元;此外,GPU的顯存帶寬更大,在大數據量的處理中性能高。GPU通過執行相應的指令來完成對頂點和像素的操作。
1.2 GPU計算模型操作流程
基于GPU的圖形繪制操作分為三個主要階段進行:
(1)應用程序階段。使用高級編程語言(C, C++, JAVA等)通過對CPU、內存等進行操作,諸如碰撞檢測、場景圖建立、空間八叉樹更新、視錐裁剪等經典算法都在此階段執行;
(2)幾何階段。主要是基于GPU的數據運算,包括頂點坐標變換、光照、裁剪、投影以及屏幕映射,通過計算得到經過變換和投影之后的頂點數據,包括坐標、顏色、以及紋理坐標等;
(3)光柵階段。該階段是基于第二階段計算產生的數據,為各像素進行配色操作,完成全部圖像的繪制,而后將像素信息存儲在顏色緩沖器中。
2高光譜遙感混合像元分解算法
2.1混合像元分解概念
高光譜遙感使遙感技術完成了從定性分析向定量分析的轉變。但是,由于傳感器獲取的目標物體的光譜反射率是以像元為單位的,考慮到影像空間分辨率的限制以及目標地物的復雜性,所獲取的像元數據不僅包含了地物的光譜信息,此外,根據不同的空間分辨率,每個像元還對應了一定的面積范圍。如果在遙感圖像對應的一個像元內只含有一種地物的光譜信息,那么該像元可以稱為純凈像元或端元;反之,則稱為混合像元(mixed pixel)。在實際應用中,由于目標區的地物不可能按照理想狀態下分布,多數都是混合的分布,即你中有我,我中有你,這樣一個像元中的數據就是多種地物信息的混合,我們將這種像元為混合像元。混合像元由于是多種地物的綜合,給地物種類的精確識別造成了很大的困難,也是是遙感定量化技術發展的瓶頸。
2.2光譜混合線性模型
光譜混合從本質上可以分為線性混合模型和非線性混合模型兩種。線性光譜分解模型中,像元在指定波段下的光譜反射率是各個基本端元組分反射率按各自比例的線性組合。其具體內涵包括:
(1)空間分辨率,也就是在成像過程中探測元件投射到地面上對應的視場角度;
(2)端元中各地物光譜混合對應的線性關系,由各地物光譜的豐度和所占比例決定系數。
簡單的說,線性光譜中的混合像元光譜由各地物光譜的線性組合而成。線性模式假設混合像元中的地物間沒有相互影響,每個光子僅能識別一種物并將其信號疊加到像元光譜中。目前通常使用的端元提取方法都基于線性模每個像元都可近似為圖像各個端元的線性混合。
高光譜遙感圖像中的像元可以轉換為其L維波譜特征空間中點,其中一部分為圖像基本元素,由端元點構成。在忽略誤差項n的前提下,理論上所有的像元都可以由這些端元點進行線性組合而成,這些點的集合就形成一個n-1維空間凸集,端元就處于凸面單形體的頂面如圖1所示,就是一個二維空間下由三個端元構成的單形體。
3基于GPU的高光譜遙感編程模型
CUDA的并行環境是建立在CPU與GPU異構的基礎上的[1261, GPU和CPU分工不同,因此,在設計并行模型時,首要要解決的是線程獲取源數據的問題,特別是對于海量高光譜遙感數據而言,如果不能對數據進行合理的優化和設計,將會降低整個流程的執行能力。在GPU的并行設計中,CPU為待處理數據分配存儲空間,同時為GPU加載數據以及分配空間,控制內核函數的執行,保存GPU處理結果。CPU和GPU存在數據的通信,若采用GPU傳輸數據給GPU后CPU再執行串行任務,則當CPU處于等待數據傳輸完成的過程中,一直處于空閑狀。高光譜遙感處理算法中經常出現大規模的循環計算,這類計算對于每個線程都將執行循環,到數據進入到GPU端執行時,會產生大量的執行指令,而頻繁的進行CPU與GPU間的數據讀取將增加通信時間,而使得GPU的帶寬不能充分利用。因此,在并行設計時,要盡可能的減少循環次數和執行指令,減少通信時間,提高GPU的利用率。
3結束語
本文主要研究了混合像元分解線性模型的GPU并行設計和實現。首先對高光譜遙感混合像元分解線性模型算法進行了介紹,然后重點介紹了GPU環境下的并行設計思路,包括算法流程,GPU任務劃分,GPU端核心函數的設計思路,通過不同數據進行了實驗分析,并提出了了高光譜遙感數據GPU環境下的并行處理模型。實驗結果體現了GPU良好的加速性能,說明GPU的并行優化對于解決海量數據的處理是十分有效的。
參考文獻:
[1] 錢悅.圖形處理器CUDA編程模型的應用研究[J].計算機與數字工程,2008,36(12):177一180.
[2] 孫成剛,李崢,唐冬冬,李翔,滕紅.基于GPU的高性能并行計算應用[[J].電子信息對抗技術.2012(3):69-73.
(作者單位:內蒙古自治區地圖院)