并行与分布式计算 第9章 算法设计

文章目录

  • 并行与分布式计算 第9章 算法设计
    • 9.1 设计过程
      • 9.1.1 PCAM设计过程
      • 9.1.2 划分
      • 9.1.3 通信
      • 9.1.4 组合
      • 9.1.5 映射
    • 8.2 设计方法
      • 8.2.1 划分技术
      • 9.2.2 分治
      • 9.2.3 平衡树技术
      • 9.2.4倍增技术
      • 9.2.5 流水线技术
      • 9.2.6 破对称技术

并行与分布式计算 第9章 算法设计

9.1 设计过程

9.1.1 PCAM设计过程

并行算法设计过程的四个阶段
• 划分(Partitioning)将大任务分解成小任务,尽量开拓并发性;
• 通讯(Communication) 确定诸任务间的数据交换,监测任务划分的合理性;
• 组合(Agglomeration) 依据任务的局部性优化通信成本或提高性能,必要时将一些小任务组合成更大的任务
• 映射(Mapping) 将每个任务分配到处理器上执行,监测其执行性能以备下一轮迭代优化。

请添加图片描述

9.1.2 划分

任务的划分
• 就是将原始计算问题分割成一些小的计算任务,以充分开拓算法中存在的并行性;
• 先进行数据分解(域分解domain decomposition),再进行计算功能的分解(功能分解functional decomposition)
• 划分的要点是力图避免数据复制和计算复制,使数据集和计算集互不相交;
• 划分阶段忽略处理器数目和目标机器的体系结构

域分解

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

• 1优先集中划分最大的数据,将数据分解成大致相等的小数据片;
• 2划分时考虑数据上的相应计算操作,在计算的不同阶段,可能需要对不同的数据结构进行操作,或者需要对同一数据结构做不同的分解;
• 3如果一个任务需要别的任务中的数据,则会产生任务间的通讯;
• 4 划分的主要原理是时空局部性原理,注意时空窗口的粒度;

功能分解

• 划分的对象是计算,将所有计算过程划分为不同的任务;
• 划分后,如果不同任务所需的数据不相交的,则划分是成功的;

9.1.3 通信

任务的通信
• 通信,就是为了实现并行计算,诸任务之间所进行的数据传输。
• 划分产生的诸任务,一般不能完全独立执行,需要在任务间进行数据交流,从而产生了通信;
• 通信通常是数据从“生产者”向“消费者”的流动,“生产”和“消费”都是操作,而且具有时序关系,因而通信操作的划分无法通过域分解来确定,只能通过功能分解来确定;
• 诸任务本是并发执行的,通讯则限制了这种并发性;

通信模式
• 局部/全局通讯(空间局部性)
• 结构化/非结构化通讯(拓扑)
• 静态/动态通讯(身份和角色)
• 同步/异步通讯(是否阻塞)

通信判据
• 所有任务是否执行大致相当的通信量? • 是否尽可能的将全局通信化成局部通信?
• 各个通信操作是否能并行执行? • 通信操作与同步点的距离是否合适?便于异步并行执行

9.1.4 组合

任务的组合
• 组合是由抽象到具体的过程,使将组合的任务能在一类并行机上有效的执行;
• 合并小尺寸任务,减少任务数。如果任务数恰好等于处理器数,则也完成了映射过程;
• 通过增加任务的粒度和重复计算,可以减少通信成本;
• 保持映射和扩展的灵活性,降低软件工程成本,注意负载均衡

粒度控制
• 大量细粒度的任务未必能产生有效的并行算法,可能反而增加通信代价和任务调度代价。
• 表面-容积效应:一个任务的通信需求与它所操作的数据子域的表面积成正比,而这个任务的计算需求与它所操作的体积(=数据子域表面积*计算操作的深度)成正比;
• 体积不变的前提下,增加计算操作深度(又称重复计算或者冗余计算),能够减少子域表面积,进而减少通信量;

T总=T计算+T通信

组合判据
• 通过组合增加粒度是否减少了通讯成本?
• 用重复计算换取通信代价是否已权衡了其得益?
• 组合后是否保持了灵活性和可扩放性?
• 组合的任务数是否与问题尺寸成比例? • 组合后的各个任务是否保持了类似的计算和通讯代价?
• 有没有减少并行执行的机会?

9.1.5 映射

任务的映射
• 映射的目标:每个任务要映射到具体的处理器,减少算法的执行时间;映射实际是一种权衡,属于NP完全问题;
• 任务数大于处理器数时,域分解引入负载平衡问题,功能分解引入任务调度问题;
• 并发的任务放在不同的处理器,频繁通信的任务放在同一处理器

负载平衡算法

  • 负载平衡分类
    • 静态的:事先确定;
    • 概率的:随机确定;
    • 动态的:动态确定;
  • 基于域分解的:
    • 递归对剖:多维空间上递归的选一维进行对剖;
    • 局部算法:与邻居比较决定是否把任务迁给邻居;
    • 概率方法:满足某概率条件的随机数发生器进行投放;
    • 循环映射:等概率的特例;

8.2 设计方法

8.2.1 划分技术

• 1.1 均匀划分法
请添加图片描述

• 1.2 平方根划分
请添加图片描述

• 1.3 功能划分
请添加图片描述

9.2.2 分治

分治策略是一种问题求解的方法学,其思想是将原来的大问题分解成若干个特性相同的子问题分而治之。若得到的子问题仍然偏大,可以反复使用分治策略直到很容易求解的子问题为止。使用分治技术时,分解后的子问题通常和原来问题的类型相同,则很容易使用递归过程求解

