GPUOpenCL入门学习.docVIP

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

学习报告 本月的学习内容是:第一,认识GPU的结构特点及特性;第二,了解如何用OpenCL语言将一段简单的图像处理程序进行改写,由CPU上转至GPU上处理,并对比两者的优劣;第三,用GPU相关识别软件获取GPU参数,了解哪些参数影响程序的处理效率。 以下是完整的学习过程: 一、GPU GPU即图形处理器(英语:Graphics Processing Unit,缩写:GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器。的区别在于存在于片内的缓存体系和数字逻辑运算单元的结构差异:CPU虽然有多核,但总数没有超过两位数,每个核都有足够大的缓存和足够多的数字和逻辑运算单元,并辅助有很多加速分支判断甚至更复杂的逻辑判断的硬件;GPU的核数远超CPU,被称为众核(NVIDIA Fermi有512个核)。每个核拥有的缓存大小相对小,数字逻辑运算单元也少而简单(GPU初始时在浮点计算上一直弱于CPU)。GPU的众核架构非常适合把同样的指令流并行发送到众核上,采用不同的输入数据执行。在2003-2004年左右,图形学之外的领域专家开始注意到GPU与众不同的计算能力,开始尝试把GPU用于通用计算(即GPGPU)。之后NVIDIA发布了CUDA,AMD和Apple等公司也发布了OpenCL,GPU开始在通用计算领域得到广泛应用,包括:数值分析,海量数据处理(排序,Map-Reduce等),金融分析等等。OpenCL(Open Computing Language,开放计算语言) 是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器组成。OpenCL由一门用于编写kernels (在OpenCL设备上运行的函数)的语言(基于C99)和一组用于定义并控制平台的API组成。OpenCL提供了基于任务分区和数据分区的并行计算机制。 安装完毕后,可运行cmd,键入clinfo查看相关信息。 2、配置OpenCL工程 如果不进行配置的话,则会在“生成-生成解决方案”时,提示以下错误“fatal error C1083: 无法打开包括文件:“CL/cl.h”: No such file or directory” C/C++-常规-附加包含目录添加$(AMDAPPSDKROOT)include,如图; 链接器-输入,附加依赖项里加入OpenCL.lib,如图; 链接器-常规附加库目录,加入$(AMDAPPSDKROOT)lib\x86_64,如图; 经上述步骤调试后,就可以运行OpenCL程序了。 三、基于GPU的SIFT向量计算 本次实验的主要内容是读取一幅图像的行列梯度矩阵,并计算每一个像素的SIFT向量,最后进行向量的归一化处理即完成SIFT向量计算。原本基于CPU的SIFT向量计算处理耗时较长,如图。 现基于GPU的SIFT向量计算处理耗时较短,明显优化,如图。 根据GPU多线程多处理核心的特点,GPU在处理SIFT向量计算上有着较大优势,有效节约系统资源,提升计算效率。 四、影响OpenCL程序的GPU参数 对于OpenCL程序来说,开发者只要知道大概的OpenCL C的语法和Runtime API调用,把for循环替换成kernel线程,就能使用OpenCL获得明显的加速比。 AMD的GPU是由多个Comput Unit(CU,运算单元)组成的,CU的数目和架构因不同的显卡系列和型号有差别。一个CU含有多个Processing Elements,又被称为Streaming Processor,一个work-item线程运行时将占用一个PE。非GCN架构,以Evergreen和Northen Islands设备为代表。我们先来了解一下出现在GCN之前的AMD传统显卡架构。简单来讲,每一个Compute Unit都是一个SIMD(Single Instruction, Multiple Data)运算部件,共享同一个Program counter。每一个Compute Unit含有16个Processing Element(PE)。每个PE有自己的General-Purpose Registers(GPR)寄存器;根据设备不同,可能含有3到4个负责向量运算的ALU,一个标量运算的ALU和一个分支执行单元 通过GPU caps viewer以及clinfo指令可以得知,实验所使用的AMD Radeon HD7400共有2个计算单元(Compute Units),含160个流处理器(Stream Processors或Processing Elements),其最大的work-item size为256x

文档评论(0)

haihang2017 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档