并行算法的一般设计过程

简介:

1. PCAM设计方法学

设计并行算法的四个阶段:

划分(Partitioning):分解成小的任务,开拓并发性

通讯(Communication):确定诸任务间的数据交换,监测划分的合理性;

组合(Agglomeration):依据任务的局部性,组合成更大的任务;

映射(Mapping):将每个任务分配到处理器上,提高算法的性能。

2. 划分

充分开拓算法的并发性和可扩放性;

先进行数据分解(称域分解),再进行计算功能的分解(称功能分解);

使数据集和计算集互不相交;

划分阶段忽略处理器数目和目标机器的体系结构;

主要分为两类划分:

Ø  域分解(domaindecomposition)

Ø  功能分解(functionaldecomposition)

域分解:

划分的对象是数据,可以是算法的输入数据、中间处理数据和输出数据;

将数据分解成大致相等的小数据片;

划分时考虑数据上的相应操作;

如果一个任务需要别的任务中的数据,则会产生任务间的通讯;

 

功能分解:

划分的对象是计算,将计算划分为不同的任务,其出发点不同于域分解;

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

功能分解是一种更深层次的分解。

划分依据:

划分是否具有灵活性?

划分是否避免了冗余计算和存储?

划分任务尺寸是否大致相当?

任务数与问题尺寸是否成比例?

功能分解是一种更深层次的分解,是否合理?

3. 通讯

通讯是PCAM设计过程的重要阶段;

划分产生的诸任务,一般不能完全独立执行,需要在任务间进行数据交流;从而产生了通讯;

功能分解确定了诸任务之间的数据流;

诸任务是并发执行的,通讯则限制了这种并发性;

局部/全局通讯

 

结构化/非结构化通讯

结构化通讯:存在一个相同的通讯模式

非结构化通讯:不存在一个相同的通讯模式

静态/动态通讯

同步/异步通讯

通讯判据:

所有任务是否执行大致相当的通讯?

是否尽可能的局部通讯?

通讯操作是否能并行执行?

同步任务的计算能否并行执行?

4. 组合

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

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

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

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

表面容积效应:

通讯量与任务子集的表面成正比,计算量与任务子集的体积成正比;

增加重复计算有可能减少通讯量;

重复计算:

重复计算减少通讯量,但增加了计算量,应保持恰当的平衡;

重复计算的目标应减少算法的总运算时间;

组合判据:

增加粒度是否减少了通讯成本?

重复计算是否已权衡了其得益?

是否保持了灵活性和可扩放性?

组合的任务数是否与问题尺寸成比例?

是否保持了类似的计算和通讯?

有没有减少并行执行的机会?

5. 映射

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

任务数大于处理器数时,存在负载平衡和任务调度问题;

映射的目标:减少算法的执行时间

并发的任务à 不同的处理器

任务之间存在高通讯的à 同一处理器

映射实际是一种权衡,属于NP完全问题;

负载平衡算法:

静态的:事先确定;

概率的:随机确定;

动态的:执行期间动态负载;

基于域分解的:

Ø  递归对剖

Ø  局部算法

Ø  概率方法

Ø  循环映射

 

任务调度算法:

任务放在集中的或分散的任务池中,使用任务调度算法将池中的任务分配给特定的处理器。下面是两种常用调度模式:

经理/雇员模式

非集中模式

映射判据:

采用集中式负载平衡方案,是否存在通讯瓶颈?

采用动态负载平衡方案,调度策略的成本如何?

 

相关文章
|
4月前
|
缓存 安全 算法
在后端系统设计过程中,我们究竟设计的是什么?
在后端系统设计过程中,我们究竟设计的是什么?
54 0
|
7月前
|
存储 算法 安全
软件系统设计步骤与原理
软件系统设计步骤与原理
|
内存技术
AS3使用过程中问题总结
AS3使用过程中问题总结
62 0
Sub过程
参数表是用来指明调用该Sub过程时需要传递给该过程的参数及类型。表内的参数称为形参。Sub过程可以没有形参(但小括号不可以省略),也可1到多个形参(多个之间用逗号隔开);
Sub过程
|
数据库
重构——前提工作
重构——前提工作
一道优化过程的题
一道优化过程的题
101 0
|
前端开发 JavaScript NoSQL
第一次提供技术服务涉及的技术点和思考过程
一年前的今天,我肯定还不敢做前后端联动的工程,没有这个视野。如今有了些许,不敢自傲,还需学习。今天我站在稍上一点的角度,谈一谈我的思考过程及技术点。
87 0
|
NoSQL Ubuntu MongoDB
使用过程心得
一些常用操作和常见问题
使用过程心得
|
安全
从想法到设计的过程
在接下来的几节里,我会向你展示游戏制作的整个流程,从开始的一个粗略的想法,到游戏设计,再到最终的游戏制作。
147 0
从想法到设计的过程