基于CUBLAS和CUDA的MNF并行算法设计与优化

2017-05-18 07:21周海芳高畅方民权
湖南大学学报·自然科学版 2017年4期

周海芳+高畅+方民权

摘 要:为实现高光谱影像数据快速降维,基于nVidia 的图像处理单元(graphic processing unit, GPU)研究最大噪声分数变换(Maximum Noise Fraction Rotation,MNF Rotation)降维算法的并行设计与优化,通过对加速热点并行优化,择优整合,设计并实现基于CUBLAS(CUDA Basic Linear Algebra Subprograms)库的MNF-L(MNF-on-Library)算法和基于CPU/GPU异构系统的MNF-C(MNF-on-CUDA)算法.实验结果显示MNF-L算法加速11.5~60.6倍不等,MNF-C算法加速效果最好,加速46.5~92.9倍不等.研究结果表明了GPU在高光谱影像线性降维领域的巨大优势.

关键词:图像处理单元;GPU性能优化;高光谱影像降维;最大噪声分数变换;协方差矩阵计算

中图分类号:TP391.4 文献标志码:A

Parallel Algorithm Design and Performance Optimization of Maximum Noise Fraction Rotation Based on CUBLAS and CUDA

ZHOU Haifang ,GAO Chang, FANG Minquan

(School of Computer, National University of Defense Technology, Changsha 410073, China )

Abstract:To rapidly reduce the huge dimensions of hyperspectral image, this paper investigated the design and optimization of the parallel Maximum Noise Fraction (MNF) Rotation algorithm based on nVidia graphic processing units (GPUs). In particular, a MNF-L (MNF-on-Library) algorithm based on the CUBLAS library functions and a MNF-C(MNF-on-CUDA) algorithm on the CPU/GPU heterogeneous system was presented by designing mapping schemes and parallel optimizing strategies. Experiment result shows that the MNF-L algorithm can obtain the speedups between 11.5 and 60.6, and the MNF-C algorithm can get the speedups between 46.5 and 92.9. Therefore, GPUs have a great advantage in reducing dimensions of hyperspectral images.

Key words: graphic processing unit; performance optimization for GPU; dimensionality reduction of hyperspectral image; maximum noise fraction rotation; covariance matrix calculation

高光譜遥感影像具有波段连续、光谱分辨率高的特点,能从其光谱空间中获取丰富的地物特征信息,因其“图谱合一”的优势,广泛应用于农业、林业、军事、环境科学、地质等各领域,具有很好的实用性和研究价值[1-2].在数据处理过程中,连续波段成像导致高光谱影像数据量庞大,且连续波段之间数据相关性强,信息冗余大,存储处理困难,为应用和分析带来不便,如产生维数灾难、Hughes现象等[3],因此,数据降维应运而生.

怎样将高维空间数据映射到低维子空间,同时保持重要特征不被丢失是高光谱数据降维遵循的基本原则.高光谱影像降维主要涉及矩阵操作,如滤波、矩阵乘、协方差矩阵计算等,是典型的计算密集型和访存密集型过程,传统的降维过程一般采用串行方式进行,计算复杂度高,耗时长,无法满足各领域对高光谱数据及时处理的需求[4-5].

2007年,nVidia公司发布统一计算设备架构(Compute Unified Device Architecture, CUDA),GPU并行计算开始在科学计算领域承担重要角色[6].CPU+GPU异构系统在高性能计算领域表现突出,天河1A、泰坦等超级计算机相继成为TOP500榜首[7].

高光谱影像并行处理已有广泛研究,方民权[8-9]等人分别基于GPU和MIC研究了高光谱影像主成分分析降维算法,在2个GPU上获得了128倍加速比,在3个MIC上加速133倍;Sergio[10]等人基于GPU集群实现了高光谱影像实时解混;Elmaghrbay[11]等人提出了高光谱影像端元提取的快速GPU算法;Chang[12]等人实现了一种并行模拟退火方法,并成功应用到高维遥感影像数据特征提取;Santos[13]等人基于GPU平台实现了高光谱影像有损压缩算法的并行加速,表明GPU在高效数据处理方面的巨大潜力.罗耀华[14]等人首次基于GPU实现了MNF并行方法研究,在数据规模为1 036 × 235 × 229时,最高取得了4倍的加速比,但该算法仅对加速热点中的协方差矩阵运算进行了并行移植,且涉及的优化分析较少,加速效果较差.MNF作为高光谱数据特征提取的主流算法,鲜有较全面的并行化研究,本文研究正以此为契机,对该算法的并行设计进行深入分析.

