计算机系统结构 陈智勇 第8章 并行算法.ppt

  1. 1、本文档共188页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机系统结构 陈智勇 第8章 并行算法

第8章 并行算法 8.1 并行算法的基础知识 8.2 同步技术 8.3 程序并行性的分析 8.4 并行编程概述 8.5 并行编程模型 习题8 8.1 并行算法的基础知识 8.1.1 并行算法的定义和分类 1. 并行算法的定义 算法是指解题方法的精确描述,是一组有穷的规则,它们规定了解决某一特定类型问题的一系列运算。 并行算法(parallel algorithm)是指一些可同时执行的诸进程的集合,这些进程相互作用和协调动作从而达到给定问题的求解。 2. 并行算法的分类 并行机的出现来源于实际应用程序中存在内在并行度这一基本事实,因此,应用程序中是否存在可挖掘并行度是并行计算机应用的关键,而并行算法作为应用程序开发的基础,自然在并行计算机应用中具有举足轻重的地位。 并行算法根据运算基本对象的不同可分为数值并行算法和非数值并行算法。 数值计算是指基于代数关系运算的一类诸如矩阵运算、多项式求值、求解线性方程组等数字计算问题。主要为数值计算方法而设计的并行算法称为数值并行算法(numerical parallel algorithm)。 非数值计算是指基于比较关系运算的一类诸如排序、选择、搜索、匹配等符号处理问题。主要为符号运算而设计的并行算法称为非数值并行算法(non-numerical parallel algorithm)。如神经网络算法、遗传算法等。 根据并行进程间相互执行顺序关系的不同可分为同步并行算法、异步并行算法和独立并行算法。 同步并行算法(synchronized parallel algorithm)是指算法的诸进程间由于运算执行顺序而必须相互等待的并行算法。如通常的向量算法、SIMD算法及MIMD并行机上进程间需要相互等待通信结果的算法等。 异步并行算法(asynchronized parallel algorithm)是指算法的诸进程间执行相对独立,不需要相互等待的一种算法。通常对消息传递MIMD并行机进行设计,其主要特征是在计算的整个过程中均不需要等待,而是根据最新消息决定进程的继续或终止。 独立并行算法(independent parallel algorithm)是指算法的诸进程间执行完全独立,计算的整个过程不需要任何通信的并行算法。例如气象预报应用中通常需要同时计算多个模型,以保证预报的实时性。 根据各处理机承担的计算任务粒度的不同,可分为细粒度并行算法、中粒度并行算法和粗粒度并行算法。 细粒度并行算法(fine grain parallel algorithm)通常指基于向量和循环级并行的算法。 中粒度并行算法(middle grain parallel algorithm)通常指基于较大的循环级并行,且并行的好处足以弥补并行来的额外开销的算法。 粗粒度并行算法(coarse grain parallel algorithm)通常指基于子任务级并行的算法,例如通常的基于区域分解的并行算法,它们是当前并行算法设计的主流。 8.1.2 进程中的同构性 如前所述,并行算法是对一些可同时执行的诸进程之间相互关系的描述,因此,我们这里先讨论进程中的同构性,再来介绍并行算法的表达方法。 进程中的同构性是指在执行并行程序时,并行机中各处理机执行的进程相似到何种程度。图8.1描述了程序执行时进程中的同构性。 在多程序多数据流(MPMD)程序中的分进程是异构的,因为多个进程可以执行不同的程序代码;在单程序多数据流(SPMD)程序中的分进程是同构的,因为多个进程在不同的数据范畴内执行相同的程序代码,但不需在指令级达到同步;在单指令多数据流(SIMD)程序中的分进程是同构的,并且要求所有分进程必须在同一时间执行相同的指令。也就是说,SIMD程序是SPMD程序的一个特例。MPMD和SPMD程序在执行时,由于各分进程在同一时间执行的是不同的指令,同时产生多个数据流,因此这两者均属于MIMD类型的程序。 8.1.3 并行算法的表达 描述一个算法,可以使用自然语言进行物理描述,也可用某种编程语言进行形式化描述。语言的选用,应避免二义性,且力图直观、易懂而不苛求严格的语法格式。像描述串行算法所选用的语言一样,类A

文档评论(0)

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

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

1亿VIP精品文档

相关文档