BSP模型

摘要:
http://www.uml.org.cn/yunjisuan/201212191.aspHama最重要的是BSP(批量同步并行-“大型”同步模型)模型。BSP的概念由Valiant(1990)提出。“块”同步模型是一种异步MIMD-DM模型,它支持消息传递系统、块内的异步并行以及块之间的显式同步。该模型基于一个主协调,所有工人都是同步的(锁定

http://www.uml.org.cn/yunjisuan/201212191.asp

Hama中最关键的就是BSP(Bulk Synchronous Parallel-“大型”同步模型)模型, BSP的概念由Valiant(1990)提出的,“块”同步模型,是一种异步MIMD-DM模型,支持消息传递系统,块内异步并行,块间显式同步,该模型基于一个master协调,所有的worker同步(lock-step)执行, 数据从输入的队列中读取, 该模型的架构如图所示:

BSP模型第1张

另外,BSP并行计算模型可以用 p/s/g/i 4个参数进行描述:

  1. P为处理器的数目(带有存储器)
  2. s为处理器的计算速度
  3. g为每秒本地计算操作的数目/通信网络每秒传送的字节数,称之为选路器吞吐率,视为带宽因子 (time steps/packet)=1/bandwidth
  4. i为全局的同步时间开销,称之为全局同步之间的时间间隔 (Barrier synchronization time)

那么假设有p台处理器同时传送h个字节信息,则g?h就是通信的开销。同步和通信的开销都规格化为处理器的指定条数。

BSP计算模型不仅是一种体系结构模型,也是设计并行程序的一种方法。BSP程序设计准则是 bulk同步 (bulk synchrony),其独特之处在于超步(superstep)概念的引入。一 个BSP程序同时具有水平和垂直两个方面的结构。从垂直上看,一个BSP程序由一系列串行的超步(superstep)组成,如图所示:

BSP模型第2张

这种结构类似于一个串行程序结构。从水平上看, 在一个超步中, 所有的进程并行执行局部计算。一个超步可分为三个阶段 ,如图所示:

BSP模型第3张

1 )本地计算阶段, 每个处理器只对存储本地内存中的数据进行本地计算。

2 )全局通信阶段, 对任何非本地数据进行操作。

3 )栅栏同步阶段, 等待所有通信行为的结束。

BSP模型相对于其他两种模型而言, 具有如下两个方面的优点:

  1. MPI 和 PVM两种并行计算模型,依赖于接收和发送 的操作对。这样通信方式容易导致上层应用程序产生死锁,而BSP并行计算库是一个程序划分为超步(superstep),使得死锁不再发生。
  2. BSP模型由于其本身的特点, 使得对于程序的正确性和时间的复杂性预测成为可能。


1背景及简介编辑

整体同步并行计算模型(Bulk Synchronous Parallel Computing Model,简称BSP模型),又名大同步模型或BSP模型,由哈佛大学Viliant和牛津大学Bill McColl提出。
BSP的创始人是英国著名的计算机科学家Viliant,他希望像冯·诺伊曼体系结构那样,架起计算机程序语言和体系结构间的桥梁,故又称作桥模型(Bridge Model)。该模型使用了三个属性描述:模块(Components)、选路器(Router)和同步路障器执行时间L。
BSP 模型最早作为一 个并行计算领域中软件和硬件之间 的“ 过渡模型” 而提 出的。 它的设计目标是为 现有 和未来 可能出现的各种 并行体系结构提供一个独立于具体体系结构、 具有可扩展并行性能的软件开发的良好的理论模型基础。
一个 BSP 并行计算机由一组通过通讯网络互连的处理器——内存单元组成。它主要有三个部分:
  • 一组具有局 部内存的分布式处理器;
  • 全局数据通讯 网络 ;
  • 支持所有处理单元间全局路障同步的机制。
BSP 模型 自Viliant提出后也经历了一定的发展变化。最初的 BSP 模型山采用随机内存映射和并行宽松度来支持直接的远程内存访问, 并且采用以L为间隔的周期性检测来进行路障同步。 这一“ 跛脚 ” BSP模型被认为是对 PRAM 模型 不切实际的假设的改进。目前, 我们所讨论 的 BSP 模型。, 一般不假设采用随机内存映射来 实现共享内存, 每个超步结束后 由各个处理器执行路障同步原语进行全局同步,来代替周期性的同步检测

