并行与分布式计算 第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.mzph.cn/news/163017.shtml

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

相关文章

一张图,了解美格智能高算力AI模组

美格智能高算力A模组,澎湃算力让AI触手可及!

数字化背景下,集流体行业的智能制造方法论

行业背景 随着全球对清洁能源需求的不断增加,新能源领域正在迅速崛起,在新能源技术中,锂电池作为一种高效、轻便的能量储存解决方案,正成为主流。而锂电集流体作为锂电池的核心部件,承担着电池内部电流分布的关键角色…

服务号可以迁移到订阅号吗

服务号和订阅号有什么区别?服务号转为订阅号有哪些作用?首先我们要看一下服务号和订阅号的主要区别。1、服务号推送的消息没有折叠,消息出现在聊天列表中,会像收到消息一样有提醒。而订阅号推送的消息是折叠的,“订阅号…

分布式篇---第二篇

系列文章目录 文章目录 系列文章目录前言一、你知道哪些分布式事务解决方案?二、什么是二阶段提交?三、什么是三阶段提交?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你…

基于Pytorch框架多人多摄像头摔倒跌倒坠落检测系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 深度学习在计算机视觉领域的应用已经取得了显著的进展,特别是在多人多摄像头场景下的摔倒跌倒检测。通过…

Vue环境的搭建

1.Vue开发的两种方式 (1)核心包传统开发模式 基于html/css/js文件,直接引入和辛堡,开发Vue。 (2)工程化开发模式: 主要是基于构建工具(例如,webpack)的环境中开发Vue…

福州大学《嵌入式系统综合设计》实验五:图像裁剪及尺寸变换

一、实验目的 在深度学习中,往往需要从一张大图中裁剪出一张张小图,以便适应网络输入图像的尺寸,这可以通过bmcv_image_crop函数实现。 实践中,经常需要对输入图像的尺寸进行调整,以适用于网络输入图片尺寸&#xff0…

查看sql语句执行计划并重建索引

晚上cpu报警显示当前cpu使用率达到90%以上,不到10%的空闲 先查询当前sql: #(ORACLE) SQL > set line 200 pages 1000 col event for a30 col program for a30 col username for a12 col sql_id for a15 col INST_ID for 9999 …

前端开发学习 (二) 事件修饰符、系统命令

其实,我们上一章的时候就已经说过了一些系统指令,这里详细介绍一下 一、v-on的事件修饰符 事件作用click点击时触发submit表单被提交时触发input输入框发生改变时触发keyup按键松开时触发keydown按键按下时触发mouseover鼠标悬停触发mouseout当鼠标移开…

安徽省广德市选择云轴科技ZStack Cloud云平台建设县级智慧城市

信创是数字中国建设的重要组成部分,也是数字经济发展的关键推动力量。作为云基础软件企业,云轴科技ZStack产品矩阵全面覆盖数据中心云基础设施,ZStack信创云首批通过可信云《一云多芯IaaS平台能力要求》先进级,是其中唯一兼容四种…

【Web】NewStarCTF Week1 个人复现

目录 ①泄露的秘密 ②Begin of Upload ③Begin of HTTP ④ErrorFlask ⑤Begin of PHP ⑥R!C!E! ⑦EasyLogin ①泄露的秘密 盲猜/robots.txt,访问得到flag前半部分 第二个没试出来,老老实实拿dirsearch扫吧 访问/www.zip 下载附件,拿到第二部分…

SpringCloud原理-OpenFeign篇(一、Hello OpenFeign项目示例)

文章目录 前言正文一、项目结构二、服务调用链路说明三、Rpc调用链路说明四、项目代码4.1 client 模块中的feign接口4.2 client 中的rest接口4.3 client 中的启动类4.4 server中的rest接口4.5 server中的配置文件 五、调试 附录附1:本系列文章链接 前言 本篇是Spri…

示波器探头讲解及案例分享

示波器探头讲解 示波器探头 分为X1、X10档: X1档,表示被测量的信号没有经过衰减进入示波器 X10档,表示被测量的信号衰减10倍进入示波器(当示波器也设置为10X档,直接读数即可,但是当示波器设置为1X档&…

1、开发工具介绍及软件安装

软件安装 百度网盘链接:https://pan.baidu.com/s/1J7sgXntt9eLNBhI1Dc6MsQ?pwd2023 提取码:2023 # 一 Keil5安装步骤: 激活: STC-ISP安装步骤: STC-ISP.exe安装即用 安装CH340_CH341驱动程序 所有学习课程和资源…

【vue】ant-design-vue的树结构实现节点增删改查

根据业务需要,实现树结构的节点新增编辑删除功能,主要逻辑是利用树节点的scopedSlots属性对其进行自定义改造,监听悬停事件在节点右侧出现增删改对应图标,点击图标出现弹窗表单对内容进行修改,具体代码如下&#xff1a…

蓝桥杯每日一题2023.11.23

题目描述 题目分析 本题使用递归模拟即可,将每一个大格子都可以拆分看成几个小格子,先将最开始的数字进行填入,使每一个对应小格子的值都为大格子对应的数,搜索找到符合要求的即可 (答案:50 33 30 41&am…

Python爬取京东商品销售数据进行数据分析示例代码,以口红为例

文章目录 一、准备工作驱动安装模块使用与介绍 二、流程解析三、完整代码四、效果展示关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资…

2023年中国钒铁产量及行业进出口现状分析[图]

钒铁,银白色块状,一般分为桶装或吨袋包装,根据钒含量的不同分为50钒铁(FeV50)和80钒铁(FeV80),通过炉外法或电炉法冶炼生产,北方多以炉外法制取,南方多为电炉法生产。 钒…

Faster R-CNN源码解析(一)

目录 前言训练脚本(train_mobilenetv2.py)自定义数据集(my_dataset.py) 前言 Faster R-CNN 是经典的two-stage目标检测模型, 原理上并不是很复杂,也就是RPNFast R-CNN,但是在代码的实现上确实有很多细节,并且源码也非常的多&…

chatglm3部署使用

chatglm3部署使用 1.部署2.使用3.接入微信4.vue前端 1.部署 1.首先去github下载chatglm3代码。Huggingface下载模型一直失败,所以用阿里的魔塔社区下载。 git clone https://github.com/THUDM/ChatGLM3.git git clone https://www.modelscope.cn/ZhipuAI/chatglm3…