多核编程之挑战与应对—-孔晓华_计算机系统结构.pptVIP

多核编程之挑战与应对—-孔晓华_计算机系统结构.ppt

  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文档。上传文档
查看更多
多核编程之挑战与应对—-孔晓华_计算机系统结构

多核处理器 多核挑战软件开发 内容 拉开多核时代的序幕 CPU简史 拉开多核时代的序幕 拉开多核时代的序幕 多核时代到来 2006年是CPU及至软件发展史上的一次重大里程碑, 甚至可以和60年第一台计算机的发明相提并论. 这一年,CPU在物理上得到了极大了的改变.而率先引发这次冲击波的就是CPU第二厂商AMD AMD在2006年第一个推出了双核处理器,这种处理器的计算单元相互独立,但它们将共享CPU的一、二级缓存。这种CPU虽然没有两颗CPU的效率高,但它的性价比是非常高的 拉开多核时代的序幕 在2006年AMD刚推出双核CPU,英特尔就快速地推出了四核CPU。而在2007年,英特尔更是赚足了眼球,推出了多达80核的CPU。因此,如果说AMD将多核时代的序幕拉开了一小部分话,那么英特尔就将这个序幕完全拉开了 多核处理器简介 什么是多核处理器 两个或多个独立运行的内核集成于同一个处理器上 双核处理器 =一个处理器上包含2个内核 多核处理器简介 为什么采用双核 多核处理器简介 多核技术的发展 多核挑战软件开发 提一个问题先 多核挑战软件开发 针对多核的软件开发 “从某种程度上说,对于软件开发者而言,CPU主频提升就像是免费的午餐,此前所有的程序很自然地会从主频的提升中受益,而如今多核出现了,这种免费的午餐没有了。我们必须针对多核重新进行软件设计” 。以上是中科院软件所并行计算实验室副主任张云泉的一段话。 要发挥多核处理器的优势,必须进行并行程序的设计与开发. 未来多核芯片将无处不在,针对多核的软件开发将是摆在软件产业界面前一个大的挑战 多核挑战软件开发 多核的影响 多核挑战软件开发 并行程序设计为什么难? 其根本原因是因为大多数计算机和编程语言发明之初就是按照冯·诺依曼理论进行设计的。根据冯·诺依曼的理论,CPU是按照程序指令,一条条取出来并顺序执行的。而在多核或者多CPU的计算机中,同时会有多条指令在执行。 多核挑战软件开发 并行程序开发方法 串行语言加并行库的扩展,也就是增加一个库来帮助进行消息传递和并行,但其程序开发效率很低,难度也比较大,如OpenMP,MPI等 现在大部分程序语言支持多线程编程,用来发挥多核的优势。如java,C#等,不过这些程序对于大部分程序员来说过于复杂。因为这些相当于是使用OS API 进行并行程序开发,而这些语言是对这些API进行了封装。 多核挑战软件开发 并行程序设计之难 首先,运行于不同处理器上的各项任务之间的通信就是个难题。 其次,由于并行系统缺少明确的全局系统状态,不像串行程序容易理解 第三,因为并行程序执行时,每一次的执行路径并不完全一样,这会给并行程序设计的纠错和调优等带来很大困难 。 多核挑战软件开发 在并行程序设计方面,Intel,AMD及相关的软件厂商推出了一系列的产品,包括编译器、VTun性能分析器、多线程工具等 来帮助用户完成软件的并行化工作。 尽管软件研究人员在编程模型、编译器、自动转换、调试工具等方面做了很多的工作,效果还是不错的,但总体上看把一个现有软件并行化其代价还是很高的 。 并行程序设计方法学 并行程序设计方法学 划分(Partitioning):分解成小的任务,开拓并发性; 通讯(Communication):确定诸任务间的数据交换,监测划分的合理性; 组合(Agglomeration):依据任务的局部性,组合成更大的任务; 映射(Mapping):将每个任务分配到处理器上,提高算法的性能 并行程序设计方法学 并行程序设计过程 并行程序设计方法学 划分——域分解 划分的对象是数据,可以是算法的输入数据、中间处理数据和输出数据; 将数据分解成大致相等的小数据片; 划分时考虑数据上的相应操作; 如果一个任务需要别的任务中的数据,则会产生任务间的通讯; 并行程序设计方法学 划分——域分解 示例:三维网格的域分解,各格点上计算都是重复的。下图是三种分解方法: 并行程序设计方法学 划分——功能分解 划分的对象是计算,将计算划分为不同的任务,其出发点不同于域分解; 划分后,研究不同任务所需的数据。如果这些数据不相交的,则划分是成功的;如果数据有相当的重叠, 意味着要重新进行域分解和功能分解; 功能分解是一种更深层次的分解。 并行程序设计方法学 划分——判断依据 划分是否具有灵活性? 划分是否避免了冗余计算和存储? 划分任务尺寸是否大致相当? 任务数与问题尺寸是否成比例? 功能分解是一种更深层次的分解,是否合理? 并行程序设计方法学 通讯 通讯是PCAM设计过程的重要阶段; 划分产生的诸任务,一般不能完全独立执行,需要在任务间进行数据交流;从而产生了通讯; 功能分解确定了诸任务之间的数据流; 诸任务是并发执行的,通讯则限制了这种并发性; 并行程序设

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档