并行计算机的应用基础.ppt

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

第2章 并行计算机的应用基础 本章学习要求: 掌握:如何提高并行计算机高性能的概念。 掌握:并行计算机访存模型。 了解:并行计算机存储层次及其一致性问题。 掌握:并行计算模型。 掌握:并行程序设计模型 。 了解:同步、通信。 了解:并行化技术与程序调试 。 2.1 如何提高高性能 使用并行机的目的就是获取高性能。但现实高性能的并行算法或并行程序是一个不断调整和改进的过程。一般说来,它们的设计过程可以划分为4步,即: 任务划分(Partitioning)、 通信(Communication)分析、 任务组合(Agglomeration)、 处理器映射(Mapping)。 简称为PCAM设计过程。 这是一种设计方法学,是实际设计并行算法或程序的自然过程,其基本要点是: 首先尽量开拓算法的并发性和满足算法的可扩放性;然后着重优化算法的通信成本和全局执行时间。 并行计算的PCAM设计方法中的任务划分和通信分析阶段主要考虑如并发性和可扩放性等与机器无关的特性,寻求开发出具有这些特性的并行算法,基本上与底层体系结构和编程模型无关;而到任务组合和处理器映射阶段才开始将注意力转移到局部性和别的与性能有关的问题上。 如图2.1所示,PCAM设计方法的四个阶段可以简述如下: ①划分:将整个计算分解为一些小的任务,其目的是尽量开拓并行执行的机会; ②通信:确定诸任务执行中所需交换的数据和协调诸任务的执行,由此可检测上述划分的合理性; ③组合:按性能要求和实现的代价来考察前两阶段的结果,必要时可将一些小的任务组合成更大的任务以提高性能或减少通信开销; ④映射:将每个任务分配到一个处理器上,其目的是最小化全局执行时间和通信成本以及最大化处理器的利用率。 2.1.1 任务划分 所谓划分,就是使用域分解的方法将原计算问题分割成一些小的计算任务,以充分开拓算法的并发性和可扩放性。其方法是先集中数据的分解(域分解),然后是计算功能的分解(功能分解),两者互为补充。划分的要点是力图避免数据和计算的复制,应使数据集和计算集互不相交。 1.域分解 域分解(Domain Decomposition)也叫数据划分。所要划分的对象是些数据,这些数据可以是算法(或程序)的输入数据、计算的输出数据、或者算法所产生的中间结果。域分解的步骤是:首先分解与问题相关的数据,如果可能的话,应使这些小的数据片尽可能大致相等;其次再将每个计算关联到它所操作的数据上。由此划分将会产生一系列的任务,每个任务包括一些数据及其上的操作。当一个操作可能需要别的任务中的数据时,就会产生通信要求。 域分解的经验方法是,优先集中在最大数据的划分;或者那些经常被访问的数据结构上。在计算的不同阶段,可能要对不同的数据结构进行操作,或者需要对同一数据结构进行不同的分解。图2.2示出了一个三维网格的域分解方法,在各格点上计算都是重复执行的,分解在X、Y和Z维都是可以的。开始时,应集中在能提供最大灵活性的三维(即3-D)分解上,即每一个格点定义一个计算任务,每个任务维护与其格点有关的各种数据,并负责计算以修改状态。 循环无疑是并行程序中最丰富的并行资源,如何将大的串行循环并行化是并行编译技术的研究重点,已经提出大量的判定循环可否并行的定理和各种循环变换技术。 2.功能分解 除了数据并行,应用程序本身也存在着功能并行的机会。功能分界(Functional Decomposition)也被称为任务分解或计算划分。 它首先关注于被执行的计算上,而不是计算所需的数据上; 然后,如果所作的计算划分是成功的,再继续研究计算所需的数据,如果这些数据基本上不相交,就意味着划分的成功; 如果这些数据有相当的重叠,就意味着必然带来大量的通信,这暗示着应该考虑数据分解。 一个并行程序通常同时存在数据和功能并行的机会。但功能并行的并行度通常比较有限,并且不会随着问题规模的的扩大而增加;不同的函数所涉及的数据集的大小可能差异很大,因此也难于实现负载平衡。而数据并行则一般具有较好的可扩放性,也易于实现负载的平衡。现有的绝大多数大规模的并行程序属于数据并行应用,但功能分解有时能提示问题的内在结构展示出优化的机遇,而对数据单独进行研究却往往难以做到这一点。搜索树是功能分解的最好例子,此时并无明显的可分解的数据结构,但却易于进行细粒度的功能分解:开始时根生成一个任务,对其评价后,如果它不是一个解,就生成一棵搜索子树,整个搜索过程自根以波前(Wavefront)形式逐级向树叶推进。 2.1.2 通信分析 由划分所产生的诸并行执行的任务,一般而言不可能完全并行执行,一个任务中的计算可能需要用到另一个任务中的数据,从而

文档评论(0)

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

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

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档