多核编程之挑战与应对.ppt

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
多核编程之挑战与应对 报 告 人:孔 晓 华 学号:S306060144 2007年 12月 29日 主要内容: 什么是多核 多核技术带给软件开发的挑战 如何对应多核编程革命 分块的程序设计思维 并行设计的方法 合适的编程语言选择 旧程序如何应对多核环境? 什么是多核 简单的讲,多内核是指在一枚处理器中集成两个或多个完整的计算引擎(内核)。 多核处理器是多枚芯片(也称为“硅核”),能够直接插入单一的处理器插槽中,但操作系统会利用所有相关的资源,将它的每个执行内核作为独立的逻辑处理器。通过在多个执行内核之间划分任务,多核处理器可在特定的时钟周期内执行更多任务。 什么是多核 单核与多核的区别 单核处理器: 通过提高主频来提升效率,随之提高的还有处理器的功耗和成本。 多核处理器: 通过多核结构的并行计算提高效率,功耗小,但是单个任务的处理速度不会提升。 多核的好处 首先,由于是多个执行内核可以同时进行运算,因此可以显著提升计算能力,而每个内核的主频可以比以前低,因而总体功耗增加不太大。 其次,与多CPU相比,多核处理器采用与单CPU相同的硬件机构,用户在提升计算能力的同时无需进行任何硬件上的改变,这对用户来说非常方便。 正是由于多核的这些优点,所以,多核很快被用户接受,并得以普及。 多核带来的挑战 毫无疑问,多核给我们提供了更经济的计算能力。但是,这种能力能否善加利用还要取决于软件。 如果不针对多核进行软件开发,不仅多核提供的强大计算能力得不到利用,相反还有可能不如单核CPU好用。 “从某种程度上说,对于软件开发者而言,CPU主频提升就像是免费的午餐,此前所有的程序很自然地会从主频的提升中受益,而如今多核出现了,这种免费的午餐没有了。我们必须针对多核重新进行软件设计。” 多核带来的挑战 多核对于不用应用领域的软件影响并不相同: 第一类是传统的科学计算机用户,他们的软件大部分是高性能计算专家写的,也多是并行的,他们对MPI(Multi Point Interface,多点接口)、OpenMP等并行编程模型也已经掌握。 第二类是一般意义上提到的服务器,如银行以及搜狐、Google这样的互联网公司,它们主要的业务特征是并发的访问。这些应用具有天然的并行性,如多用户的访问本身就是并行的。 第三类是移动用户和桌面用户,他们是面临挑战最大的群体。这些用户的原有大部分程序都是串行的,如大部分串行程序是用Visual Basic语言编写。 分块的程序设计思维 线程是操作系统分配CPU资源的最小单位,所 以如果想要设计多核并行的程序,那么我们就 要用分块思维去设计程序。 如何分块? 例1. 《统筹方法》中的泡茶问题 分块的程序设计思维 比如,想泡壶茶喝:开水没有;水壶要洗,茶壶茶杯 要洗;火生了,茶叶也有了。怎么办? 甲:洗好水壶,灌上凉水,放在火上;在等待水开的 时间里,洗茶壶、洗茶杯、拿茶叶;等水开了, 泡茶喝。 乙:做好一些准备工作,洗水壶,洗茶壶茶杯,拿茶 叶;一切就绪,灌水烧水;坐待水开了泡茶喝。 丙:洗净水壶,灌上凉水,放在火上,坐待水开;水 开了之后,急急忙忙找茶叶,洗茶壶茶杯,泡茶 喝。 分块的程序设计思维 如果我们有两个机器人,让它们给我们泡茶喝,那最好的方法显然是按照“办法甲”分工:机器人A去烧水,机器人B洗茶具;等水开了,泡茶喝。看,不经意间,我们就应用了分块的思维——把不相关的事务分开给不同的处理器执行。 分块的程序设计思维 例2. 有数据类型为T的序列A,求序列中值与K相等的元素个数。 分块的程序设计思维 Count(k,p,n) = Count(k,p,n/2) + Count(k,p+n/2,n-n/2) 前半段值为K的元素个数+后半段值为K的元素个数。 如果我们开启两条线程: 线程1执行Count(k,p,n/2), 线程2执行Count(k,p+n/2,n-n/2), 那么在双核系统上我们将可以节省一半的运行时间。 分块的程序设计思维 以上分块的思维都是简单直接的,如果是复杂的任务,就不可能容易地找出分块的方案了,所以需要并行设计的方法来指导我们。 并行设计的方法 如果由甲一人来完成这个泡茶过程的话,图中红色虚框部分可以并行。 如果由两机器人来完成,而且有不少于2个水龙头供机器人使用,那绿色虚框的部分都可以并行而且能取得更高的效率。 可见能够合理利用的资源越多,并行的加速比率就越高。 例1. 《统筹方法》中的泡茶问题 并行设计的方法 例2. 对某一N维向量乘以一个实数值 for( int i = 0; i N; ++i) v[i] *= r; 如果有N个处理器,那么这N次带有数据并行性的

文档评论(0)

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

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

1亿VIP精品文档

相关文档