最大噪声分数变换将原始数据中的噪声分离,提取影像数据的主要特征,从而表征主要信息[14-15].该算法由两层主成分变换构成,在主成分分析基础上考虑了噪声对图像的影响,具有更好的效果,是目前主流的线性降维算法,实现其并行化在高光谱降维处理领域具有重要意义.

CUBLAS库函数[16]和CUDA均可实现算法在GPU上并行加速,因其突出的加速效果而被广泛使用.采用CUDA程序设计具有很大的灵活性,实现较为复杂,需要程序员熟练掌握GPU体系结构知识及其编程模型;CUBLAS函数库内部整合了具体的并行和优化细节,为使用者提供了方便的接口,但对加速算法存在限制.

本文以MNF降维算法为基础,为实现较好的加速性能,分别基于CUBLAS库和CUDA 进行GPU上的并行算法设计,并分析比较其性能.本文结构如下:第一部分对MNF算法进行热点分析;第二部分提出并实现了基于CUBLAS库的MNF GPU并行算法MNF-L(MNF-on-Library);第三部分基于CUDA提出并实现了MNF的GPU映射和优化算法MNF-C(MNF-on-CUDA);第四部分通过实验测试并分析比较MNF-L与MNF-C的并行性能;最后是总结和展望.

1 MNF算法及热点分析

1.1 MNF算法概述

MNF算法实质是两次层叠的主成分变换,第一层用于分离并重新调节数据中的噪声,消除波段间的相关;第二层对噪声白化数据进行标准主成分变换.

用X={X1,X2,X3,…,Xs}={Y1,Y2,Y3,…,YB}T表示高光谱影像数据,用S(W×H,宽W、高H)表示图像像元数目,B表示波段数.高光谱影像实质是由B幅W×H图像组成的三维立体模型.在实际处理中,X可用B行S列的二维矩阵表示.通过MNF变换,提取主要的m个特征波段(m

Step1. 對高光谱矩阵X滤波;

Step2. 计算滤波噪声的协方差矩阵CN;

Step3. 对CN特征分解,

DN为降序排列的特征值,U为对应的特征向量,得到变换矩阵

Step4. 求原始高光谱X的协方差矩阵CD;

Step5. 对CD进行变换:

Step6. 对CD-adj特征值分解,

其中DD-adj为降序排列的特征值,V为所对应的特征向量;

1.2 加速热点分析

实现高光谱影像串行MNF降维算法,对W=614,H=1 087,B=224数据降维,测试并统计各步骤占总计算时间的比例(图1).图1数据显示, Step2和Step4中协方差矩阵计算占比最大,超过80%,Step1的滤波和Step8的MNF变换耗时较为明显,上述4个步骤是MNF算法并行设计和优化的热点.

2 基于CUBLAS的MNF并行算法

为简化GPU移植编码,nVidia引入经典BLAS(Basic Linear Algebra Subprograms)库的CUDA实现版本——CUBLAS库.CUBLAS库充分利用了GPU体系结构,从底层汇编实现了BLAS库函数的高效运算,是在GPU上进行矩阵运算的最佳选择之一,凭借其在矩阵乘法中突出的性能表现而被广泛应用[16-17].本节基于CUBLAS库设计和实现协方差矩阵计算和MNF变换,并提出MNF-L算法.

2.1 基于 CUBLAS库实现协方差矩阵计算

向量协方差计算及分解变形如公式(7):

通过式(7)变形,将协方差计算转换为向量求和∑X与向量内积∑XY运算,其中向量内积可转变为输入高光谱矩阵与其转置矩阵乘积过程.向量和与向量内积运算可用CUBLAS库实现:

1)调用CUBLAS库中的cublasSasum函数求各波段向量和,循环调用B次.

2)调用cublasSsyrk(单精度)求各波段向量内积.

cublasSsyrk 接口实现的功能为C = alpha*A*AT + beta*C,令alpha= 1.0f,beta = 0.0f,输入矩阵A为高光谱影像矩阵X.

将1)和2)的计算结果传回CPU端,并根据公式(7),在CPU端串行计算协方差矩阵中各元素值.

2.2 采用CUBLAS库实现MNF变换

