并行计算中国科学技术大学计算机科学与技术系国家高性能计算中心(合肥)2003年9月第二篇并行算法的设计第四章并行算法的设计基础第五章并行算法的一般设计方法第六章并行算法的基本设计技术第七章并行算法的一般设计过程第七章并行算法的一般设计过程7.1PCAM设计方法学7.2划分7.3通讯7.4组合7.5映射7.6小结国家高性能计算中心(合肥)42019/12/19PCAM设计方法学•设计并行算法的四个阶段•划分(Partitioning)•通讯(Communication)•组合(Agglomeration)•映射(Mapping)•划分:分解成小的任务,开拓并发性;•通讯:确定诸任务间的数据交换,监测划分的合理性;•组合:依据任务的局部性,组合成更大的任务;•映射:将每个任务分配到处理器上,提高算法的性能。国家高性能计算中心(合肥)52019/12/19PCAM设计过程问题划分映射组合通信第七章并行算法的一般设计过程7.1PCAM设计方法学7.2划分7.3通讯7.4组合7.5映射7.6小结7.2划分7.2.1方法描述7.2.2域分解7.2.3功能分解7.2.4划分判据国家高性能计算中心(合肥)82019/12/19划分方法描述•充分开拓算法的并发性和可扩放性;•先进行数据分解(称域分解),再进行计算功能的分解(称功能分解);•使数据集和计算集互不相交;•划分阶段忽略处理器数目和目标机器的体系结构;•能分为两类划分:•域分解(domaindecomposition)•功能分解(functionaldecomposition)7.2划分7.2.1方法描述7.2.2域分解7.2.3功能分解7.2.4划分判据国家高性能计算中心(合肥)102019/12/19域分解•划分的对象是数据,可以是算法的输入数据、中间处理数据和输出数据;•将数据分解成大致相等的小数据片;•划分时考虑数据上的相应操作;•如果一个任务需要别的任务中的数据,则会产生任务间的通讯;国家高性能计算中心(合肥)112019/12/19域分解•示例:三维网格的域分解,各格点上计算都是重复的。下图是三种分解方法:图7.2‐1D‐2D‐3D国家高性能计算中心(合肥)122019/12/19域分解•不规则区域的分解示例:7.2划分7.2.1方法描述7.2.2域分解7.2.3功能分解7.2.4划分判据国家高性能计算中心(合肥)142019/12/19功能分解•划分的对象是计算,将计算划分为不同的任务,其出发点不同于域分解;•划分后,研究不同任务所需的数据。如果这些数据不相交的,则划分是成功的;如果数据有相当的重叠,意味着要重新进行域分解和功能分解;•功能分解是一种更深层次的分解。国家高性能计算中心(合肥)152019/12/19功能分解•示例1:搜索树•示例2:气候模型7.2划分7.2.1方法描述7.2.2域分解7.2.3功能分解7.2.4划分判据国家高性能计算中心(合肥)172019/12/19划分判据•划分是否具有灵活性?•划分是否避免了冗余计算和存储?•划分任务尺寸是否大致相当?•任务数与问题尺寸是否成比例?•功能分解是一种更深层次的分解,是否合理?第七章并行算法的一般设计过程7.1PCAM设计方法学7.2划分7.3通讯7.4组合7.5映射7.6小结7.3通讯7.3.1方法描述7.3.2四种通讯模式7.3.3通讯判据国家高性能计算中心(合肥)202019/12/19通讯方法描述•通讯是PCAM设计过程的重要阶段;•划分产生的诸任务,一般不能完全独立执行,需要在任务间进行数据交流;从而产生了通讯;•功能分解确定了诸任务之间的数据流;•诸任务是并发执行的,通讯则限制了这种并发性;7.3通讯7.3.1方法描述7.3.2四种通讯模式7.3.3通讯判据国家高性能计算中心(合肥)222019/12/19四种通讯模式•局部/全局通讯•结构化/非结构化通讯•静态/动态通讯•同步/异步通讯国家高性能计算中心(合肥)232019/12/19局部通讯•通讯限制在一个邻域内国家高性能计算中心(合肥)242019/12/19全局通讯•通讯非局部的•例如:•AlltoAll•Master-Worker53721国家高性能计算中心(合肥)252019/12/19结构化通讯•每个任务的通讯模式是相同的;•下面是否存在一个相同通讯模式?国家高性能计算中心(合肥)262019/12/19非结构化通讯•没有一个统一的通讯模式•例如:无结构化网格7.3通讯7.3.1方法描述7.3.2四种通讯模式7.3.3通讯判据国家高性能计算中心(合肥)282019/12/19通讯判据•所有任务是否执行大致相当的通讯?•是否尽可能的局部通讯?•通讯操作是否能并行执行?•同步任务的计算能否并行执行?第七章并行算法的一般设计过程7.1PCAM设计方法学7.2划分7.3通讯7.4组合7.5映射7.6小结7.4组合7.4.1方法描述7.4.2表面-容积效应7.4.3重复计算7.4.4组合判据国家高性能计算中心(合肥)312019/12/19方法描述•组合是由抽象到具体的过程,是将组合的任务能在一类并行机上有效的执行;•合并小尺寸任务,减少任务数。如果任务数恰好等于处理器数,则也完成了映射过程;•通过增加任务的粒度和重复计算,可以减少通讯成本;•保持映射和扩展的灵活性,降低软件工程成本;7.4组合7.4.1方法描述7.4.2表面-容积效应7.4.3重复计算7.4.4组合判据国家高性能计算中心(合肥)332019/12/19表面-容积效应•通讯量与任务子集的表面成正比,计算量与任务子集的体积成正比;•增加重复计算有可能减少通讯量;7.4组合7.4.1方法描述7.4.2表面-容积效应7.4.3重复计算7.4.4组合判据国家高性能计算中心(合肥)352019/12/19重复计算•重复计算减少通讯量,但增加了计算量,应保持恰当的平衡;•重复计算的目标应减少算法的总运算时间;国家高性能计算中心(合肥)362019/12/19重复计算•示例:二叉树上N个处理器求N个数的全和,要求每个处理器均保持全和。二叉树上求和,共需2logN步10321032ssssssbbbbbb国家高性能计算中心(合肥)372019/12/19重复计算•示例:二叉树上N个处理器求N个数的全和,要求每个处理器均保持全和。蝶式结构求和,使用了重复计算,共需logN步1654327010Σ70Σ70Σ70Σ70Σ70Σ70Σ70Σ70Σ30Σ30Σ30Σ30Σ74Σ10Σ32Σ76Σ74Σ74Σ74Σ32Σ76Σ54Σ54Σ7.4组合7.4.1方法描述7.4.2表面-容积效应7.4.3重复计算7.4.4组合判据国家高性能计算中心(合肥)392019/12/19组合判据•增加粒度是否减少了通讯成本?•重复计算是否已权衡了其得益?•是否保持了灵活性和可扩放性?•组合的任务数是否与问题尺寸成比例?•是否保持了类似的计算和通讯?•有没有减少并行执行的机会?第七章并行算法的一般设计过程7.1PCAM设计方法学7.2划分7.3通讯7.4组合7.5映射7.6小结7.5映射7.5.1方法描述7.5.2负载平衡算法7.5.3任务调度算法7.5.4映射判据国家高性能计算中心(合肥)422019/12/19方法描述•每个任务要映射到具体的处理器,定位到运行机器上;•任务数大于处理器数时,存在负载平衡和任务调度问题;•映射的目标:减少算法的执行时间•并发的任务不同的处理器•任务之间存在高通讯的同一处理器•映射实际是一种权衡,属于NP完全问题;7.5映射7.5.1方法描述7.5.2负载平衡算法7.5.3任务调度算法7.5.4映射判据国家高性能计算中心(合肥)442019/12/19负载平衡算法•静态的:事先确定;•概率的:随机确定;•动态的:执行期间动态负载;•基于域分解的:•递归对剖•局部算法•概率方法•循环映射7.5映射7.5.1方法描述7.5.2负载平衡算法7.5.3任务调度算法7.5.4映射判据国家高性能计算中心(合肥)462019/12/19任务调度算法•任务放在集中的或分散的任务池中,使用任务调度算法将池中的任务分配给特定的处理器。下面是两种常用调度模式:•经理/雇员模式•非集中模式映射判据国家高性能计算中心(合肥)482019/12/19映射判据•采用集中式负载平衡方案,是否存在通讯瓶颈?•采用动态负载平衡方案,调度策略的成本如何?第七章并行算法的一般设计过程7.1PCAM设计方法学7.2划分7.3通讯7.4组合7.5映射7.6小结国家高性能计算中心(合肥)502019/12/19小结•划分•域分解和功能分解•通讯•任务间的数据交换•组合•任务的合并使得算法更有效•映射•将任务分配到处理器,并保持负载平衡