[计算机软件及应用]第5章 可扩展算法技术.pptVIP

  • 2
  • 0
  • 约2.01千字
  • 约 35页
  • 2018-03-04 发布于浙江
  • 举报

[计算机软件及应用]第5章 可扩展算法技术.ppt

[计算机软件及应用]第5章 可扩展算法技术

第5章 可扩展算法技术 一、独立计算块 二、Schwatz算法 三、归约和扫描抽象 四、静态为进程分配工作 五、动态为进程分配工作 六、树 5.1 独立计算块 1.理想并行计算-----独立计算块 5.2 Schwartz算法 1.Schwartz算法是一个进程归纳树算法。各进程先进行部分求和,然后按树汇总到祖先结点。 2.Schwartz算法 Peril-L描述 5.3 归约和扫描抽象 1.主要研究通用归约、通用扫描函数 归约:组合一组值产生单个值;组合由不 同线程或进程产生的结果。 扫描:并行前缀求和。 两种扫描:内含扫描与排除扫描。 内含包括第i个元素本身的前缀求和。 一、通用归约和扫描举例 1、可用归约操作并行解决的例子 次小的数组元素 直方图 最长的全1子串的长度 首次出现X的索引 2、可用扫描操作解决的例子 参赛队的排名 保存最长的全1子串 最后1次出现的索引 5.3.2基本结构 1、试图给出一种对归约和扫描都通用的基本结构 2、前提条件: (1)数据已经进行划分,用Schwartz算法计算,先进行本地计算,然后用树来完成 (2)每个进程存在一个本地变量tally,用于存放归约和扫描的中间结果。 3、相关的函数: Init()函数; Accum()函数 Combine()函数 X-gen()函数 4、通用归约逻辑示意图5-3 5、通用归约逻辑代码图:5-4 5.3.3通用归约结构 1、以次小值为例子,用函数实现归约并行操作 2、图5-5用四个通用归约函数实现归约 5.3.4通用扫描组件举例 1、通用归约与扫描的区别: 归约组合结束后,上送给父结点 扫描组合结束后,中间结果沿组合树向下回传。 tally值:是每个进程从父结点处所接收到的值 即是父结点最左边的叶结点所遗留的tally值 2、三个函数与归约相同。 3、图5-6扫描操作示意图 4、图5-7通用扫描程序 5、包含函数的通用扫描程序,图5-8 5.4静态为进程分配工作 分配方式: 1)隐式分配—共享存储器系统 2)显式分配—分布式存储器系统 5.4.1块分配 1、正方形块分配与行块的分配的比较 正方形块通信量小 行块通信量大 5.4.2重叠区域 6.3.2 热分布问题---局部同步问题 网格点的温度是四个相邻网格点的温度的均值. 得到一个线性方程形式: Xi-m+xi-1-4xi+xi+1+xi+m=0 0=i=m2,有m个方程,叫有限差分方法 H[i][j]表示每点的温度,边界点h[0][x],h[x][0],h[n][x],h[x][n]. 3.并行代码 5.4.3循环分配和块循环分配 1、块分配存在负载不平衡问题 例如:线性方程组的LU矩阵分解法 图5-11所示 2、负载平衡的解决方法-循环分配 循环分配—轮转法 图5-12所示 不足:增加进程间通信量 3、块循环分配方法 特点:1)块的大小不一定的正方形块 2)块将由主进程分配给各从进程 并保存。 4、不规则分配 块、行以外的各种划分方式 5.5 动态为进程分配工作 1、静态分配的优缺点: 1)优点:工作量固定,容易实现 2)缺点:工作量不固定,负载不平衡。 2、动态分配方法 1)工作队列方法---先进先出(FIFO) 新创建的任务添加在队列后面 3、COllatz猜想扩张因子代码,图5-17 2.负载平衡 在处理器间均衡地分配任务来实现让所有的处理器连续地执行任务,使执行的时间最小. 图7-1说明负载平衡如何得到最小时间. 3.负载平衡分为静态和动态负载平衡 4. 静态负载平衡技术 1)循环算法 2)随机算法 3)递归对分 4)模拟退火 4)遗传算法 7.2 动态负载平衡 1.分为:集中式和分散式 集中式动态负载平衡,任务是从一个中心位置分发的. 具有清晰的主从结构 分散式动态负载平衡,任务是在任意进程间传送的. 7.2.1 集中式动态负载平衡 集中式负载平衡的工作池方法: 主进程持有要执行的任务集,任务由主进程发送给从进程,从进程完成一个任务后,会向主进程请求另一个任务. 工作池技术应用于分治问题,任务大小不一的问题;执行期间任务数发生变化的 3.终止:得到解后停止计算 主进程容易识别计算何时终止: 1)任务队列为空; 2)每个从进程为空闲态并且已经请求了另一任务,而又没有任何新的任务产生. 7.2.2 分散式动态负载平衡 1.集中式严重缺点:主进程一次只能发送一个任务,若很多从进程同时请求时,存在潜在瓶颈

文档评论(0)

1亿VIP精品文档

相关文档