MNF变换Z=TTX,实质为矩阵乘法运算,因此可直接调用CUBLAS库中矩阵乘函数cublasSgemm(单精度)加速MNF变换.

接口cublasSgemm 实现的功能为C = alpha*A*B + beta*C,为了完成Z=TTX 的功能,令alpha= 1.0f,beta = 0.0f,其中输入参数A为变换矩阵TT,参数B为高光谱影像X.

2.3 基于CUBLAS库的MNF-L (MNF-on-Library)算法

上述两节分别介绍了使用CUBLAS库函数加速协方差矩阵计算和MNF变换的过程,而串行算法的另一个加速热点——滤波,在CUBLAS库函数中,没有对应的函数可直接加速.因此在MNF-L算法中,该步骤采用3.2节所述CUDA并行方案.根据上述方案,整合各热点优化过程,提出MNF-L并行算法,如图2.

在该算法过程中,多次调用CUBLAS库函数,由于函数接口只定义了浮点类型的数据运算,输入的高光谱数据存储类型为uchar,因此必须转换为浮点数据类型后,才能进行计算,引入数据类型转换开销的同时,增加了数据传输时间.

3 基于CUDA的MNF并行算法

利用CUDA编程模型设计GPU并行算法时,需要设计者根据算法特点对GPU线程组织层次进行设计和存储优化等,具有很大的灵活性,其优化效果很大程度上取决于设计者的映射方法,访存设计等诸多细节.本节基于CUDA C,对串行算法中的3个热点分别进行了映射方案设计和优化,实现MNF并行算法.

3.1 协方差矩阵计算并行方案与优化

协方差矩阵中的元素表示各向量之间的协方差,两个向量的协方差计算公式见2.1节公式(7).

其中参与协方差计算的是各波段所有像元组成的向量,数据量较大,可通过拆分实现并行计算;另协方差矩阵中i行j列元素的计算只需波段i和波段j的数据,因此协方差矩阵中各元素的计算相互独立,可并行计算;这就使得协方差矩阵计算存在两层并行.

3.1.1 GPU上协方差矩阵计算的映射方案

GPU包含grid-block-thread 3个线程组织层次,本文针对协方差矩阵运算过程提出3种GPU映射方案.

方案1 GPU中每个thread负责协方差矩阵中一个元素的计算,如图3所示,启动B个block,每个block启动B个thread,实质是将grid中所有线程组织为B×B大小的矩阵,以此对应协方差矩阵中每个元素的计算任务.由于协方差矩阵的对称性,可先根据线程id和线程块id的大小启动下三角(上三角)位置的线程进行计算,最后将结果矩阵对称位置补齐即可.

方案2 GPU上每个block完成协方差矩阵中一个元素的计算(图4).采用二维结构组织线程块,即启动B×B大小的block方阵,各block分别对应协方差矩阵中相同位置元素的计算任务.同方案1类似,采用对称补偿的方法减少实际参与计算的线程块数目.

方案3 GPU中每个grid负责协方差矩阵中一个元素的计算,即每启动一个kernel函数完成协方差矩阵中一个元素的计算,循环 (1+B)*B/2次完成协方差矩阵中所有元素的计算.由于各波段数据量(S=W×H)庞大,协方差矩阵中单个元素计算涉及高维向量加与内积运算,将其映射到grid层可减小并行粒度,且成像波段数B一般为224,使循环次数控制在可接受范围内.

上述3种方案的本质区别在于协方差矩阵中單个元素计算的映射层次不同,后续将针对方案1展开优化研究,根据文献[8]中相关内容对方案2,3进行优化,后文3.1.3节将比较3种方案的执行效果.

3.1.2 GPU上协方差矩阵计算的共享存储优化

CUDA线程可以访问不同层次存储空间的数据,如全局,本地,共享,常量或纹理等,不同层次的存储器访问速度不同.共享存储器位于片上存储,同一个线程块内的线程可以共享访问,其访存速度比全局访存快一个数量级.

1)方案1中,同一block中的线程存在数据复用,如线程块i中的线程重复读取第i波段的影像数据,图5所示,将该波段数据存储到共享存储器中,block内所有线程直接访问共享存储,最多可减少(B-1)*S次全局访存开销.

基于2.1中式(7)对协方差计算的改写,在方案1映射结构上予以实现,其中矩阵(与其转置矩阵)相乘的过程可进行共享存储优化,如图6显示,将数据分块读取至共享存储单元,进行分块迭代.建立等同于线程块大小(thx*thx)的共享存储区,每次读取对应块到共享存储,完成分块相乘、相加;共享存储向右滑动,重复上述过程,直到数据末尾.

