基于GPU的高光谱遥感编程模型研究
2017-10-21凌乐鑫陈志文
凌乐鑫 陈志文
摘要:随着空间分辨率和波谱分辨率的不断提高,高光谱遥感的数据量己经达到海量级别,其处理方法过程复杂,数据计算密集,可以进行并行性的优化。本文对基于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.
(作者单位:内蒙古自治区地图院)