【并行算法】问题的基本求解过程和并行计算机模型
问题的基本求解过程
1)建立实际应用问题的理论模型(物理模型或数学模型);
2)理论模型的并行算法设计(在并行机上为该模型设计高效算法);
3)算法程序的实现
并行算法研究的目的:探索在并行计算机上解决应用问题的高效算法。
并行计算机模型
冯-诺依曼计算机是一个理想的通用串行计算机模型,但是对并行计算来说,到目前为止,没有一个类似的通用并行计算模型。在过去几十年中,人们针对不同类型的并行计算机提出了多种并行计算模型: 1) PRAM模型;2 )异步APRAM模型;3) BSP模型;4) logP模型。
并行计算模型:从并行算法的设计和分析出发,将各种并行计算机(至少是某一类)的基本特征抽象出来,形成一个抽象的并行计算模型。
并行计算模型为并行计算提供了硬件和软件系统的设计界面,在该界面的约定下,并行系统的硬件和软件设计者可以开发硬件结构和软件(算法、操作系统、语音等)。并行计算模型只是并行计算的理论模型,无须估计实现细节和物理约束条件;并行计算模型不同于某一类并行机。
并行计算模型的作用
1)是并行算法实现的基础
2)给并行算法设计与分析提供了一个简单方便的框架
3)使并行算法的设计具有一定的生命力
我们知道,并行算法的设计依赖于并行计算模型,由于并行计算模型与具体并行系统的差异性,一个并行算法在不同计算系统上运行的效率是不同的。因此,研究并行计算模型在具体并行计算系统上实现的规律对开发高性能的并行计算软件具有重要意义。
一、PRAM模型
(Parallel Random Access Machine并行随机存取机器)
基本概念
由Fortune和Wyllie1978年提出,又称SIMD-SM模型。有一个集中的共享存储器和一个指令控制器,通过SM的R/W交换数据,隐式同步计算。(SIMD——单指令流,多数据流;SM——共享内存)
结构图
(p表示处理器,LM表示局地内存)
PRAM(Parallel Random Access Machine)模型是单指令流多数据流(SIMD)并行机中的一种具有共享存储的模型。它假设有一个无限大容量的共享存储器,并且有多个功能相同的处理器,在任意时刻处理器可以访问共享存储单元。
根据是否可以同时读写,它又分为以下三类:
PRAM-EREW,PRAM-CREW,PRAM-CRCW(其中C代表Cuncurrent,意为允许并发操作,E-代表Exclusive,意味排斥并发操作)。在PRAM中有一个同步时钟,所有的操作都是同步进行的。
PRAM模型优缺点
优点
适合并行算法表示和复杂性分析,易于使用,隐藏了并行机的通讯、同步等细节。
缺点
不适合MIMD(多指令流,多数据流)并行机,忽略了SM的竞争、通讯延迟等因素
不现实,首先容量无限大的存储器是不存在的,而且由于各方面的原因,全局访存通常要比预想的慢。其次,他忽略了通信带宽的影响。
共享存储模型-SM模型
共享存储模型特别适合于并行算法的表达、分析和比较;使用简单,很多诸如处理器间通信、存储管理和进程同步等并行机的低级细节均隐含于模型中;易于设计算法和稍加修改便可运行于不同的并行机上。由于本模型是一个同步模型,意味着指令按照锁步方式执行,共享单一存储器的假定,显然不适合于分布存储的异步 MIMD机器。
二、异步APRAM(Asynchrinize)模型
基本概念
又称分相(Phase)PRAM或MIMD-SM。每个处理器有其局部存储器、局部时钟、局部程序;无全局时钟,各处理器异步执行;处理器通过SM进行通讯;处理器间依赖关系,需在并行程序中显式地加入同步(路)障(Synchronization Barrier)。
指令类型
(1)全局读 (3)全局写
(2)局部操作 (4)同步
APRAM模型中的指令类型:
全局读:将全局存储单元中的内容读入局存单元中。
局部操作:对局存中的数执行操作,其结果存入局存中。
全局写:将局存单元中的内容写入全局存储单元中。
同步:是计算中的一个逻辑点,在该点各处理器均需等待别的处理器到达后才能继续执行其局部程序。
计算过程
由同步障分开的全局相组成
(处理器1到处理器p通过分项来实现各个操作,在每一个分项中以读(read)开始,以写(write)结束;*表示局部操作,局部操作可以是不同的,也就是异步实现;当分项中完成最后一个写的操作,把该写操作当成一个同步障;然后执行下一个分项中的内容.)
APRAM模型中的计算:
计算由一系列用同步障分开的全局项所组成。
如上图,在各全局相内,每个处理器异步地运行其局部程序。
每个局部程序中最后一条指令是一条同步障指令。
各处理器均可异步地读取和写入全局存储器,但在同一相内不允许两个处理器访问同一单元。
优缺点
易编程和分析算法的复杂度,但与现实相差较远,其上并行算法非常有限,也不适合MIMD-DM模型。
三、LogP模型
基本概念
由Culler(1993)年提出的,是一种分布存储的、点到点通讯的多处理机模型,其中通讯由一组参数描述,实行隐式同步。
该计算模型能够作为设计和分析快速、可移植并行算法的基础,并使得这样设计出的并行算法在现在和未来大部分并行计算机上能高效实现。
【发送信息的照片,来源于网络】
(如果一个用户A给一个用户B发送信息,A编辑完之后将信息发送给B,B在接受的时候,实际上信息传递有一个延迟,并不是A发送的时候,B就能够立刻接受到;另外当A编辑的信息比较长的时候,会把信息合成多段去发送,在B接受信息的时候,每段信息都有一段很短的时间间隔。)
LogP模型中的参数
L(Latency):源处理机与目标处理机之间进行消息通信(一个或几个字)所需等待的延迟时间的上限。
o(overhead):处理机用于发送或者接受每个消息的时间开销。
g(gap):一台处理机连续进行消息发送或接收时的最小时间间隔。
P(Processor):处理机或处理模块的数量
LogP模型是异步的,假设所有消息都很短。
优缺点
捕捉了MPC的通讯瓶颈,隐藏了并行机的网络拓扑、路由、协议,可以应用到共享存储、消息传递、数据并行的编程模型中;但难以进行算法描述、设计和分析。
四、BSP模型
BSP模型以三个参数描述分布式存储的多计算模型。
三个参数:
处理机(P)
处理机之间的点对点通信的选路器(g)
执行以时间间隔L为周期的路障同步器(L)
在BSP模型中,计算由一系列用全局同步器分开的周期为L的超级步组成。
LogP模型和BSP模型在效率上是等效的。
BSP vs LogP
BSPLogP:BSP块同步
BSP子集同步
BSP进程对同步=LogP
BSP可以常数因子模拟LogP,LogP可以对数因子模拟BSP
BSP=LogP+Barriers-Overhead
BSP提供了更方便的程设环境,LogP更好地利用了机器资源
BSP似乎更简单、方便和符合结构化编程
【并行算法】问题的基本求解过程和并行计算机模型相关推荐
- 多视图几何总结——基础矩阵、本质矩阵和单应矩阵的求解过程
多视图几何总结--基础矩阵.本质矩阵和单应矩阵的求解过程 多视图几何总结--基础矩阵.本质矩阵和单应矩阵的求解过程 1. 说明--其实求解过程大同小异 2. 单应矩阵求解过程 2.1 基于代数误差的线 ...
- matlab破损皮革定位,matlab-code-of-TDOAFDOa 干扰源定位代码,应该在 的求解过程中有帮助。 276万源代码下载- www.pudn.com...
文件名称: matlab-code-of-TDOAFDOa下载 收藏√ [ 5 4 3 2 1 ] 开发工具: matlab 文件大小: 38 KB 上传时间: 2014-05-31 下载 ...
- 深度学习(四十)优化求解系列(2)简单理解神经网络求解过程-未完待续
对于神经网络的求解过程BP,其实说白了就是复合函数的求导过程,所以我们需要先复习一下高数复合函数的求导过程. 一.复合函数的求导法则 1.复合函数: 此函数是一个包含了三层映射过程的复合函数,为了跟后 ...
- 两空间异面直线公垂线及交点坐标的求解过程
转自:https://blog.csdn.net/hengfanz/article/details/44223411 已知空间4点,点A.B构成直线L1, 点C.D构成直线L2, 求L2上点P,使P到 ...
- 数据挖掘机器学习[七]---2021研究生数学建模B题空气质量预报二次建模求解过程:基于Stacking机器学习混合模型的空气质量预测{含码源+pdf文章}
相关文章: 特征工程详解及实战项目[参考] 数据挖掘---汽车车交易价格预测[一](测评指标:EDA) 数据挖掘机器学习---汽车交易价格预测详细版本[二]{EDA-数据探索性分析} 数据挖掘机器学习 ...
- ansys在求解过程中死机关机的解决办法
ansys是一款功能强大的仿真软件.它用于分析工程领域的结构分析和流体动力学.在使用ansys软件时,必须面对许多复杂的问题,并且计算机会崩溃关机.这导致工作人员的时间浪费以及效率低下. ansys关 ...
- 布莱克斯科尔斯模型(五) 方程求解过程
布莱克斯科尔斯模型(五) 方程求解过程 posted on 2019-02-12 20:05 luoganttcc 阅读(...) 评论(...) 编辑 收藏
- 多旅行商问题——公式和求解过程概述
英文:The multiple traveling salesman problem an overview of formulations and solution procedures 摘要: 多 ...
- 深度学习笔记(五) 代价函数的梯度求解过程和方法
作为自己的笔记系列,方便自己查阅和理解. 1)什么是梯度 梯度 本意是一个向量(矢量) 当某一函数在某点处沿着该方向的方向导数取得该点处的最大值,即函数在该点处沿方向变化最快,变化率最大(为该梯度的模 ...
最新文章
- Go语言调度器之调度main goroutine(14)
- 通过Auto Layout深入了解SizeClasses的好处和使用
- 与火狐浏览器对应版本_你下载的是原版的火狐浏览器吗?如果不清楚,这篇文章会让你明白...
- Windows 如何在命令终端(CMD)使用命令来访问本地/远程的 Oracle 数据库呢?
- JavaScript 计时器
- Airflow 中文文档:数据分析
- 计算机应用项目的主要领域,计算机应用基础_领域一.ppt
- python考试报名官网安徽_2019年3月安徽宿州学院全国计算机等级考试报名通知
- 四元数与欧拉角之间的转换
- Android电话本实现
- 详解ELF可执行文件格式:读取头部信息和程序表头
- 抱怨,就是在吸引不幸
- Sheldon的小本本 (10 分)
- 微信小程序 识别身份证,银行卡
- FPGA:逻辑代数的基本公式和规则
- Win及杀毒软件输入法豪杰注册序列号等
- 【RESTful】简介
- IT男人:四十岁是一枝花吗? 1
- Ubuntu16.04 安装NVIDIA英伟达驱动教程 及常见几种报错Error的解决方案
- “小丑竟是我自己”的自嘲梗为什么在年轻人圈里那么火
热门文章
- Linus系统上网及密码破解
- linux静态代码检查工具,linux下splint检测C语言代码质量
- 使用BlazeDS实现Java和Flex通信
- 网络层协议详解(IP协议、ICMP协议和ARP协议)
- 打开android手机sdcard文件夹目录
- python - 列表常用元素,列表管理
- 热闹的聚会与尴尬的聚会_如何创建成功的聚会小组
- 【随笔】Visual Studio+Unity开发 无法直接启动带有“类库输出类型“的项目 处理方案
- linux内核中断(一)
- 2018年清数大数据产业联盟理事会召开