《计算机系统结构》大作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《计算机系统结构》大作业
介绍并行算法与并行程序设计
及它们的不足及发展趋势
专业计算机科学与技术(软件工程)
指导教师
班级计Y09
学号 2009004003
姓名
日期 2012年 4月17日
计算机学院
摘要:并行算法是并行计算中非常重要的问题。这篇报告首先简要介绍并行计算,然后主要讨论并行算法研究中的问题和今后的方向,最后阐述并行计算研究中存在的问题以及今后面临的挑战。并行算法研究应该确立一个“理论-设计-实现-应用”的系统方法,形成一个完善的“架构—算法—编程”方法论,这样才能保证并行算法不断发展并变得更加实用。再结合例子进而介绍并行算法的基本原理,给并行算法下一个基本的定义,对并行算法进行了相关的介绍;接着根据目前并行算法的应用,提出了在计算机系统结构中以并行算法为基础的一些并行程序设计的应用,比较了目前流行的并行程序设计的方法,并通过比较指出它的不足以及并行程序设计在未来的发展趋势和前景。
关键词:计算机系统结构并行算法并行程序设计
引言
并行计算机从70年代的开始,到80年代蓬勃发展和百家争鸣,再到90年代体系结构框架趋于统一,近年来其快速发展,并行机技术日趋成熟。首先是市场的需求,一直是推动并行计算机发展的主要动力,大量实际应用部门,如天气预报、核武器、石油勘探、地震数据处理、飞行器数值模拟以及其他大型事务处理等,都需要每秒执行数十万亿次乃至数百万亿此浮点运算的计算机,基于这些应用问题本身的限制,并行计算是满足它们的唯一可行途径。
使用多计算机进行并行程序设计,它们之间的通信是通过发送消息来完成的,所以消息传递需要并行程序设计。并行程序设计使用多计算机或多个内部处理器的计算机来求解问题,它比使用单台计算机的计算速度要快得多。并行程序设计也为求解更大规模的问题提供了机会,前面所述问题需要更多的计算步或更大存储容量需求,并行程序设计以并行算法为核心,能满足这要求,因为多计算机和多处理机系统通常比单计算机有更大的总存储容量。
1并行算法的原理
1.1为什么要做并行计算?
人类对计算及性能的要求是无止境的从系统的角度:集成系统资源,以满足不断增长的对性能和功能的要求;从应用的角度:适当分解应用,以实现更大规模或更细致的计算
1.2并行算法的基本原理
并行计算(Parallel Computing)是指同时使用多种计算资源解决计算问题的过程。并行计算的主要目的是快速解决大型且复杂的计算问题。此外还包括:利用非本地资源,节约成本―使用多个“廉价”计算资源取代大型计算机,同时克服单个计算机上存在的存储器限制。传统地,串行计算是指在单个计算机(具有单个中央处理单元)上执行软件写操作。CPU 逐个使用一系列指令解决问题,但其中只有一种指令可提供随时并及时的使用。并行计算是在串行计算的基础上演变而来,它努力仿真自然世界中的事务状态:一个序列中众多同时发生的、复杂且相关的事件。
简单的说,算法就是求解问题的方法和步骤。并行算法,就是在并行机上用很多个处理器联合求解问题的方法和步骤。实际上,在自然界中并行是客观存在的普遍现象,关键问题在于能不能很好的利用。由于人们的思维能力以及思考问题的方法对并行不太习惯,且并行算法理论不成熟,所以总是出现了需求再来研究算法,不具有导向性,同时实现并行算法的并行程序性能较差,往往满足不了人们的需求。并行算法的研究历史可简单归纳为:上世纪70到80年代,并行算法研究处于高潮;到上世纪90年代跌入低谷;目前,又处于研究的热点阶段。现在,人们已经可以自己搭建PC cluster,利用学习到的理论知识来解决实际问题,不再是纸上谈兵,这也为我们提供了新的机遇和挑战。并行算法就是用多台处理机联合求解问题的方法和步骤,其执行过程是指将给定的问题首先分解成若干个尽量相互独立的子问题,然后使用多台计算机同时求解它,从而最终求得原问题的解。并行算法是并行计算中一个非常重要的问题。并行算法的研究应该确立一个“理论-设计-实现-应用”的系统方法,形成一个完善的“架构—算法—编程” 方法论,这样才能保证并行算法不断发展并变得更加实用。简单的说,算法就是求解问题的方法和步骤。并行算法,就是在并行机上用很多个处理器联合求解问题的方法和步骤。
(1)并行计算的特点
①将工作分离成离散部分,有助于同时解决;
②随时并及时地执行多个程序指令;
③多计算资源下解决问题的耗时要少于单个计算资源下的耗时。
并行计算是相对于串行计算来说的,所谓并行计算分为时间上的并行和空间上的并行。时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。
(2)列举并行算法的三个基本类型
① SIMD-SM上的非线性方程求根同步并行算法:这种计算问题无法在串行机器上很快地得出结果,我们只有把这种计算问题应用在并行计算机上才有可能在较短的时间内获得满足实际应用的需要。
② 2.4 SIMD-SM上的同步并行求和算法:共享存储器的的容量是有限的,如果在同一时刻,多个处理器一起访问同一处理单元时就会发生冲突,所以共享存储模型根据解决冲突的能力还可以分为3类,其中的一类EREW(Exclusive-Read Exclusive-Write)计算模型是不允许有两个处理器同时读或写一个共享单。
③ SIMD-CC超立方机器上的同步并行求和算法:假设在n-维超立方模型上,n=2m,n个原始数据为X={x0,x1,…,xn-1},其中m为正整数,每个处理器Pi都可以存储局部变量ai,下面在此模型上构造一个并行求和算法,使得算法结束时a0就是总和,对超立方体节点用二进制进行编号,要求每相邻的结点之间只有且仅有一位不同。然后将这些结点分为两类,一类是最高位的编号为0,则另一类是最高位的编号为1,然后可以利用超立方模型中结点相邻关系可建立二类处理器集合中元素的一一对应关系,然后可以根据这种对应关系构造并行算法。算法的思想是:A.对于n个处理器,首先将最最高位编号为1的处理器的数据传送至最高位编号为0的处理器并进行局部求和;B.接着在n/2个处理器上,将次高位编号为