并行编程语言与模型.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE 4 大规模并行处理器编程实战 PAGE 5 第1章 引 言 PAGE 4 PAGE 5 CHAPTER1 CHAPTER 1 引 言 第一章 本章内容: GPU与并行计算机 现代GPU的体系结构 为什么需要更高的速度和并行化 并行编程语言与模型 综合目标 本书的组织结构 概述 近20年来,基于单个中央处理单元(Central Processing Unit,CPU)的微处理器,如Intel的奔腾(Pentium)系列和AMD的皓龙(Opteron)系列,很好地推动了计算机应用程序的性能提升和成本降低。正是这些微处理器,使得桌面计算机的浮点运算可以达到每秒十亿次(Giga FLoating-point OPerations per Second,GFLOPS),而集群服务器甚至可以达到几百GFLOPS。一方面,性能的飞速提升使应用软件行业提供更多功能强大的、用户界面友好的、可用性更高的软件成为可能。另一方面,用户一旦适应了这些改进,对性能的需求也会不断地提升。这在计算机行业形成了一个很好的良性循环。 在这种用户需求的驱动下,很多软件开发人员在底层靠硬件性能的提升来提高应用程序的运行速度;处理器每更新一代,软件的运行速度也会相应地变得更快。然而,自2003年以来,由于能耗和散热问题限制了时钟频率的提高和单CPU在每个时钟周期中的执行能力,因此光靠硬件性能的提升来提高应用程序的运行速度已经远远不够。实际上,所有微处理器供应商已经转变了处理器的处理模型,即在每个芯片中采用多个处理单元(称为处理器内核,Processor Core)提升处理能力,这种转变在软件开发人员社区中产生了巨大的影响[Sutter,2005]。 从传统意义上来讲,绝大部分软件应用程序都是用串行方式编写的,冯·诺依曼(von Neumann)早在1945年的开创性报告中已经描述过这一观点。这些串行程序的顺序执行过程符合人们的顺序思维习惯,容易被人们理解。从计算机发展史上看,每产生一代新的微处理器,计算机用户习惯性地期待程序的运行变得更加快速,但用户的这种期待从现在起变得很难实现。一个串行程序只能在其中一个微处理器内核中运行,目前的运行速度已经到达一个瓶颈阶段,很难再有所突破。运行速度的限制使得应用程序开发人员很难随着引入新一代微处理器而在其软件中引进新的特性与功能,从而阻碍了整个计算机行业的发展进程。 而每一代微处理器产生的同时也会对应用软件的性能提出更高的要求,于是并行程序应运而生,它采用多线程协作的执行方式使程序运行更加快速。这种新的设计方式(并行程序设计)的发展极大地推动了产业的进步,甚至称为“并行革命(concurrency revolution)”[Sutter,2005]。现在运用并行程序设计已经不足为奇,并行程序在高性能计算领域已经发展了近十年。但这些并行程序只能在昂贵的大型计算机上运行,而只有少数高端的应用程序值得用这么昂贵的计算机,因此也只有少数开发人员能运用并行程序设计。既然新的微处理器都是并行计算机,并行程序就应该随之得到广泛的应用,从而开发出更多的并行应用程序。这需要大量的软件开发人员掌握并行程序设计,这也正是本书的出发点。 1.1 GPU与并行计算机 自2003年以来,半导体行业在设计微处理器时形成了两个主要方向[Hwu,2008]。多核(multicore)方向试图把串行程序移植在多核上,运行时仍然能保持串行程序的执行速度。多核时代从双核处理器开始,内核的数量大致随半导体生产工艺的改进而翻倍。目前多核处理器最好的例子就是Intel公司生产的酷睿i7系列微处理器,它的处理器有4个内核,每个内核都是独立的、多指令流出的微处理器,每个内核能执行x86指令集中的所有指令;每个处理器由两个硬件线程来支持超线程,这种设计使得串行程序的执行速度得以最大化。 相比之下,众核(many-core)方向则更侧重于执行并行应用程序时的吞吐量。众核由大量较小的内核组成,随着计算机的更新换代,内核的数量也会不断翻倍。目前最典型的例子是NVIDIA公司生产的GeForce GTX 280系列显卡,它采用的是240个内核组成的图形处理单元(Graphics Processing Unit,GPU),每一个内核都是一个支持多线程的、顺序执行的、单指令流出的处理器,其中的七个内核都可以提供共享控制器和指令并且可以与其他7个内核共享控制器和指令缓存。从2003年开始,众核处理器(尤其是GPU)已经成为提升浮点运算性能的领头军。图1-1很好地说明这一现象。常用的微处理器要想通过提升性能来更新换代已经变得很困难,而GPU却还有很大的提升空间。2009年,众核GPU与多核CPU在峰值浮点运算的吞吐量方面的比率竟然高达10:1。这仅仅是芯片中

文档评论(0)

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

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

1亿VIP精品文档

相关文档