CUDA并行计算架构与编程.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言,CUDA使GPU流处理器阵列的性能得到充分发挥。极大地提高了并行计算程序的效率。 关键词 并行计算,GPU通用计算,CUDA Abstract CUDA is a parallel computing architecture introduced by NVIDIA , it mainly used for large scale data-intensive computing. CUDA makes GPU a high performance in parallel computing ,data processing and other general computing. this paper discusses the CUDA computing architecture and CUDA C programming language based on GPU, CUDA makes GPU stream processor arrays fully used and Greatly improved the efficiency of parallel computing program. Keywords parallel computing ,GPU general purpose computation,CUDA 1 引言 并行计算是指同时使用多种计算资源解决计算问题的过程。并行计算科学中主要研究的是空间上的并行问题。从程序和算法设计的角度来看,并行计算又可分为数据并行和任务并行。一般来说,GPU更注重于数据并行计算,主要是将一个大任务化解成相同的各个子任务。早期的GPU研究是通过可编程计算单元为屏幕上的每个像素计算出一个颜色值即渲染问题。自CUDA C出现后,基于GPU的通用计算已经成为一个新的研究领域。通常,像素着色器对各种颜色值进行合成并计算出最终的颜色值。实际上,输入值可以为任意数据,这样不一定非要使用GPU来处理图形,还可以实现某些通用计算。由于GPU有着很高的计算吞吐量,从而给大规模的数据计算应用提供了一种比CPU更加强大的计算能力。 CUDA是一种由NVIDIA推出的并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构以及GPU内部的并行计算引擎[1]。随着显卡的发展,GPU越来越强大,在计算上已经超越了通用的CPU。如此强大的芯片如果只是作为显卡会造成计算能力的浪费,因此NVIDIA推出CUDA,让显卡可以用于图像渲染以外的目的。CUDA的GPU编程语言基于标准的C语言,通过在标准C语言的基础上增加一小部分关键字,任何有C语言基础的用户都很容易地开发CUDA的应用程序。数以千计的软件开发人员正在使用免费的CUDA软件开发工具来解决各种专业中的问题[2]。这些解决方案涵盖了石油天然气勘探、产品设计、医学成像以及科学研究等领域。 2 CUDA架构 CUDA程序架构分为两部分:主机和设备。一般而言,主机指的是CPU及其内存,设备指的是GPU[1]。在CUDA程序架构中,主程序由CPU来执行,而当遇到数据并行处理的部分,CUDA就会将程序编译成GPU能执行的程序,并传送到GPU。这种函数在CUDA里叫做核函数。在GPU中要执行的线程,根据最有效的数据共享来创建线程块,其类型不止一维。在同一个块里的线程,使用同一个共享内存。每个线程由线程ID标识。这是线程块中的线程号。为了帮助基于线程ID的复杂寻址,还可以将线程块指定为任意大小的一维、二维或高维线程阵列,并使用多个索引分量来标识每个线程[2]。线程块的大小是也有限制的,所以不能把所有的线程都放到同一个块里。可以用同样维度和大小的块来组成一个网格做批处理。执行内核的线程被组织成线程块。而线程块又组成了线程格,如图1。线程块内一起协作的线程通过一些快速的共享内存有效地共享数据并同步执行,以协调内存访问。用户可以在核函数中指定同步点。线程块中的线程在到达此同步点时挂起。 图1 线程被组织为线程格与线程块 图2 SM单元的组成 在 GPU 内部, SM 代表流处理器,即计算核心。每个 SM 中又包含 8 个标量流处理器(SP)以及少量的其他计算单元[3],如图2。实际上SP只是执行单元,并不是完整的处

文档评论(0)

xiaofei2001128 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档