NVIDIA CUDA新技术有能给我们带来什么.docVIP

  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文档。上传文档
查看更多
NVIDIA CUDA新技术有能给我们带来什么? 互联网  2009年06月15日 10:18  燕小6      809次 作为图形芯片领域的领头羊, NVIDIA(英伟达)认为GPU较CPU具有更强的浮点运算能力以及更大的带宽等诸多优势,甚至连晶体管数量目前都是GPU略胜一筹,未来GPU将越来越多地取代CPU的数据处理职能。因此,英伟达在07年就提出了独特的GPGPU(通用图形处理器)概念。目前 NVIDIA(英伟达)新一代GPU都采用了统一渲染架构,这种架构相比以往使GPU的运算单元变得通用,并可以根据图形渲染处理的负载灵活地改变运算单元的任务。这种架构集成了多个支持顶点坐标计算及三角形着色等多级处理的运算单元,各运算单元的任务可以根据各级处理的负载进行调整。新架构的出现也使得在以浮点运算为中心的通用处理中使用 GPU成为可能。 抢CPU饭碗NVIDIACUDA技术亮点何在 在这种趋势下, NVIDIA(英伟达)定制了一个解决方案,被称作Compute Unified Device Architecture,简称CUDA。这也就是今天我们介绍的主角! CUDA的编译 CUDA的本质是NVIDIA为自家的GPU编写了一套编译器NVCC极其相关的库文件。CUDA的应用程序扩展名可以选择是。cu,而不是。cpp等。NVCC是一个预处理器和编译器的混合体。当遇到CUDA代码的时候,自动编译为GPU执行的代码,也就是生成调用CUDA Driver的代码。如果碰到Host C++代码,则调用平台自己的C++编译器进行编译,比如Visual Studio C++自己的Microsoft C++ Compiler。然后调用Linker把编译好的模块组合在一起,和CUDA库与标准CC++库链接成为最终的CUDA Application。由此可见,NVCC模仿了类似于GCC一样的通用编译器的工作原理(GCC编译CC++代码本质上就是调用cc和g++)。整个 CUDA平台是通过运用显卡内的流处理器进行数学运算,并通过GPU内部的缓存共享数据,流处理器之间甚至可以互相通信,同时对数据的存储也不再约束于以 GPU的纹理方式,存取更加灵活,可以充分利用统一架构的流输出(stream out)特性,大大提高应用效率。 CUDA的运算 目前的CUDA所用的运算方法是分开的,一部分由CPU负责,而另一部分通过CUDA编译器使用GPU进行运算。在CUDA的架构下,一个程序分为两个部份:host 端和device 端。Host 端是指在CPU 上执行的部份,而device 端则是在显示芯片上执行的部份。Device端的程序又称为 “kernel”。通常host端程序会将数据准备好后,复制到显卡的内存中,再由显示芯片执行device端程序,完成后再由host端程序将结果从显卡的内存中取回。 由于显示芯片大量并行计算的特性,它处理一些问题的方式,和一般CPU是不同的。比如在内存存取latency 的问题上,CPU 通常使用cache 来减少存取主内存的次数,以避免内存latency 影响到执行效率,而显示芯片则多半没有cache(或很小),而利用并行化执行的方式来隐藏内存的latency(即,当第一个 thread 需要等待内存读取结果时,则开始执行第二个thread,依此类推),效率提高不少。正如 NVIDIA(英伟达)公司Tesla GPU计算事业部高级产品经理Sumit Gupta先生曾经推过一个形象的例子,CPU的顺序指令执行操作好比是一间办公室里的多个职员,如果每人需要将杯子里的水倒入同一个桶内时,他们需要排成长队按顺序进行。而对于GPU来说,这些职员无需排队,只要同时走到桶前将水倒入即可。所以,最适合利用CUDA处理的问题,是可以大量并行化的问题,才能有效隐藏内存的latency,并有效利用显示芯片上的大量执行单元。使用CUDA 时,同时有上千个thread在执行是很正常的。因此,如果不能大量并行化的问题,使用CUDA就没办法达到最好的效率了。 CPU存取显卡内存时只能透过PCI Express 接口,因此速度较慢(PCI Express x16 的理论带宽是双向各4GB/s),因此不能过多进行这类动作,以免降低效率。在CUDA架构下,显示芯片执行时的最小单位是thread。数个 thread 可以组成一个block。一个block 中的thread 能存取同一块共享的内存,而且可以快速进行同步的动作。每一个block 所能包含的thread 数目是有限的,不过执行相同程序的block,可以组成grid。不同block中的thread无法存取同一个共享的内存,因此无法直接互通或进行同步。因此,不同block中的thread能合作的程度是比较低的。不

文档评论(0)

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

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

1亿VIP精品文档

相关文档