并行分布式计算 并行算法与并行计算模型

news2024/10/7 16:23:29

文章目录

  • 并行分布式计算 并行算法与并行计算模型
    • 基础知识
      • 定义与描述
      • 复杂性度量
      • 同步和通讯
    • 并行计算模型
      • PRAM 模型
      • 异步 PRAM 模型 (APRAM)
      • BSP 模型
      • LogP 模型
      • 层次存储模型
      • 分层并行计算模型

并行分布式计算 并行算法与并行计算模型

基础知识

定义与描述

并行计算模型类型:抽象计算模型和使用计算模型

并行算法类型

  • 数值计算(代数关系运算)、非数值计算(比较关系运算)
  • 同步算法(算法诸进程的执行必须相互等待)、异步算法(算法诸进程的执行不必相互等待)
  • 确定算法、随机算法

Tip

  • 同步算法使得并行执行步骤可预测,需要额外的协议进行保障,同时使得计算效率下降;
  • 异步算法执行效率高,但容易发生数据上的冲突

描述语言

  • Par-do 语句:代表算法的若干步要并行执行

    for i = i to n par-do:
    	...
    end for
    
  • for all 语句:几个处理器同时执行相同的操作:

    for all Pi where 0 <= i <= k do:
    	...
    end for
    

复杂性度量

常用的复杂性度量指标:

  • 运行时间 t(n) :(n 为问题实例的输入规模)包含计算时间和通讯时间,分别用计算时间步和选路时间步作为单位;
  • 处理器数 p(n)
  • 并行算法成本 c(n) :c(n)=t(n)p(n) ;
  • 成本最优性 :若 c(n) 等于在最坏请形下串行算法所需要的时间,则并行算法是成本最优的;
  • 总运算量:并行算法求解问题时所完成的总的操作步骤

Tip:并行算法的总成本肯定比串行算法要高(需要通信、数据传递等),但我们的目标往往是 t(n) 的降低;

Brent 定理 :令 W ( n ) W(n) W(n) 是某并行算法 A 在运行时间 T ( n ) T(n) T(n) 内所执行的运算量,则 A 使用 p 台处理器可在 t ( n ) = O ( W ( n ) / p + T ( n ) ) t(n)=O(W(n)/p+T(n)) t(n)=O(W(n)/p+T(n)) 时间内执行完毕

Tip:当 p = c ( n ) W ( n ) p=\frac{c(n)}{W(n)} p=W(n)c(n) 时, W ( n ) W(n) W(n) c ( n ) c(n) c(n) 渐进一致,其他情况下并不一定都能充分有效地利用处理器去工作,因此设计并行算法时应尽可能将每个时间步的工作量均匀地分摊给 p 台处理器,使各处理器处于活跃状态。

同步和通讯

同步:时间上强制使得各执行进程在某一点必须相互等待;在异步执行过程中,为了确保正确执行顺序,需要设置适当同步点;

通信:空间上对各并发执行的进程执行数据交换,使用通信原语来表达:

global read(X, Y)
global write(U, V)
Send(X, i)
Receive(Y, j)

并行计算模型

请添加图片描述

PRAM 模型

PRAM:并行随机存储机器,即共享存储器的 SIMD 模型

  • 假定存在一个容量无限大的共享存储器
  • 有限或无限个功能相同的处理器
  • 任何时刻各处理器均可以通过共享存储单元相互交换数据

请添加图片描述

分类:根据读和写是否是并发或互斥进行分类,并发读并发写(PRAM-CRCW)是最强的计算模型,而互斥读互斥写(PRAM-EREW)可以 log ⁡ p \log{p} logp 模拟并发度互斥写(PRAM-CREW)进而并发读并发写:
T E R E W ≥ T C R E W ≥ T C R C W T E R E W = O ( T C R E W ⋅ log ⁡ p ) = O ( T C R C W ⋅ log ⁡ p ) T_{EREW}\geq T_{CREW} \geq T_{CRCW} \\ T_{EREW} = O(T_{CREW}\cdot \log{p}) = O(T_{CRCW}\cdot \log{p}) TEREWTCREWTCRCWTEREW=O(TCREWlogp)=O(TCRCWlogp)
优点:适合并行算法表示以及复杂度分析,易于使用;隐藏了并行机的通讯、同步等细节;