2)从全局存储读取数据至共享存储时,将右乘矩阵按照转置后的位置进行保存,使矩阵行列相乘转变为行行相乘,避免读取共享存储时出现bank conflict,提高矩阵相乘的效率.

根据上述思想在原始方案1基础上进行优化,并采用4组数据实验对比不同优化算法的执行时间,图7所示,优化后的执行时间比原始版本低1~2个数量级,同时使用两类优化方法的加速效果更为显著;说明本文采取的共享存储优化策略是非常有效的.

3.1.3 协方差矩阵计算不同方案的性能比较

测定4组高光谱数据在3.1.1节中3种映射方案下(优化后)的协方差矩阵计算时间(不包括数据通信时间),见图8,其中方案1采用3.1.2节两种优化方法(记为G-cov),在3种方案中性能最佳,说明本文选择的设计方案和进行的优化改进具有显著的成效.

3.2 噪声估计(滤波)的并行映射与优化

滤波是对像素点进行处理以得到相应点的噪声估计值,该步骤需要目标点及周围8个点参与运算.图像各点的滤波计算相互独立,不存在相互依赖,因此图像中所有像元点都能并行计算,且高光谱图像不同波段也能并行计算.在GPU中,每个线程可用来计算一个像元的噪声估计值.

3.2.1 噪声估计(滤波)的并行映射方案

GPU上每个线程完成高光谱矩阵中一个元素的滤波任务,如图9(记为method1),边界噪声事先置零,不参与映射,启动H-2个线程块,每个线程块内启动W-2个thread,将噪声矩阵非边界元素的滤波任务映射到相应的线程中进行计算,每次完成一个波段的映射,每个线程循环计算B次,完成所有波段元素的滤波任务.

改变method1中线程块及线程的组织方式,均采用二维分布,将噪声矩阵分块映射,得到映射图10(记为method2).

3.2.2 滤波的GPU细粒度优化

针对滤波过程,主要采取以下两种优化方法:

1)利用寄存器替换本地存储访问.

原执行函数采用中间值滤波,是对包括原滤波点在内的周围9个点进行排序,选取中间的点与原滤波点做差,在这个过程中,将使用本地存储器,而无法使用寄存器,本地存储实际存储在显存中,访存延迟大,因此性能较差.

改进滤波函数,采用均值滤波,即将周围所有点相加求得的平均值与原滤波点比对,此时,无需本地存储器,而仅需要寄存器参与运算,可大大加快滤波过程.经验证,改进的滤波函数不影响处理精度,因此可采用改进方法替代原方法.

2)利用共享存储减少复用数据的全局访存.

在滤波过程中,非边界的点会被相邻的9个点滤波使用,因此存在9次复用.利用共享存储访存快、线程块内共享的属性,可以先将线程块所需要的数据读入共享存储,各线程需要时从共享存储读取数据,此时只需访问一次全局存储,减少了8次全局存储访问.

图9,图10的方案中,由于block组织方式不同,采取的共享存储数据也有所差异.

method1中每个线程块负责一行数据的滤波,因此,将该行与前、后两行读取到共享存储区(图11).共享存储大小为3*S个字节,线程块内所有线程并行读取一次(个别线程读取两次)可完成本地到共享空间的转储.

图12显示,将method2中各矩阵块及其周围元素数据读取到该数据块滤波映射的线程块中,使该block内所有线程可以直接从共享存储区读取计算数据.

3.2.3 不同优化下的滤波计算性能对比

以W=614,H=1 087,B=224的高光谱数据为输入,对比不同方法的执行时间,图13前两组数据为method1分别采用中间值滤波和均值滤波的kernel执行时间(不包括通信时间),结果表明改进后执行时间减少了一半以上,均值滤波中寄存器访存加速效果显著.

method1,method2均同时采用均值滤波和共享存储优化进行实现,比较两种方法优化后的执行时间,如图13后两组数据显示,二者执行时间十分接近,较均值滤波优化方法提高3~4 ms,加速比例为11.7%~15.6%,说明3.2.2节讨论的两类优化均能使算法取得加速效果.

3.3 MNF变换的GPU映射

