并行计算中的BSP模型

来源:互联网 发布:java 编码格式 编辑:程序博客网 时间:2024/05/17 15:40

计算模型

所谓计算模型实际上就是硬件和软件之间的一种桥梁,我们可以借助它来设计分析算法,在其上髙级语言能被有效地编译且能够用硬件来实现。在串行计算时,冯•诺依曼机就是一个理想的串行计算模型,在此模型上硬件设计者可设计多种多样的冯•诺依曼机而无须考虑那些将要被执行的软件;另一方面,软件工程师也能够编写各种可在此模型上有效执行的程序而无须考虑所使用的硬件。

不幸的是,在并行计算时,尚未有一个类似于冯•诺依曼机的真正通用的并行计算模型。现在流行的计算模型要么过于简单、抽象(如PRAM);要么过于专用(如互连网络模型和VLSI计算模型)。因而急需发展一种更为实用、能够较真实反映现代并行机性能的并行计算模型。我们在之前的文章中已经讨论过PRAM模型。读者可以参考我的博客文章《PRAM模型与Amdahl定律》

简而言之,PRAM模型,即并行随机存取机器,也称之为共享存储的SIMD模型,是一种抽象的并行计算模型。在这种模型中,假定存在着一个容量无限大的共享存储器;同时存在有限(或无限)个功能相同的处理器,且其均具有简单的算术运算和逻辑判断功能;在任何时刻各处理器均可通过共享存储单元相互交换数据。根据处理器对共享存储单元是否可以同时读、同时写的限制, PRAM模型又可分为:EREW、CREW、CRCW等几种类型。

下面本文将介绍另外一种并行计算模型——BSP模型


BSP模型

BSP(Bulk Synchronous Parallel)模型,字面的含义是 “大”同步模型,它最早由Leslie和Valiant 在 1990 年提出。作为计算机语言和体系结构之间的桥梁,BSP使用下面三个参数(或属性)来描述的分布存储的多处理器模型:

  1. 处理器/储器模块: A BSP abstract machine consists of a collection of p abstract processors, each with local memory, connected by an interconnection network.
  2. 执行以时间间隔L为周期的所谓路障同步器:the time to do a barrier synchronization.
  3. 施行处理器/储器模块对之间点到点传递消息的选路器: the rate at which continuous randomly addressed data can be delivered

所以BSP模型将并行机的特性抽象为三个定量参数pgL,分别对应于处理器数、选路器吞吐率(亦称带宽因子)、全局同步之间的时间间隔。

BSP模型中的计算行为:在BSP模型中,计算过程是由一系列用全局同步分开的周期为L的超级步(supersteps)所组成的。A (abstract) program consists of p processes or threads distributed over n processors and is divided into supersteps。在各superstep中,每个处理器均执行局部计算,并通过选路器接收和发送消息;然后做一全局检查,以确定该超级步是否已由所有的处理器完成:若是,则前进到下一超级步,否则下一个L周期被分配给未曾完成的超级步。
每个superstep都包含:

  • a computation where each processor (executing the threads assigned to it) uses only locally held values;
  • a global message transmission from each processor to any subset of the others;
  • a barrier synchronization.

在superstep结束时,the transmitted messages become available as
local data for the next superstep。下图是BSP里一个superstep中的计算模式示意图:



BSP模型的性质和特点:BSP模型是个分布存储的MIMD计算模型,其特点是:

  • 它将处理器和选路器分开,强调了计算任务和通信任务的分开,而选路器仅施行点到点的消息传递,不提供组合、复制或广播等功能,这样做既掩盖了具体的互连网络拓扑,又简化了通信协议; With the program divided into supersteps it is easier to provide performance guarantees than with unregulated message-passing systems. Because communication all happens together at the end of the computation phase of the superstep, it is possible to perform automatic optimisation of the communications pattern. This is particularly important on machines where the start-up cost of a communication is high: if during a superstep processor i sends two messages to processor j , then it will often be quicker to bundle the messages together and send the bundle from
    i to j than it would be to send each message separately. Similarly, the communication pattern can be reshuffled to avoid network congestion, and intelligent routing techniques can be used to detect and avoid hot spots。
  • 釆用路障方式的以硬件实现的全局步是在可控的粗粒度级,从而提供了执行紧耦合同步式并行算法的有效方式,而编程开发人员并无过分的负担,BSP model eliminates the need for programmers to manage memory, assign communication and perform low-level synchronization. Threads of the program are assigned (typically in a randomized way) by the machine to the processors.;
  • 在分析BSP模型的性能时,假定局部操作可在一个时间步内完成,而在每一个superstep中,一个处理器至多发送或接收 h 条消息(称为h-relation)。 假定 s 是传输建立时间,所以传送 h 条消息的时间为 gh+s,如果gh2s,则 L 至 少应 gh。很清楚,硬件可将L设置尽量小(例如使用流水线或宽的通信带宽使 g尽量小),而软件可以设置L之上限(因为L愈大,并行粒度愈大)。在实际使用中,g可定义为每秒处理器所能完成的局部计算数目与每秒选路器所能传输的数据量之比。如果能合适地平衡计算和通信,则BSP模型在可编程性方面具有主要的优点,它可直接在BSP模型上执行算法(不是自动地编译它们),此优点将随着g 的增加而更加明显;
  • 为PRAM模型所设计的算法,均可釆用在每个BSP处理器上模拟一些PRAM处理器的方法实现之。This leads to optimal efficiency (i.e., within a constant factor performance of the PRAM model) provided the programmer writes programs with sufficient parallel slackness。理论分析证明,这种模拟在常数因子范围内是最佳的,只要并行宽松度(Parallel Slackness),即每个BSP处理器所能模拟的PRAM处理器的数目足够大(When programs written for p threads are run on n processors and p >> n (e.g. p = n log n) then there is some parallel slackness)。在并发情况下,多个处理器同时访问分布式的存储器会引起一些问题,但使用散列方法可使程序均匀地访问分布式存储器。在 PRAM-EREW情况下,如果所选用的散列函数足够有效,则L至少是对数的,于是模拟可达最佳,这是因为我们欲在拥有p个物理处理器的BSP模型上,模拟 vplogp 个虚拟处理器,可将v/plogp 个虚拟处理器分配给每个物理处理器。在 一个supersetp内,v 次存取请求可均匀摊开,每个处理器大约 v/p 次,因此机器执行本次超级步的最佳时间为 O(v/p),且概率是高的。同祥,在v个处理器的 PRAM-CRCW模型中,能够在 p 个处理器(如果 v=p1+ϵ,ϵ>0 )和Llogp 的BSP模型上用 O(v/p) 的时间也可达到最佳模拟。

BSP成本分析(Computational analysis):Consider a BSP program consisting of S supersteps. Then, the execution time for superstep i is

Tsuper=maxprocesseswi+maxghi+L

其中,wi是进程iprocessi)的局部计算函数,hi是进程i发送或接收的最大数据包,g是带宽的倒数(时间步/数据包),L是路障同步时间(注意我们不考虑I/O的传送时间)。所以,在BSP计算中,如果使用S个超级步,则总运行时间为:
TBSP=i=0S1wi+gi=0S1hi+SL

Call wi and W the work depths of the superstep and the program, respectively。其中,
W=i=0S1wi


参考文献

【1】陈国良,并行计算——结构 • 算法 • 编程,高等教育出版社,2003
【2】陈国良,并行算法的设计与分析(第3版),高等教育出版社,2009

7 0