缺点:不适合 MIMD 并行机,忽略了共享存储的竞争、通讯延迟等因素;

:并行加法

请添加图片描述

  • fi 就是同步的操作
  • 这里的算法十分浪费,k 个线程只有一半在工作

异步 PRAM 模型 (APRAM)

APRAM:又称为 分相(Phrase)PRAM 或 MIMD-SM

  • 由 p 个处理器组成,每个处理器都有其局部存储器、局部时钟、局部程序;
  • 无全局时钟,各处理器异步执行;
  • 处理器通过共享存储器进行通讯;(还是保留了 SM)
  • 处理器间依赖关系,需要在并行程序中显式地加入同步路障(我觉得叫同步屏障比较合理hh,Synchronization Barrier);
  • 一条指令可以在非确定(无界)但有限的时间内完成;

计算过程

请添加图片描述

指令类型:全局读、全局写、局部操作、同步

计算时间

请添加图片描述

  • 需要将任务平均分配, t p h t_{ph} tph 才会降下来

优缺点

  • APRAM 相比于 PRAM 更接近实际的并行机,可以模拟 MIMD 模型,基本建模了单机多核多线程的环境;
  • 保留了易编程和分析算法的复杂度,但与现实差距较远;
  • 在 APRAM 上可以
  • 使用的并行算法非常有限,也不适合 MIMD-DM 模型(因为 APRAM 还是保留了 SM)

BSP 模型

BSP:块同步模型

  • APRAM 也称为轻量同步模型,主要是因为SM了所以轻量,所以 BSP 需要通讯;
  • 异步 MIMD-DM 模型:支持分布式存储、消息传递系统、块内异步并行、块间显式同步;

计算过程:计算由全局同步、周期为 L 的若干超级步组成。周期间做全局检查,如果没有全部做完。则下一个 L 周期分配给未曾完成的超级步。

请添加图片描述

模型参数

  • p:处理器数(带有存储器)
  • L:同步障时间
  • g:带宽因子(1/bandwidth),即每个 packet 传输需要多少时间

优缺点

  • 相比于 SM,将处理器和选路器分开,强调了计算和通讯的分离;
  • 选路器仅实行点到点的消息传递,掩盖了具体网络协议,简化通信协议;
  • 采用路障方式,用硬件实现可控粗粒度的全局同步;但是需要显式同步机制,限制至多 h 条消息的传递等;
  • 提供了一个编程环境(比如下面求前缀和的框架),利于程序复杂度分析

:Prefix Scan

请添加图片描述

LogP 模型

LogP:分布存储的、点到点通信的多处理机模型

  • PRAM、APRAM、BSP 都没有充分考虑到数量多且强大的处理器/存储器节点,也没有考虑到带宽受限的、延迟可观的互联网络(BSP 虽然引入了网络通讯,但是只有一个参数带宽因子 g)

模型参数:(不涉及网络的具体结构)

  • 延迟 L:网络中消息从源到宿所产生的延迟;
  • 额外开销 o:处理器发送或接受一条消息所需的额外开销;
  • 最小时间间隔 g:处理器连续进行消息发送或接受的最小时间间隔
  • 模块数 P:处理器/存储器 模块数

特点

  • L 和 g 反映了通讯网络的容量,和 o 一起刻画了网络通信特征;
  • 屏蔽了网络拓扑、选录算法和通信协议等具体细节(是合理的,在上千个处理器在网络轻载时,对网络和结构也不敏感)
  • 每个节点只有一个处理器,发送/接受消息要付出开销 o,对于长消息提供专门硬件支持,对消息长度无特别处理;
  • 最普遍的全局操作是路障;

BSP vs. LogP

  • BSP 是块同步,而 LogP 是进程对同步;
  • BSP 可以常数因子模拟 LogP,LogP 可以对数因子模拟 BSP;
  • BSP= LogP + Barriers - Overhead;
  • BSP 提供了更方便的程设环境,更简便,复合结构化编程;LogP 更好地利用了机器资源,更符合实际情况;

总结

请添加图片描述

层次存储模型

并行计算模型均假定存储系统具有一级主存,且访问时间均为单位时间(本机一定有自己的存储),但是存储系统是分层的,访存均视为单位时间是不精确地。