2BSP模型编辑

BSP模型BSP模型
BSP模型图需要做以下解释:
1.Processors指的是并行计算进程,它对应到集群中的多个结点,每个结点可以有多个Processor;
2.LocalComputation就是单个Processor的计算,每个Processor都会切分一些结点作计算;
3.Communication指的是Processor之间的通讯。接触的图计算往往需要做些递归或是使用全局变量,在BSP模型中,对图结点的访问分布到了不同的Processor中,并且往往哪怕是关系紧密具有局部聚类特点的结点也未必会分布到同个Processor或同一个集群结点上,所有需要用到的数据都需要通过Processor之间的消息传递来实现同步;
4.BarrierSynchronization又叫障碍同步或栅栏同步。每一次同步也是一个超步的完成和下一个超步的开始;
5.Superstep超步,这是BSP的一次计算迭代,拿图的广度优先遍历来举例,从起始结点每往前步进一层对应一个超步。
6.程序该什么时候结束呢?这个其实是程序自己控制,一个作业可以选出一个Proceessor作为Master,每个Processor每完成一个Superstep都向Master反馈完成情况,Master在N个Superstep之后发现所有Processor都没有计算可做了,便通知所有Processor结束并退出任务[1] 

免责声明:文章转载自《BSP模型》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇绕过超星学习通鼠标移开自动暂停视频的两个方法ES检索分组统计异常: ElasticsearchStatusException [Elasticsearch exception [type=illegal_argument_exception下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

004.UDP--拼接UDP数据包,构造ip头和udp头通信(使用原始套接字)

一.大致流程: 建立一个client端,一个server端,自己构建IP头和UDP头,写入数据(hello,world!)后通过原始套接字(SOCK_RAW)将包发出去。 server端收到数据后,打印UDP数据并发送确认消息(yes),client收到yes后将其打印。 二.其中: client端IP:192.168.11.104 端口:8600 ser...

利用C#线程窗口调试多线程程序

       从网上的资料判断,调试多线程程序似乎就一下3种方法。 1、在日志的某个地方写日志文件。 优点:不会干扰程序的执行,特别是对网络的多线程通信。 缺点:每次都需要打开日志文件以查看进程运行的信息。 2、利用断点进行调试。 优点:直观,可以直接看到运行过程的值 缺点:在多个线程设置断点,可能让程序跳来跳去,还需要额外地分出一部分精力用来理清程序...

JS-OC通信之Cordova简介

Cordova 是一个可以让 JS 与原生代码(包括 Android 的 java,iOS 的 Objective-C 等)互相通信的一个库,并且提供了一系列的插件类,比如 JS 直接操作本地数据库的插件类。 这些插件类都是基于 JS 与 Objective-C 可以互相通信的基础的,这篇文章说说 Cordova 是如何做到 JS 与 Objective-...

《Linux/UNIX系统编程手册》第43章 进程间通信简介

关键词:pipe、fifo、stream socket、datagram socket、message queue、Share Memory、memory mapping、signal、semaphore。mutex、condition variable等等。 本章是后面章节的简要介绍,包括管道和FIFO;System V和POSIX IPC的消息队列、信...

跨平台通信中间件thrift学习【Java版本】(转)

转自:http://neoremind.com/2012/03/%E8%B7%A8%E5%B9%B3%E5%8F%B0%E9%80%9A%E4%BF%A1%E4%B8%AD%E9%97%B4%E4%BB%B6thrift%E5%AD%A6%E4%B9%A0%E3%80%90java%E7%89%88%E6%9C%AC%E3%80%91/ 1. What i...

vue中的父子组件之间的通信--新增、修改弹框

在一个vue页面中有时候内容会很多,为了方便编写查看,可以分为多个子组件,最后在父组件中引入对应的子组件即可。 下面这个是父子组件通信中的一个具体实例:新增、修改弹框。子组件中主要写了关于新增、修改的弹框, 子组件: 1.弹框: <div class="newDocuments"> <div class="newDocuments_...