2.2节采用CUBLAS库中矩阵乘函数实现MNF变换,本节针对MNF变换中相乘矩阵规模的特殊性,在传统矩阵乘并行方案基础上进行并行设计、改进存储策略,以充分发挥加速潜能.

3.3.1 MNF变换的映射方案

图14为映射图,根据分块计算的思想,将结果矩阵纵向分割,每个线程块完成一个分割块的计算,即线程块采用一维分布,各block负责blockDim.x列数据的计算.由于S一般远远超过block数量,因此,每个block执行完一块计算后,固定跳步到下一块计算,直到所有分块完成.

每个线程块采用二维结构组织线程,每个线程负责相应位置元素的计算,如果m(波段数)大于blockDim.y,各线程最多需循环计算(m+blockDim.y-1)/blockDim.y次,通常数据降维后波段数小于32,设置blockDim.y为16,使每个block纵向最多映射2次.

3.3.2 MNF变换的优化策略和性能比较

单个线程中实质进行的是向量乘法运算,需要不断的读取变换矩阵各行数据与高光谱影像各列数据,直接的global 访存延迟大,效率低,因此考虑使用共享存储降低读取数据带来的延迟,而考虑到变换矩阵规模较小(一般小于32×224),没有超出常量存储器的存储容量(64 kB),因此可直接将变换矩阵整体保存在常量存储中,进一步提升访问速度的同时,避免各线程重复读取数据到共享存储.

因此在该步骤中进行了如下优化:

1)采用常量存储器存储变换矩阵;

2)使用共享存储器存储原始图像B×blockDim.x大小的块数据.

根据不同的优化方式实现了4类优化版本:

v0)全局访存,无共享存储优化;

v1)仅使用共享存储优化;

v2)仅使用常量存储优化;

v3)同时使用共享存储和常量存储.

图15展示了4类版本的性能对比,4组数据测试下的性能比较结果保持一致,即优化效果v3>v1>v2>v0,v3性能最好,说明采用共享存储和常量存储均能取得优化效果;随着X数据量增加,v1较v2优势渐增,由于v2仅对变换矩阵使用常量存储优化,其全局访存主要来自X,随X数据量增大,v2全局访存次数将显著增加.

3.4 基于CUDA C的MNF-C(MNF-on-CUDA)

算法

参照前3节中关于协方差矩阵计算、滤波和MNF变换的GPU并行映射方案和优化效果,以最优方案替代串行算法中的相应步骤,整合提出MNF-C算法,圖16为其流程图.

其中,第3个GPU kernel执行期间,CPU端计算与GPU端协方差矩阵计算可同时进行,实现了Host(CPU)与device(GPU)计算重叠,充分发挥了异构系统的并行优势.

4 实验结果

4.1 实验平台和测试数据集

本文使用CUDA C实现上述算法.实验平台为GPU微型超算平台,包含2个8核的Intel(R) Xeon(R) CPU E5-2670和nVidia Kepler架构的Tesla K20c GPU,采用Intel(R) C Compiler XE 13.0.0.079和CUDA5.5工具包进行编译.

实验采用了4组AVIRIS高光谱数据,数据已经经过预处理,将光谱数据转换为unsigned char类型存储在二进制文件中.表1详细列出了测试集的信息.

4.2 MNF-L与MNF-C性能对比

4.2.1 协方差矩阵计算性能对比

对比MNF-L中采用CUBLAS库函数和MNF-C中程序语言实现协方差矩阵的执行效率,采用4组数据计算总执行时间,并分别标识运算、通信、创建销毁等不同阶段.如图17所示,CUDA 实现版本(记为G-cov)同CUBLAS版本(记为L-cov)总执行时间几乎相同,各有两次稍占优势,但整体相差细微.

高光谱数据集&实现方案

G-cov与L-cov执行热点主要集中在cov运算和数据传输,但最耗时阶段形成鲜明对比,G-cov主要集中在运算阶段,通信开销较小,L-cov则与之相反.CUBLAS库接口定义的数据类型均为浮点型,而高光谱数据初始为unsigned char,运算前需要进行类型转换,数据量增加3倍,导致巨大通信开销.

4.2.2 MNF变换性能对比

见表2,v3(3.3节)在MNF-C算法中采用的CUDA C实现的MNF变换,对比MNF-L中CUBLAS库函数实现的执行时间.

CUBLAS库函数加速效果优于v3版本,说明CUDA C的设计和优化仍存在加速空间;但在实验中发现CUBLAS首次启动需要约200 ms的启动开销,大于CUDA C中的kernel的启动开销,如果只进行一次矩阵乘法,将难以发挥其运算优势.