串行计算系统的层次存储模型

  • HMM (Hierarchical Memory Model)和 HMM-BT (with Block Transfer):面向地址,访问数据的地址决定了访存开销;-BT 增加了块传输,数据的地址处于什么块也会影响开销;该模型对顺序访问有效;
  • UMA(Uniform Memory Hierachy,均匀存储层次):每层的开销是固定的
  • RAM(h) 模型:单层随机访问存储,可以推广到 h-层存储,各层访问开销是非均匀一致的。

并行计算系统的层次存储模型

  • Memory-LogP:将 LogP 中网络延迟参数 L 扩展到通信开销函数,函数参数为应用数据集合大小和数据分布;
  • DRAM(h) :分布式 RAM(h) 模型,以 RAM(h) 为本地存储,消息传递视为另一层存储层次访问(远端的数据当作新的一层),DRAM(h)=RAM(h)+LogP;
  • HPM:层次并行和存储,描述同构并行系统中的层次并行性和层次存储特性

分层并行计算模型

请添加图片描述

请添加图片描述

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

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

相关文章

15个最适合初创公司创始人使用的生产力工具

创业是一段激动人心且收获颇丰的旅程&#xff0c;同时也伴随着一些挑战。创始人往往要面对长时间的工作、紧迫的期限和大量的压力时刻。因此&#xff0c;初创公司创始人必须最大限度地利用他们的时间并利用他们可用的生产力工具——不仅是为了发展他们的业务&#xff0c;而且是…

Cron表达式简单介绍 + Springboot定时任务的应用

前言 表达式是一个字符串&#xff0c;主要分成6或7个域&#xff0c;但至少需要6个域组成&#xff0c;且每个域之间以空格符隔开。 以7个域组成的&#xff0c;从右往左是【年 星期 月份 日期 小时 分钟 秒钟】 秒 分 时 日 月 星期 年 以6个域组成的&#xff0c;从右往左是【星…

【精华】表格识别技术-MI

表格识别是指将图片中的表格结构和文字信息识别成计算机可以理解的数据格式&#xff0c;在办公、商务、教育等场景中有着广泛的实用价值&#xff0c;也一直是文档分析研究中的热点问题。围绕这个问题&#xff0c;我们研发了一套表格识别算法&#xff0c;该算法高效准确地提取图…

RabbitMq 的消息可靠性问题(二)---MQ的消息丢失和consumer消费问题

前言 RabbitMq 消息可靠性问题(一) — publisher发送时丢失 前面我们从publisher的方向出发解决了发送时丢失的问题&#xff0c;那么我们在发送消息到exchange, 再由exchange转存到queue的过程中。如果MQ宕机了&#xff0c;那么我们的消息是如何确保可靠性的呢&#xff1f;当消…

SQL的函数

文章目录一、SQL MIN() Function二、SQL SUM() 函数三、SQL GROUP BY 语句四、SQL HAVING 子句五、SQL EXISTS 运算符六、SQL UCASE() 函数总结一、SQL MIN() Function MIN() 函数返回指定列的最小值。 SQL MIN() 语法 SELECT MIN(column_name) FROM table_name;演示数据库 …

Numba witch makes Python code fast

一. 前言&#xff1a;numba&#xff0c;让python速度提升百倍 python由于它动态解释性语言的特性&#xff0c;跑起代码来相比java、c要慢很多&#xff0c;尤其在做科学计算的时候&#xff0c;十亿百亿级别的运算&#xff0c;让python的这种劣势更加凸显。 办法永远比困难多&a…

ASP.NET Core MVC 从入门到精通之接化发(二)

随着技术的发展&#xff0c;ASP.NET Core MVC也推出了好长时间&#xff0c;经过不断的版本更新迭代&#xff0c;已经越来越完善&#xff0c;本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容&#xff0c;适用于初学者&#xff0c;在校毕业生&#xff0c…

4.13实验 加测试题目

今天是个好日子,要搞栈的实验 没啥就是链栈和顺序栈 和出栈入栈,强大都是从最基本开始的 来和我一起写写吧 //顺序栈 typedef struct node{int *base;int *top;int sizer; }shed;//链栈 typedef struct Node{ int data; struct Node* next; }*stact,link; //顺序栈的初始化…

《绝对坦率》速读笔记

