欢迎来到天天文库
浏览记录
ID:40157878
大小:248.50 KB
页数:27页
时间:2019-07-23
《多核编程之挑战与应对》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、多核编程之挑战与应对报告人:孔晓华学号:S3060601442007年12月29日主要内容:什么是多核多核技术带给软件开发的挑战如何对应多核编程革命分块的程序设计思维并行设计的方法合适的编程语言选择旧程序如何应对多核环境?什么是多核简单的讲,多内核是指在一枚处理器中集成两个或多个完整的计算引擎(内核)。多核处理器是多枚芯片(也称为“硅核”),能够直接插入单一的处理器插槽中,但操作系统会利用所有相关的资源,将它的每个执行内核作为独立的逻辑处理器。通过在多个执行内核之间划分任务,多核处理器可在特定的时钟周期内执行更多任务。什么是
2、多核单核与多核的区别单核处理器:通过提高主频来提升效率,随之提高的还有处理器的功耗和成本。多核处理器:通过多核结构的并行计算提高效率,功耗小,但是单个任务的处理速度不会提升。多核的好处首先,由于是多个执行内核可以同时进行运算,因此可以显著提升计算能力,而每个内核的主频可以比以前低,因而总体功耗增加不太大。其次,与多CPU相比,多核处理器采用与单CPU相同的硬件机构,用户在提升计算能力的同时无需进行任何硬件上的改变,这对用户来说非常方便。正是由于多核的这些优点,所以,多核很快被用户接受,并得以普及。多核带来的挑战毫无疑问,多核
3、给我们提供了更经济的计算能力。但是,这种能力能否善加利用还要取决于软件。如果不针对多核进行软件开发,不仅多核提供的强大计算能力得不到利用,相反还有可能不如单核CPU好用。“从某种程度上说,对于软件开发者而言,CPU主频提升就像是免费的午餐,此前所有的程序很自然地会从主频的提升中受益,而如今多核出现了,这种免费的午餐没有了。我们必须针对多核重新进行软件设计。”多核带来的挑战多核对于不用应用领域的软件影响并不相同:第一类是传统的科学计算机用户,他们的软件大部分是高性能计算专家写的,也多是并行的,他们对MPI(MultiPoint
4、Interface,多点接口)、OpenMP等并行编程模型也已经掌握。第二类是一般意义上提到的服务器,如银行以及搜狐、Google这样的互联网公司,它们主要的业务特征是并发的访问。这些应用具有天然的并行性,如多用户的访问本身就是并行的。第三类是移动用户和桌面用户,他们是面临挑战最大的群体。这些用户的原有大部分程序都是串行的,如大部分串行程序是用VisualBasic语言编写。分块的程序设计思维线程是操作系统分配CPU资源的最小单位,所以如果想要设计多核并行的程序,那么我们就要用分块思维去设计程序。如何分块?例1.《统筹方法》
5、中的泡茶问题分块的程序设计思维比如,想泡壶茶喝:开水没有;水壶要洗,茶壶茶杯要洗;火生了,茶叶也有了。怎么办?甲:洗好水壶,灌上凉水,放在火上;在等待水开的时间里,洗茶壶、洗茶杯、拿茶叶;等水开了,泡茶喝。乙:做好一些准备工作,洗水壶,洗茶壶茶杯,拿茶叶;一切就绪,灌水烧水;坐待水开了泡茶喝。丙:洗净水壶,灌上凉水,放在火上,坐待水开;水开了之后,急急忙忙找茶叶,洗茶壶茶杯,泡茶喝。分块的程序设计思维如果我们有两个机器人,让它们给我们泡茶喝,那最好的方法显然是按照“办法甲”分工:机器人A去烧水,机器人B洗茶具;等水开了,泡茶
6、喝。看,不经意间,我们就应用了分块的思维——把不相关的事务分开给不同的处理器执行。分块的程序设计思维例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),那么在双核系统上我们将可以节省一半的运行时间。分块的程序设计思维以上分块的思维都是简单直接的,
7、如果是复杂的任务,就不可能容易地找出分块的方案了,所以需要并行设计的方法来指导我们。并行设计的方法如果由甲一人来完成这个泡茶过程的话,图中红色虚框部分可以并行。如果由两机器人来完成,而且有不少于2个水龙头供机器人使用,那绿色虚框的部分都可以并行而且能取得更高的效率。可见能够合理利用的资源越多,并行的加速比率就越高。例1.《统筹方法》中的泡茶问题并行设计的方法例2.对某一N维向量乘以一个实数值for(inti=0;i8、行性:有不相关的任务对数据集的不同元素进行相同的操作,我们称这种数据相关表现了功能并行性:有不相关的任务对数据集的不同元素进行不同的操作。流水线:在处理单个问题上不存在并行性,但如果需要处理多个问题,且每个问题可以分为几个阶段,那么就能支持与阶段数相同的并行性。并行程序设计思想目前比较流行
8、行性:有不相关的任务对数据集的不同元素进行相同的操作,我们称这种数据相关表现了功能并行性:有不相关的任务对数据集的不同元素进行不同的操作。流水线:在处理单个问题上不存在并行性,但如果需要处理多个问题,且每个问题可以分为几个阶段,那么就能支持与阶段数相同的并行性。并行程序设计思想目前比较流行
此文档下载收益归作者所有