- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
注:本文是Nvidias GT200:into the parallel processor的中文译文,原文作者为David Kanter博士
翻译本文的目的旨在明CUDA是如何在硬件上实现的,帮助编程人员编写和优化CUDA程序
感谢Call of duty的指导
简介过去十年中,计算领域出现了一个新的发展趋势:GPU通用计算。由Intel,IBM,SUN,AMD和富士通生产的通用CPU虽然有了很大发展,但性能提高速度却已经不能与与上世纪八十年代末九十年代初相比。单线程 处理的性能在很大程度上受到了限制。这些限制一方面来自于通用计算程序中过低的指令级并行;另一方面来自于“功率墙(Power Wall)”--集成电路的功率消耗的物理限制。摩尔定律能够为处理器提供数以亿计的晶体管,但在为了运行单线程程序而设计的处理器中,这些晶体管绝大多 数都被用于制造高速缓存(Cache)。这样做虽然能把处理器功耗控制在合理的范围内,却阻碍了性能的进一步提高。与此同时,GPU(图形处理单元)却有效的利用了数量巨大的晶体管资源。由于图形渲染过程的高度并行性,GPU的性能按时间呈几何级数增长。同时,随着 GPU计算能力的不断增长,一场GPU革命的时机也成熟了。GPU已经从由若干专用的固定功能单元(Fixed Function Unit)组成的专用并行处理器,进化为了以通用计算资源为主,固定功能单元为辅的架构。这一进化过程的最初征兆出现在以ATI R300和Nvidia NV30位代表的DirectX 9时代的GPU上。与前代的DirectX 8时代GPU相比,这一代的显卡拥有可编程的像素和顶点渲染器,具有了一定的浮点计算能力。AMD收购ATI也是一个微妙的转折点—大多数人当时还在关注 AMD与Intel在市场上的竞争,却没有意识到AMD的收购行为有着更加复杂的动机。支持DirectX 10的显卡的首次出现是一个分水岭:过去只能处理像素或者只能处理顶点的专门功能处理单元被通用的统一着色器架构(Unified Shader Architecture)取代了。以ATI R600和Nvidia G80为代表的DirectX10时代GPU能够提供了超越以往任何GPU的能力:它们拥有数百个功能单元,能够处理一部份过去只能在CPU上运行的数据 并行问题。需要强调的是,这些第一代的DirectX 10 GPU只能处理“一部分”数据并行问题;它们只适合处理使用类似阵列的数据结构,并且高度并行的问题。这些处理器的双精度浮点的计算能力十分有限;它们虽 然基本符合IEEE规范对32位单精度浮点的大多数规定,但同时也缺少对异常的处理,并省略了一些舍入模式。这场革命的结果使计算领域的局势突然变得复杂了许多。现在不仅有各种各样的CPU,也有了能够处理并行计算任务的GPU。这些产品的计算能力、可编程性和 适合进行的计算任务各有不同。GPU、Cell和Niagara这一类的产品优缺点都十分突出:在处理需要复杂分支的单线程任务时,它们的表现简直无药可 救;而在处理充分并行的任务时,它们的性能比CPU能够强上数十甚至数百倍。在可编程性上,Niagara和通用CPU的编程较为灵活,GPU很难处理复 杂的数据结构,而Cell简直和程序员有仇。讽刺的是,虽然ATI与CPU厂商AMD合并了,但另一家GPU厂商Nvidia却在通用计算方面有更加全面而坚实的基础。本文主要介绍Nvidia GPU在通用计算领域方面的应用,尤其是CUDA和最新一代GT200 GPU。GT200架构被使用在了面向娱乐市场的GeForce,用于高性能计算的Tesla和用于专业渲染领域的Quadro产品线上。本文并不深究 DirectX 10和OpenGL2.1中错综复杂的现代3D流水线,只有在与CUDA的编程模型进行类比时才会提到。
CUDA 执行模型Nvidia的并行编程模型被命名为CUDA(Computing Unified Device Architecture,统一计算架构模型)。CUDA的基本思想是尽量得开发线程级并行(Thread Level Parallel),这些线程能够在硬件中被动态的调度和执行。CUDA编程模型的重点是将CPU做为终端(Host),而GPU做为服务器 (Server)或协处理器(Coprocessor),或者设备(Device),从而让GPU来运行一些能够被高度线程化的程序。所以,GPU只有在 计算高度数据并行任务时才能发挥作用。在这类任务中,需要处理大量的数据,数据的储存形式类似于规则的网格,而对这数据的进行的处理则基本相同。这类数 据并行问题的经典例子有:图像处理,物理模型模拟(如计算流体力学),工程和金融模拟与分析,搜索,排序。而需要复杂数据结构的计算如树,相关矩阵,
文档评论(0)