文章目录书籍信息概览&#xff08;第一部分 一种新的管理哲学&#xff09;建立坦率的关系给予并鼓励指导了解团队中每个人的动机协同创造成果&#xff08;第二部分 工具和技巧&#xff09;关系指导团队结果书籍信息 书名&#xff1a;《绝对坦率&#xff1a;一种新的管理哲学》…

北邮22信通:(12)二叉树的遍历书上代码完整版

北邮22信通一枚~ 跟随课程进度每周更新数据结构与算法的代码和文章 持续关注作者 解锁更多邮苑信通专属代码~ 上一篇文章&#xff1a; 下一篇文章&#xff1a; 目录 一.储存最简单数据类型的二叉树 代码部分&#xff1a; 代码效果&#xff1a; 运行结果&#xff1a…

解决JD-GUI-1.6.6 中文乱码

一、背景 在window环境下使用中遇到了乱码问题。 问题有两个&#xff1a; 一、从反编译代码的界面 CTRLC 复制是如果选中内容包含中文&#xff0c;贴到其他编辑器时&#xff0c;中文丢失。 二、打开xml文件、properties文件等包含中文时。中文在反编译界面中显示乱码。用其他工…

java反射教程

反射&#xff08;Reflection&#xff09;是 Java中的一种机制&#xff0c;它是一种特殊的面向对象编程技术。在 Java中&#xff0c;反射可以分为静态反射和动态反射两种。静态反射是指在 Java程序运行时才进行的一种反射&#xff0c;它可以保证程序运行时不会出现内存泄漏等错误…

数据分析的作用和意义?

数据分析的作用和意义&#xff1f;在当下数字化转型发展的大环境中&#xff0c;数据也成为企业商业成功与否的重要基础&#xff0c;如何利用好数据分析问题预测未来也成为更多企业面临的首要问题。而随时大数据的不断渗透&#xff0c;数据量和数据类型也越来越多&#xff0c;数…

asp.net车辆管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net车辆管理系统 是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言开发 asp.net车辆管理系统VS开发sqlserver数…

【CSIG图像图形技术挑战赛-开放世界目标检测竞赛】火热报名中!

竞赛名称&#xff1a;开放世界目标检测竞赛/Few Shot&#xff09;主办方: 中国图象图形学学会&#xff08;CSIG&#xff09;合作方: 360集团竞赛目的与意义&#xff1a;目标检测是计算机视觉中的核心任务之一&#xff0c;主要目的是让计算机可以自动识别图片中目标的类别&#…

Windows File Recovery使用教程

Windows File Recovery简介 Windows File Recovery是微软在2020年发布的命令提示符文件恢复工具&#xff0c;它不仅具有高成功率和高安全性&#xff0c;还适用于不同的文件系统和文件丢失场景。如果你需要从本地硬盘、USB设备、SD卡等设备中恢复意外丢失或删除的JPEG、PDF、…

分析Spring事务管理原理及应用

目录 一、Spring事务管理介绍 &#xff08;一&#xff09;基本理论 &#xff08;二&#xff09;实际工作中的举例 &#xff08;三&#xff09;简单应用举例 二、Spring事务配置介绍 &#xff08;一&#xff09;Spring事务属性介绍 传播属性&#xff08;传播行为&#xff…

车身控制模块BCM(Body Control Module)

1.BCM概述 车身控制模块BCM是高集成度的芯片。BCM的英文全称是Body Control Module。其控制对象是采用高灵敏度带唤醒及睡眠检测的高频收发器&#xff0c;实现车门车窗遥控上锁与开锁、电动后视镜、中控门锁、玻璃升降装置、车灯(远光灯、近光灯、位置灯、制动灯、转向灯、雾灯…

【RocketMQ】主从模式下的消费进度管理

在【RocketMQ】消息的拉取一文中可知&#xff0c;消费者在启动的时候&#xff0c;会创建消息拉取API对象PullAPIWrapper&#xff0c;调用pullKernelImpl方法向Broker发送拉取消息的请求&#xff0c;那么在主从模式下消费者是如何选择向哪个Broker发送拉取请求的&#xff1f; 进…

【Linux】项目自动化构建工具-make/Makefile

文章目录1.make/Makefile的重要性2.规则及使用使用规则3.Makefile编译多文件1.make/Makefile的重要性 会不会写makefile&#xff0c;从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文件不计数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xf…