分治v.s.划分
• 侧重点不同:划分是面向求解问题的需要或过程而进行的;分治是面向求解问题的简单,规范化而进行的。
• 难点不同:划分的难点是划分点的确定问题;分治的难点是问题间的同步通信和(递归)结果的合并问题。
• 子问题规模不同:划分是根据求解需要进行的,结果不一定是等分;分治一般是以1/k进行的等分

并行分治法的步骤
•(1)将输入划分成若干个规模相等的子问题;
•(2)同时(并行地)递归求解这些子问题;
•(3)并行地合并子问题的解,直至得到原问题的解。

9.2.3 平衡树技术

平衡树(Balanced Tree)方法是将输入元素作为叶节点构筑一棵平衡二叉树,中间结点为处理结点,由叶向根或由根向叶逐层往返遍历,在树的同一深度上各节点并行计算。平衡二叉树可以推广到平衡多叉树。
请添加图片描述

9.2.4倍增技术

倍增(Doubling)技术又称指针跳跃(pointer jumping)技术,当递归调用时,所要处理数据之间的距离逐步加倍,经过k步后即可完成距离为2^k的所有数据的计算。特别适合于处理链表或有向树之类的数据结构

请添加图片描述

9.2.5 流水线技术

流水线(Pipelining)通过时间上重叠和空间上并行的方式,将一个计算任务T分成n个前后衔接的子任务T[1:n],使得tk的输出作为t(k+1)的输入,且tk完成后t(k+1)就可立即开始,并以同样的速度进行计算。

请添加图片描述

9.2.6 破对称技术

• 破对称(Symmetry Breaking)就是要打破某些问题的对称性,常用于图论和随机算法问题。
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/210100.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CFA一二三级24年学习资料

还在持续更新中,要一起学习的话点赞加留言吧。

PTA-用天平找小球

三个球A、B、C,大小形状相同且其中有一个球与其他球重量不同。要求找出这个不一样的球。 输入格式: 输入在一行中给出3个正整数,顺序对应球A、B、C的重量。 输出格式: 在一行中输出唯一的那个不一样的球。 输入样例&#xff…

【深度学习】如何选择神经网络的超参数

1. 神经网络的超参数分类 神经网路中的超参数主要包括: 1. 学习率 η 2. 正则化参数 λ 3. 神经网络的层数 L 4. 每一个隐层中神经元的个数 j 5. 学习的回合数Epoch 6. 小批量数据 minibatch 的大小 7. 输出神经元的编码方式 8. 代价函数的选择 9. 权重初始化的方法 …

哪种小型洗衣机好用?四款公认好用的内衣洗衣机推荐

在近年以来,由于人们对健康的认识和生活质量的不断改善,使得内衣洗衣机这一类的产品在近年来得到了飞速的发展,洗烘一体机、洗烘套装的价格总体下降,功能和性能都得到了改善,往往更多的用户会选择一台或者多台洗衣机来…

安装MySQL搭建论坛

课前默写: 1、nginx配置文件的区域有哪些 ①全局区域 ②events区域 ③http区域 2、区域模块的作用 全局区域模块主要是用户和工作进程 events区域模块配置最大连接数时需先配置:vim /etc/limits.conf 因为系统默认最大是1024 http区域模块:代理地…

补充:如何提高selenium的运行速度?

已经通读该专栏文章的同学,或许对UI自动化测试有了一定的掌握,细心的同学肯定会发现一个问题,当用例量达到一定程度时,对于整体用例的执行速度肯定不会很满意。除了应用多线程运行用例的方式加快速度,有没有其他的方法呢? 今天告诉大家,方法是有的!也是本人新学的。即…

h5如何使用navigateBack回退到微信小程序页面并携带参数

前言 在h5中使用navigateBack回退到微信小程序页面很常见,但是有一种交互需要在回退之后的页面可以得到通知,拿到标识之后,进行某些操作,这样的话,由于微信官方并没有直接提供这样的api,就需要我们开动脑筋…

KT404A远程更换语音芯片方案支持OTA 4G 蓝牙 wifi 物联网

目录 一、简介 2.1 芯片的硬件 2.2 测试的方法 一、简介 KT404A远程更换语音芯片方案支持OTA 4G 蓝牙 wifi 物联网 在线下载的mp3语音芯片ic,通过KT404A的uart直接更换内部的语音文件,从而实现动态的更新语音内容 物联网大潮的来袭。随着智能家居、…

代码随想录刷题】Day17 二叉树04

文章目录 1.【110】平衡二叉树(优先掌握递归)1.1 题目描述1.2 解题思路1.3 java代码实现 2.【257】二叉树的所有路径(优先掌握递归)2.1 题目描述2.2 解题思路2.3 java代码实现 3.【404】左叶子之和(优先掌握递归&#…

TypeScript 学习笔记 第三部分 贪吃蛇游戏

尚硅谷TypeScript教程(李立超老师TS新课) 1. 创建开发环境 创建工程,使用学习笔记的第二部分安装css部分 npm i -D less less-loader css-loader style-loader对css部分处理,能够运行在低版本浏览器 npm i -D postcss postcss…

vivado联合modelsim测试覆盖率

(1)配置环境 安装modelsim和vivado。点击vivado菜单栏中的tools,在下拉选项中选择compile simulation libraries。simulator选项选择:modelsim simulator。compile library location表示编译库存放的路径。simulator executable p…

前端js语音朗读文本

<!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>语音朗读</title></head><body>&l…