同时随数据规模不断增加,CUBLAS的缺点逐渐显现,如通信开销、存储限制等,4.4节将进行具体分析.

4.2.3 并行算法加速比

实验分别测试了表1中4组数据的串行MNF降维、MNF-L和MNF-C并行降维时间(表3),计算MNF-L与MNF-C相对于串行MNF的加速比(图18).图中数据显示,基于CUBLAS库实现的MNF-L算法可加速11.5~60.6倍不等;MNF-C算法加速效果最好,可加速46.5~92.9倍不等.

文献[14]对MNF算法中协方差矩阵计算进行了热点加速,使用3组高光谱数据进行测试,实验显示,随高光谱图像数据量增大,并行加速效果增加,当最大数据集为1 036 × 235 × 229时,加速比为4.58.而本文设计实现的两种算法各有特色,较文献[14],采用了更全面的优化策略和测试数据集,不仅协方差矩阵计算实现了更好的加速比,还发掘出滤波、MNF变换等步骤的加速潜能,加速效果提升了数十倍,可应用于高光谱等较大规模数据的特征提取,将大大提高执行效率.

4.3 实验讨论

输入不同测试数据,计算MNF-C和MNF-L算法执行时间比值(图19),实验结果显示,MNF-C算法加速效果优于MNF-L算法,随数据集不断增大,两种算法性能差距逐渐缩小.

高光谱数据集

根据算法特点,对MNF-L与MNF-C进行比较分析:

1)MNF-L中CUBLAS库函数计算前需要先将unsigned char数据转换为float型,引入了数据转换和通信开销.

2)MNF-C可显式调整算法步骤,实现host与device的计算重叠,而MNF-L中的CUBLAS库函数隐藏相关细节,无法实现不同设备间的协同计算.

3)在协方差矩阵计算部分,两算法加速效果相近.虽然MNF变换中CUBLAS库函数颇具优势,但该步骤所占时间比重较小,使得加速程度受限,加之CUBLAS库函数的首次启动开销,一定程度上削弱了MNF-L算法的优势.

4)随数据量增大,MNF-L加速效果逐渐提升,运算优势一定程度弥补了通信开销,但对于更大规模的测试数据,所需存储空间容量至少为高光谱数据的 4倍(使用双精度接口函数达8倍),将导致显存不足.

两类算法各有特点,可应用于不同的加速需求领域.基于CUBLAS库设计的并行算法,实现简单,代码简洁,隐藏了相关算法的实现细节,对程序员是透明的,较容易掌握,可用于复杂和编码量较大的算法.除了CUBLAS库,CUDA还提供了一系列GPU加速库函数,如针对计算机视觉和计算流体力学的cusolverDN库、应用于化学反应动力学的cusolverSP、cusolverRF库,应用于深度学习的cuDNN等,此类科学计算方法一般算法复杂,为简化实现,采用GPU库函数加速是最为直接和快速的方法.而对于GPU加速库函数难以实现的功能或者对时效性要求较高的高端应用领域,需要获得尽可能高的性能加速比, 那么CUDA并行设计则成为必要选择.

总之,并行程序设计必须以运算结果正确为前提,根据算法特点、应用场景、性能要求等多方面合理选择实现方案.

5 结 论

本文基于CPU/GPU异构系统研究了高光谱线性降维方法MNF的并行实现技术,提出了切实有效的MNF并行算法.分别针对协方差矩阵计算、滤波、MNF变换等热点进行GPU并行加速和优化研究,设计并实现了基于CUBLAS库的MNF-L算法和基于CUDA的MNF-C并行降维算法.实验结果显示MNF-L算法加速11.5~60.6倍,MNF-C加速效果较好,获得了46.5~92.9的加速比.最后对基于CUBLAS和CUDA实现的方法在性能、算法、应用领域等方面进行了分析討论.

针对本文应用领域——高光谱遥感数据降维,后续工作将围绕可较好体现高维空间结构的非线性降维算法展开并行优化的研究.

参考文献

[1] 赵英时.遥感应用分析原理与方法[M].北京:科学出版社,2003:5-30.

ZHAO Yingshi.The principle and method of analysis of remote sensing application[M].Beijing:Science Press,2003:5-30.(In Chinese)

