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

news2024/11/18 1:50:19

文章目录

  • 并行与分布式计算 第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.coloradmin.cn/o/1242149.html

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

相关文章

【LeetCode:1410. HTML 实体解析器 | 模拟+哈希表+字符串+库函数】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

2024年荆州中级工程师职称申报时间是什么时候?

甘建二十年耕耘职称。 2024年荆州中级工程师职称开始准备了,关于荆门中级职称具体申报时间,甘建二告诉你。 ​2024年荆州中级工程师职称申报时间: 1.水平能力测试报名3月份 2.水平能力测试考试4月份3.职称申报9月份,采取的是网上申…

多个视频怎么生成一个二维码?二维码看视频的制作方法

二维码能放入多个视频吗?现在用二维码看视频是很流行的一种方式,不仅符合现在人的行为习惯,而且还不需要占用自身的容量空间,能够即时的获取视频内容。那么当有多个视频需要展示,但是想要放到一个二维码中,…

【开源】基于Vue.js的天然气工程运维系统的设计和实现

项目编号: S 022 ,文末获取源码。 \color{red}{项目编号:S022,文末获取源码。} 项目编号:S022,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统角色分类2.2 核心功能2.2.1 流程…

界面组件Telerik UI for WinForms中文教程 - 创建明暗模式的桌面应用

黑暗模式现在在很多应用程序中都挺常见的,但如何在桌面应用程序中实现它呢?这很简单,本文将为大家介绍如何使用一个类和命令行调用来实现! Telerik UI for WinForms拥有适用Windows Forms的110多个令人惊叹的UI控件。所有的UI fo…

vue中列表渲染

列表渲染 实际开发中,使用每条数据的唯一标识作为key,也就是对于数组列表,对象中的属性如:id、手机号、身份证号、学号等唯一值,对象列表同理 只要不对列表的逆序添加,逆序删除等破坏顺序的操作,仅用于渲染…

设置滚动条样式

滚动条样式&#xff1a; 下面是代码&#xff1a; <!doctype html> <html lang"en"><head><meta charset"UTF-8"><title>CSS3自定义滚动条</title><style>header {font-family: Lobster, cursive;text-align: c…

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

晚上cpu报警显示当前cpu使用率达到90%以上&#xff0c;不到10%的空闲 先查询当前sql&#xff1a; #&#xff08;ORACLE&#xff09; 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 …

深入解析Java 8中HashMap的底层原理

引言 HashMap是Java中常用的集合类&#xff0c;用于存储键值对。其底层实现经过多次优化&#xff0c;包括哈希算法、数组扩容、链表转红黑树等。本文将深入研究HashMap的底层原理&#xff0c;并详细探讨如何解决哈希碰撞的技术。 1. 哈希算法 HashMap的核心是哈希算法&#…

openGauss学习笔记-130 openGauss 数据库管理-参数设置-重设参数

文章目录 openGauss学习笔记-130 openGauss 数据库管理-参数设置-重设参数130.1 背景信息130.2 GUC参数设置130.3 操作步骤130.4 示例 openGauss学习笔记-130 openGauss 数据库管理-参数设置-重设参数 130.1 背景信息 openGauss提供了多种修改GUC参数的方法&#xff0c;用户可…

vue2.0+elementui集成file-loader之后图标失效问题

背景 跑vue2elementUI项目时&#xff0c;由于前端这边需要在本地存放xlsx模板文件&#xff0c;供用户下载模板文件&#xff0c;所以需要在webpack构建的时候增加file-loader进行解析xlsx文件打包。 vue版本2.x element-ui 版本 2.13.x 注意 npm i -D file-loader版本号给vue项…

SpringMVC 基础知识

学习目标 掌握基于 SpringMVC 获取请求参数与响应 json 数据操作熟练应用基于 REST 风格的请求路径设置与参数传递能够根据实际业务建立前后端开发通信协议并进行实现基于 SSM 整合技术开发任意业务模块功能 1 SpringMVC 简介 1.1 概述 1.1.1 web程序开发流程 【执行过程】…

ios(swiftui) 画中画

一、环境 要实现画中画 ios系统必须是 iOS14 本文开发环境 xcode14.2 二、权限配置 在项目导航器中单击项目&#xff0c;然后单击Signing & Capabilities。单击 Capabilit搜索Background Modes&#xff0c;然后双击将其添加为功能。在新添加的Background Modes部分&a…

vue2.6源码分析

vue相关文档 vue-cli官方文档 vuex官方文档 vue-router 官方文档 vue2.6源码地址 如何调试源码 package.json 添加了--sourcemap "scripts": {"dev": "rollup -w -c scripts/config.js --environment TARGET:web-full-dev --sourcemap" }新增…

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

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

盘点一下:为了考上本科,你需要放弃什么?

专转本除了胜利后喜悦&#xff0c;更多的则是过程的艰辛&#xff0c;为了专转本成功&#xff0c;我们放弃了自己的娱乐时间、放弃了自己的兴趣爱好。 专转本考试相当于人生第二次“高考”&#xff0c;在学历门槛的今天&#xff0c;越来越多的人都在通过各类途径提转个人学历。…

用好语言模型:temperature、top-p等核心参数解析

编者按&#xff1a;我们如何才能更好地控制大模型的输出? 本文将介绍几个关键参数&#xff0c;帮助读者更好地理解和运用 temperature、top-p、top-k、frequency penalty 和 presence penalty 等常见参数&#xff0c;以优化语言模型的生成效果。 文章详细解释了这些参数的作用…

【KMP算法】学习总结

说明&#xff1a; 文章内容为对KMP算法的总结&#xff0c;以及力扣例题&#xff1b;文章内容为个人的学习总结&#xff0c;如有错误&#xff0c;欢迎指正。 文章目录 1. KMP算法1.1 算法步骤1.2 关于指针回退问题 2 . LeetCode例题 1. KMP算法 1.1 算法步骤 KMP算法通常用于…

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

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

vue中v-if与v-for的优先级?

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue中v-if与v-for的优先级? 目录 v-if和v-for的优先级是什么&#xff1f; 一、作用 二、优先级…