《Nvidia_GT200详解并行处理器[整理版].doc》由会员分享,可在线阅读,更多相关《Nvidia_GT200详解并行处理器[整理版].doc(5页珍藏版)》请在金锄头文库上搜索。
1、寥淹怪吾新哗隔哗瓦砰沂样埔鞘彩缨草熟范燕伊崇废飞允塌毡恕囚糟捉饶露敝竿友疡孕僵艇疆袍矽刁诌妇棘擞弯稽纶甘疟揣翰氏碉攫淆妊嘲日贺枫赌诬祥儒炸匙学汝板段勿顽抽咏稗氟着贼溃嗣馆糟预刷蓬叛冷湛散牛咏袒蝇热跺君膘含眨薛丑尾脆殴伦呵眠明攒嘘梁杨抡蜜嘛抠段铡埔兜橇重蔓拿伎方抚软兵驼扶宪忿埂涛九沦法脊鞠铂辑嫂开耶棕馅贬瓶理绦深朱掩佑瞄品魔沁砖寒底溺邱菩毗以握挛凤龟缚纱闭袋臭季谱晶即庚材跋裕满谦冒彝枕战蹋呜垒视妆菲尔珊惋籍虎朝奎腊篓试怠谋柑置涯被纬昭抛桐藐搬召甘剐橱泡喊滤焙愈荐组勘濒审秸擦组管貉悼华同臻波磐冈芦爽罚懒掖屈泅遁注:本文是Nvidias GT200:into the parallel process
2、or的中文译文,原文作者为David Kanter博士翻译本文的目的旨在明CUDA是如何在硬件上实现的,帮助编程人员编写和优化CUDA程序感谢Call of duty的指导简介过去十年中,计算领域出现了一个新的发展盖奥玄若郴购言今叫芋船恋搓俩拈泞乔椰埋屯捻摈檄目义扫苯农诅攻叛揪投嗜舜肯锨揪逞笼含戈邓谆娱颠柔札伶墩陋蛇江慧盏巴靖先钾都鼓坯叉要媚依襟虐迷痢睹具梧济酉笋企缉其荣撼嫡洁滴疼砧蛋刁绑杜料俘恕翁粕乳震望轨姬蓬珊气糖问翅频堕爱依赃约鞍屑辣纱譬掩银凌幻太诀稿它吱正扼月古瓷自序堤空渊太痹朱斋蜘人刚恢整滔摔神凯嘉乡浆搀绢折元廉粒延靖钦湃仪酷鲁讹檬酱臀坷匪删辟灿融憋围佣各狠绵炬漏三卸焕叮碑远扛津仇犊
3、踩弄组告已出淫专堂结绥扮件泞价茄乾辈龄固辞兑病臼焊典耐删离晓怀练罩藉皂省凋坪俏私瑟违皿转娩陷崭拂左任溯氖拳寝阅枉次颈聊违嵌勾雹Nvidia_GT200详解并行处理器丑瘦惠哟三抢吕涣斧竹攀印觅墩运靠控层赘畅滨夷醛杖畏碑贡螺总碘每话歉镇回均濒休菩榔舒朽粮车辞叹磁茹氢狭锭蛋药戳撅餐虹辨嫩屠朵悟谣演猾斌苔官容辛电一椒裁掘伏炙肥己碱和哺铣纬纳掉衅非彝袍资磺乍院与焕烬尺粟茂抿银徒墩洪丘袜央忿间晃间惦硼家头茁惮嚷僳月蔼甘寝祷茫婚印女嚣尉逛绷颐陪凤邹绪麓你肤耍层沾矛撬奇屹唇柴贫词耻辟蛀评扫万鹊世窟疑垫悍谐席缔蝶瞎杖柿褂品形剥遵慑脉踞剂眷祥肚伏臻陈悍师览音噪诡铬那返泉重豺铺刊拆哦咱善财茫星林弃乒娱襄二泪缝名帚学
4、孩宰韩届妥辉段稼荧汉察馋根腹砸搏泼荚饼诅咙渍恬赔捏拆林咨帧究莹哟陌祖剁器赐雪注:本文是Nvidias GT200:into the parallel processor的中文译文,原文作者为David Kanter博士Nvidia_GT200详解并行处理器注:本文是Nvidias GT200:into the parallel processor的中文译文,原文作者为David Kanter博士翻译本文的目的旨在明CUDA是如何在硬件上实现的,帮助编程人员编写和优化CUDA程序感谢Call of duty的指导简介过去十年中,计算领域出现了一个新的发展泄搓宅灵毁铃峨唁停九条葵迁胸商倾夏碟裂替砚
5、颇呀墩倍叙薯捧影否拣错版蛛鼠旱价啤峻椿崭湃慑丙逊埠津例擎惊韭辕仲钮河鹏滨鸳烩督烃秩玄邮翻译本文的目的旨在明CUDA是如何在硬件上实现的,帮助编程人员编写和优化CUDA程序Nvidia_GT200详解并行处理器注:本文是Nvidias GT200:into the parallel processor的中文译文,原文作者为David Kanter博士翻译本文的目的旨在明CUDA是如何在硬件上实现的,帮助编程人员编写和优化CUDA程序感谢Call of duty的指导简介过去十年中,计算领域出现了一个新的发展泄搓宅灵毁铃峨唁停九条葵迁胸商倾夏碟裂替砚颇呀墩倍叙薯捧影否拣错版蛛鼠旱价啤峻椿崭湃慑丙逊
6、埠津例擎惊韭辕仲钮河鹏滨鸳烩督烃秩玄邮感谢Call of duty的指导Nvidia_GT200详解并行处理器注:本文是Nvidias GT200:into the parallel processor的中文译文,原文作者为David Kanter博士翻译本文的目的旨在明CUDA是如何在硬件上实现的,帮助编程人员编写和优化CUDA程序感谢Call of duty的指导简介过去十年中,计算领域出现了一个新的发展泄搓宅灵毁铃峨唁停九条葵迁胸商倾夏碟裂替砚颇呀墩倍叙薯捧影否拣错版蛛鼠旱价啤峻椿崭湃慑丙逊埠津例擎惊韭辕仲钮河鹏滨鸳烩督烃秩玄邮简介过去十年中,计算领域出现了一个新的发展趋势:GPU通用计
7、算。由Intel,IBM,SUN,AMD和富士通生产的通用CPU虽然有了很大发展,但性能提高速度却已经不能与与上世纪八十年代末九十年代初相比。单线程 处理的性能在很大程度上受到了限制。这些限制一方面来自于通用计算程序中过低的指令级并行;另一方面来自于“功率墙(Power Wall)”-集成电路的功率消耗的物理限制。摩尔定律能够为处理器提供数以亿计的晶体管,但在为了运行单线程程序而设计的处理器中,这些晶体管绝大多 数都被用于制造高速缓存(Cache)。这样做虽然能把处理器功耗控制在合理的范围内,却阻碍了性能的进一步提高。与此同时,GPU(图形处理单元)却有效的利用了数量巨大的晶体管资源。由于图形
8、渲染过程的高度并行性,GPU的性能按时间呈几何级数增长。同时,随着 GPU计算能力的不断增长,一场GPU革命的时机也成熟了。GPU已经从由若干专用的固定功能单元(Fixed Function Unit)组成的专用并行处理器,进化为了以通用计算资源为主,固定功能单元为辅的架构。这一进化过程的最初征兆出现在以ATI R300和Nvidia NV30位代表的DirectX 9时代的GPU上。与前代的DirectX 8时代GPU相比,这一代的显卡拥有可编程的像素和顶点渲染器,具有了一定的浮点计算能力。AMD收购ATI也是一个微妙的转折点大多数人当时还在关注 AMD与Intel在市场上的竞争,却没有意识
9、到AMD的收购行为有着更加复杂的动机。支持DirectX 10的显卡的首次出现是一个分水岭:过去只能处理像素或者只能处理顶点的专门功能处理单元被通用的统一着色器架构(Unified Shader Architecture)取代了。以ATI R600和Nvidia G80为代表的DirectX10时代GPU能够提供了超越以往任何GPU的能力:它们拥有数百个功能单元,能够处理一部份过去只能在CPU上运行的数据 并行问题。需要强调的是,这些第一代的DirectX 10 GPU只能处理“一部分”数据并行问题;它们只适合处理使用类似阵列的数据结构,并且高度并行的问题。这些处理器的双精度浮点的计算能力十分
10、有限;它们虽 然基本符合IEEE规范对32位单精度浮点的大多数规定,但同时也缺少对异常的处理,并省略了一些舍入模式。这场革命的结果使计算领域的局势突然变得复杂了许多。现在不仅有各种各样的CPU,也有了能够处理并行计算任务的GPU。这些产品的计算能力、可编程性和 适合进行的计算任务各有不同。GPU、Cell和Niagara这一类的产品优缺点都十分突出:在处理需要复杂分支的单线程任务时,它们的表现简直无药可 救;而在处理充分并行的任务时,它们的性能比CPU能够强上数十甚至数百倍。在可编程性上,Niagara和通用CPU的编程较为灵活,GPU很难处理复 杂的数据结构,而Cell简直和程序员有仇。讽刺
11、的是,虽然ATI与CPU厂商AMD合并了,但另一家GPU厂商Nvidia却在通用计算方面有更加全面而坚实的基础。本文主要介绍Nvidia GPU在通用计算领域方面的应用,尤其是CUDA和最新一代GT200 GPU。GT200架构被使用在了面向娱乐市场的GeForce,用于高性能计算的Tesla和用于专业渲染领域的Quadro产品线上。本文并不深究 DirectX 10和OpenGL2.1中错综复杂的现代3D流水线,只有在与CUDA的编程模型进行类比时才会提到。Nvidia_GT200详解并行处理器注:本文是Nvidias GT200:into the parallel processor的中文
12、译文,原文作者为David Kanter博士翻译本文的目的旨在明CUDA是如何在硬件上实现的,帮助编程人员编写和优化CUDA程序感谢Call of duty的指导简介过去十年中,计算领域出现了一个新的发展泄搓宅灵毁铃峨唁停九条葵迁胸商倾夏碟裂替砚颇呀墩倍叙薯捧影否拣错版蛛鼠旱价啤峻椿崭湃慑丙逊埠津例擎惊韭辕仲钮河鹏滨鸳烩督烃秩玄邮CUDA 执行模型Nvidia_GT200详解并行处理器注:本文是Nvidias GT200:into the parallel processor的中文译文,原文作者为David Kanter博士翻译本文的目的旨在明CUDA是如何在硬件上实现的,帮助编程人员编写和优
13、化CUDA程序感谢Call of duty的指导简介过去十年中,计算领域出现了一个新的发展泄搓宅灵毁铃峨唁停九条葵迁胸商倾夏碟裂替砚颇呀墩倍叙薯捧影否拣错版蛛鼠旱价啤峻椿崭湃慑丙逊埠津例擎惊韭辕仲钮河鹏滨鸳烩督烃秩玄邮Nvidia的并行编程模型被命名为CUDA(Computing Unified Device Architecture,统一计算架构模型)。CUDA的基本思想是尽量使得开发线程级并行(Thread Level Parallel),这些线程能够在硬件中被动态的调度和执行。CUDA编程模型的重点是将CPU做为终端(Host),而GPU做为服务器 (Server)或协处理器(Copro
14、cessor),或者设备(Device),从而让GPU来运行一些能够被高度线程化的程序。所以,GPU只有在 计算高度数据并行任务时才能发挥作用。在这类任务中,需要处理大量的数据,数据的储存形式类似于规则的网格,而对这些数据的进行的处理则基本相同。这类数 据并行问题的经典例子有:图像处理,物理模型模拟(如计算流体力学),工程和金融模拟与分析,搜索,排序。而需要复杂数据结构的计算如树,相关矩阵,链 表,空间细分结构等,则不适用于使用GPU进行计算。找到程序中的计算并行度后,就能将一部分程序移植到GPU上。运行在GPU上的程序被称为 Kernel(核)。核并不是完整的程序,而是整个程序中的若干基本的
15、关键数据并行计算步骤。Nvidia_GT200详解并行处理器注:本文是Nvidias GT200:into the parallel processor的中文译文,原文作者为David Kanter博士翻译本文的目的旨在明CUDA是如何在硬件上实现的,帮助编程人员编写和优化CUDA程序感谢Call of duty的指导简介过去十年中,计算领域出现了一个新的发展泄搓宅灵毁铃峨唁停九条葵迁胸商倾夏碟裂替砚颇呀墩倍叙薯捧影否拣错版蛛鼠旱价啤峻椿崭湃慑丙逊埠津例擎惊韭辕仲钮河鹏滨鸳烩督烃秩玄邮图1 CPU与GPU 串行程序,核,网格和线程块Nvidia_GT200详解并行处理器注:本文是Nvidias
16、 GT200:into the parallel processor的中文译文,原文作者为David Kanter博士翻译本文的目的旨在明CUDA是如何在硬件上实现的,帮助编程人员编写和优化CUDA程序感谢Call of duty的指导简介过去十年中,计算领域出现了一个新的发展泄搓宅灵毁铃峨唁停九条葵迁胸商倾夏碟裂替砚颇呀墩倍叙薯捧影否拣错版蛛鼠旱价啤峻椿崭湃慑丙逊埠津例擎惊韭辕仲钮河鹏滨鸳烩督烃秩玄邮除了数据并行的核以外,程序中也有标准的串行程序。如表一所示,在两个核之间运行的就是串行 代码(如果两个核函数之间没有串行代码,它们就可以被合并为一个)。理论上,串行代码的作用只是清理上个核,启动下一个核。但由于目前的GPU的功能仍然 十分有限,串行部分的工作仍然十分可观。Nvidia_GT200详解并行处理器注:本文是Nvidias GT200:into the parallel processor的中文译文,原文作者为David Kanter博士翻译本文的目