[2] 张良培,张立福.高光谱遥感[M].武汉:武汉大学出版社,2005:30-88.

ZHANG Liangpei,ZHANG Lifu. Hyperspectral remote sensing[M].Wuhan: Wuhan University Press,2005:30-88. (In Chinese)

[3] HUGHES G. On the mean accuracy of statistical pattern recognizers[J]. IEEE Transactions on Information Theory, 1968, 14(1):55-63.

[4] UTO K, KOSUGI Y, SAITO G.Semi-supervised hyperspectral subspace learning based on a generalized eigenvalue problem for regression and dimensionality reduction[J].IEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing,2014,7(6): 2583-2599.

[5] JIA Xiuping, JOHN A Richards. Efficient transmission and classification of hyperspectral image data[J]. IEEE Transactions on Geoscience and Remote Sensing,2003,41(5):1129-1131.

[6] 张见明,余列祥,刘路平.基于GPU 加速的边界面法正则积分的研究[J].湖南大学学报:自然科学版,2013,40(3):41-45.

ZHANG Jianming,YU Liexiang,LIU Luping. Research on regular integration in boundary face method based on GPU-acceleration[J]. Journal of Hunan University:Natural Sciences,2013,40(3):41-45. (In Chinese)

[7] TOP500. TOP500 Supercomputer Sites[EB/OL].http://www.top500.org.

[8] 方民权, 周海芳, 申小龙. 基于GPU的高光谱PCA降维多级并行算法[J]. 东北大学学报:自然科学版, 2014,35(S1): 238-243.

FANG Minquan, ZHOU Haifang, SHEN Xiaolong. Multilevel parallel algorithm of PCA dimensionality reduction for hyperspectral image on GPU[J]. Journal of Northeastern University:Natural Science, 2014, 35(S1): 238-243. (In Chinese)

[9] 方民权, 张卫民, 张理论, 等. 面向MIC的高光谱影像降维多级并行算法及性能优化[J]. 东北大学学报:自然科学版, 2014, 35(S1): 25-30,36.

FANG Minquan, ZHANG Weimin, ZHANG Lilun, et al. Multilevel parallel algorithms and performance optimization of hyperspectral image dimensionality reduction on MIC[J]. Journal of Northeastern University:Natural Science, 2014, 35(S1): 25-30,36. (In Chinese)

[10]SERGIO Sánchez,RUI Ramalho,LEONEL Sousa. Antonio Plaza,real-time implementation of remotely sensed hyperspectral image unmixing on GPUs[J].Journal of Real-Time Image Processing,2015,10(3):469-483.

[11]ELMAGHRBAY M, AMMAR R, RAJASEKARAN S. Fast GPU algorithms for endmember extraction from hyperspectral images[C]// Proceedings of the 2012 IEEE Symposium on Computers and Communications (ISCC 12).Cappadocia,2012: 000631-000636.

[12]CHANG Y L , CHEN K S , HUANG B, et al. A parallel simulated annealing approach to band selection for high-dimensional remote sensing images[J]. IEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing,2011,4(3):579-590.

[13]SANTOS L, MAGLIE, VITULLI R,et al. Highly-parallel GPU architecture for lossy hyperspectral image compression[J]. IEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing, 2013,6(2):670-681.

[14]羅耀华,郭科,赵仕波.基于GPU 的高光谱遥感MNF并行方法研究[J]. 四川师范大学学报:自然科学版, 2013,36(3):476-479.

LUO Yaohua,GUO Ke,ZHAO Shibo.Minimum noise fraction of hyperspectral remote sensing in parallel computing based on GPU[J]. Journal of Sichuan Normal University:Natural Science,2013, 36(3):476-479. (In Chinese)

[15]LIU Xiang,ZHANG Bing,GAO Lianru,et al. A maximum noise fraction transform with improved noise estimation for hyperspectral images[J].Science in China, Series F: Information Sciences,2009(9):1578-1587.

[16]MANUEL Carcenac.From tile algorithm to stripe algorithm: a CUBLAS-based parallel implementation on GPUs of Gauss method for the resolution of extremely large dense linear systems stored on an array of solid state devices[J].The Journal of Supercomputing,2014,68(1):365-413.

[17]ZHANG Bo,YANG Xiang,YANG Fei,et al. The CUBLAS and CULA based GPU acceleration of adaptive finite element framework for bioluminescence tomography[J].Optics Express,2010, 18(19):20201-20214.