基于CUDA的高光谱图像虚拟维度并行计算.pdfVIP

基于CUDA的高光谱图像虚拟维度并行计算.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于CUDA的高光谱图像虚拟维度并行计算.pdf

第 34卷第 6期 杭州 电子 科 技 大 学 学 报 V01.34.No.6 2014年 11月 Journal of Hangzhou Dianzi University NOV.2014 基于 CUDA的高光谱图像虚拟维度并行计算 郑俊鹏 ,赵辽英 (杭州电子科技大学计算机应用研究所,浙江杭州310018) 摘要:虚拟维度表示高光谱图像中典型地物的个数。虚拟维度的确定是高光谱图像众多应用的首 要步骤。针对虚拟维度计算方法时间复杂度高的问题,根据其计算具有高度并行性的特点,该文 在图形处理单元(GPU)上使用统一计算设备架构(CUDA)和它的拓展线性代数工具箱 CULA及 Thrust实现虚拟维度的计算 ,在算法并行实现的每步都做了进一步优化以获取更大的加速性能。 通过在GPU设备上CUDA并行计算和CPU上非并行计算求虚拟维度的实验比较,验证了CUDA 并行计算可以明显加快算法的实现。 关键词:图形处理单元 ;统一计算设备架构;虚拟维度;奈曼一皮尔逊检测 ;高光谱图像 中图分类号:TP751.1 文献标识码:A 文章编号:1001—9146(2014)06—0056—05 0 引 言 由于遥感器的空间分辨力限制以及 自然界地物的复杂多样性,混合像元普遍存在于遥感图像中,为了 提高遥感应用的精度,必须要解决混合像元的分解 问题。端元个数的确定是混合像元分解的前提 J。 Chang等提出的虚拟维度(VirtualDimensionality,VD)方法 是 目前使用较多的端元数确定方法。鉴于高 光谱图像的海量数据,使用传统方法不能很好地满足高光谱图像的实时应用。分析VD算法过程发现其 具有很强的并行性,非常适合并行处理。随着在遥感高性能计算(HighPerformanceComputing,HPC)方面 的研究,并行实现已经被用于加速高光谱数据的处理 J。文献 [5]设计了基于GPU的高光谱解混系统, 其中端元提取算法HFC是基于CPU和GPU混合编程实现的,只在求解 自相关矩阵和协方差矩阵时利用 了CUDA提供的并行库,没有真正实现HFC的并行。本文实现了纯GPU的HFC算法版本,编写了基于 NVIDIA公司的计算统一设备架构(ComputeUnifiedDeviceArchitecture,CUDA)的CUDAC代码并且又做 了进一步的优化运行在NVIDIAGeForceGTX660Ti设备上得到了46.07倍加速比。 1 CUDAC程序 CUDA是由显卡制造商NVIDIA开发,用于在GPU上进行通用计算的开发平台 。NVIDIA提供了 一 种较为简便的方式编写应用于CUDA架构上的GPU代码,这是一种基于c的高级语言:cforCUDA, 简称为CUDAC,它是NVIDIA扩展和限制的类 c语言,支持大多数c语言的指令和语法E。 收稿 日期:2014—03—17 基金项 目:国家 自然科学基金资助项Et,浙江省 自然科学基金重点资助项 目(LZ14F030004),浙江省 自然科 学基金资助项 目(LY13F020044) 作者简介 :郑俊鹏 (1986一),男,河南登封人,在读研究生,高光谱并行处理. 第6期 郑俊鹏等:基于CUDA的高光谱图像虚拟维度并行计算 57 一 个CUDAC程序通常由两部分构成:一部分在主机 (CPU)上顺序执行,另外一部分在设备(GPU) 上启动成千上万个线程并行执行。NVIDIA公司研发的C编译器 (NVCC)在编译过程中将两者区分开 来。其中设备端主要是一些kemel函数,一个kemel函数并行完成整个程序的一部分,每个 kemel函数 通常会生成大量的线程来利用数据的并行性 J。通常一个大的项 目会在不同阶段启动若干个kemel函 数完成相应的计算。如果各个kemel间没有数据依赖陛可让各个kernel同时开始各 自的工作,反之,则 只能顺序启动各个kernel等全部执行完毕后将结果返回给主机端。每启动一个kemel函数就会生成一 个线程网格 ( d),网格中的线程被

文档评论(0)

月光般思恋 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档