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