计算模型
计算模型是硬件和软件之间的一种桥梁,如冯诺依曼是理想的串行计算模型,BSP、PRAM是并行计算模型。
BSP 模型
什么是BSP
Bulk Synchronous Parallelism Model,块同步并行模型,或桥接模型、整体同步并行,由哈佛大学的Leslie Valiant(2010年图灵奖得主)提出。
从计算方式看,BSP是一种基于超级步和全局栅障同步的并行模型。
整个计算过程是由一系列使用全局同步分开的周期为L的计算部分组成的,这些计算部分是超级步,Super Step。在各个超级步中,整个系统中的每个处理器负责完成局部的计算任务,并利用选路器进行接受/发送消息,使消息传输到正确的工作节点以作为下一步的输入数据,此后系统进行一次全局检查,以保证该超级步的执行已在所有的处理器上全部结束。
在一个超级步中,每个进程的执行有3个操作:
● 本地计算操作
● 进程通信操作
● 栅障同步操作
从存储方式看,BSP是一个分布存储的MIMD计算模型。BSP将计算任务和通信任务分开,通信部分仅仅完成了点对点的消息传输操作,而不提供广播、消息复用等传播方式功能。
从调度方式看,BSP基于一个master协调,所哟的worker同步执行,数据从输入的队列中读取。
BSP的思路
BSP的设计思路是,将同步性划分粒度,指令级同步、成对同步、块同步(把程序划分为超步)。独特之处是引入超步概念
BSP构成
BSP模型作为计算机语言和体系结构之间的桥梁,并以下述三个参数描述的分布存储的多计算机模型:
● 处理器/存储器模块,模型中用p表示处理器/存储器模块数目
● 处理器/存储器模块之间点对点传递消息的路由器,模型中用g表示路由器吞吐率(也称为带宽因子)
● 执行时间间隔L为周期的障碍同步的障碍同步器,其中L表示全局同步之间的时间间隔
BSP计算机由部件/component(例如处理器)、网络、同步设施(允许同步的硬件设施)组成。
BSP算法由并发计算、通信、屏障同步组成。
● 并发计算:所有参与处理器可以进行本地计算,就是说每个处理器只能利用在这个处理器的快速本地内存内存储的数值。计算与所有其他计算异步发生但可以经由通信搭接(overlap)。
● 通信:处理器相互之间交换数据来促成远程数据存储能力。
● 屏障同步:当一个处理器到达一个屏障点的时候,它一直等待到所有其他处理器也到达同样这个屏障。
计算和通信活动不必须在时间上依次安排。通信典型的采用单边的“put”和“get”直接远程内存访问(DRMA)调用的形式,而不用成对的双边“send”和“receive”消息传递调用。
BSP模型的单边通信要求屏障同步。屏障是潜在的有代价的,但是避免了死锁或活锁的可能性,因为不能建立循环的数据依赖。
局限
BSP模型中多进程并行工作的方式使其能够对流式计算中源源不断流入的数据进行持续和多级的处理,但由于BSP模型在设计中存在栅障的概念(如图 1-1所示),此时若数据处理所花费的时间不同,则在整个系统中执行较快的进程会由于较慢的进程未执行结束而进行不必要的等待,产生不必要的等待延时T。对于要求低延时的流式计算系统来说,该等待延时将影响流式计算系统的性能,因此BSP模型并不能满足流式计算的应用需求。
Multi-BSP 模型
Multi-BSP是BSP (Bulk Synchronous Parallel)模型的扩展版本。主要区别如下:
- 层次结构:
- Multi-BSP是一个分层模型,具有任意数量的层次。
- BSP是一个单层模型。
- 参数:
- Multi-BSP在每一层都有4个参数:(pi, gi, Li, mi)
pi: 子组件数量
gi: 通信带宽
Li: 同步成本
mi: 内存/缓存大小 - BSP只有3个参数:(p, g, L)
p: 处理器数量
g: 通信带宽
L: 同步成本
- Multi-BSP在每一层都有4个参数:(pi, gi, Li, mi)
- 内存参数:
- Multi-BSP在每一层都包含内存大小(mi)作为参数。
- BSP没有明确的内存大小参数。
- 灵活性:
- Multi-BSP可以模拟多级内存和缓存系统,适用于单芯片和多芯片架构。
- BSP主要针对单级并行系统。
- 通信模式:
- 在Multi-BSP中,同级组件之间的通信需要通过更高级别的内存进行模拟。
- 在BSP中,允许同级单元之间直接水平通信。
- 适用范围:
- Multi-BSP旨在捕捉多核架构的基本资源参数。
- BSP更适合传统的并行计算系统。
参考
BSP模型的相关讲解-CSDN博客
整体同步并行 - 维基百科,自由的百科全书 (wikipedia.org)
A bridging model for parallel computation | Communications of the ACM
BSP模型 - 白乔 - 博客园 (cnblogs.com)
Hadoop Hama项目–BSP模型的实现 (uml.org.cn)
并行计算 (pop0726.github.io)
Bulk Synchronous Parallel and Pregel (pk.org)
The Bulk Synchronous Parallel Model - YouTube
A bridging model for multi-core computing - ScienceDirect