并行算法笔记(四)——PCAM设计方法学

  • 划分(Partitioning):分解成小的任务,开拓并发性
  • 通讯(Communication):确定诸任务间的数据交换,监测划分的合理性
  • 组合(Agglomeration):依据任务的局部性,组合成更大的任务
  • 映射(Mapping):将每个任务分配到处理器上,提高算法的性能

划分

  • 充分开拓算法的并发性和可扩放性
  • 先进行数据分解(称域分解),再进行计算功能的分解(称功能分解)
  • 使数据集和计算集互不相交
  • 划分阶段忽略处理器数目和目标机器的体系结构

域分解:将数据分解成大致相等的小数据片,划分时考虑数据上的相应操作。

功能分解:将计算划分为不同的 任务,其出发点不同于域分解。划分后,研究不同任务所需的数据。如果这些数据不相交的,则划分是成功的;如果数据有相当的重叠,意味着要重新进行域分解和功能分解。

通讯

​ 功能分解确定了诸任务之间的数据流,诸任务是并发执行的,通讯则限制了这种并发性。

通讯判据
  • 所有任务是否执行大致相当的通讯
  • 是否尽可能的局部通讯
  • 通讯操作是否能并行执行
  • 同步任务的计算能否并行执行

组合

组合是由抽象到具体的过程,是将组合的任务能在一类并行机上有效的执行。

  • 合并小尺寸任务,减少任务数。如果任务数恰好等于处理器数,则也完成了映射过程。

  • 通过增加任务的粒度和重复计算,可以减少通讯成本。

  • 保持映射和扩展的灵活性,降低软件工程成本

表面-容积效应

通讯量与任务子集的表面成正比,计算 量与任务子集的体积成正比,即增加重复计算有可能减少通讯量。

Case1求数列和

如果需要求N个处理器的和,且结果分配到每个处理器上,则使用二叉树需要两次遍历(正向遍历求和,反向遍历广播),耗时为 2 l o g n 2logn 2logn

如果使用蝴蝶结构,则可以通过重复计算将耗时降低为 l o g n logn logn

在这里插入图片描述

如图中蝴蝶结构,实际上可看作n个二叉树,即每个处理器都作为一个二叉树的根节点直接接收计算结果。

映射

每个任务要映射到具体的处理器,定位到运行机器上。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值