精华内容
下载资源
问答
  • 并行计算的编程模型试读版
  • 基于GPU的并行计算性能分析模型
  • 并行计算之C3模型ppt

    2016-04-26 09:31:32
    C3模型是并行计算模型中的一,这个ppt是我们总结出来的,对C3模型有详细的讲解
  • 并行计算普适编程模型及系统架构研究_金晶
  • 基于GPU的并行计算性能分析模型.pdf
  • 并行计算模型

    千次阅读 2019-06-21 17:09:42
    GPU也是一个多核心的处理器,但它的并行计算模型与多核的CPU有很大区別。我们有必要了解GPU的并计算模型。 对并行计算模式进行分类是了解CPU和GPU并行计算区别的有效方式。一分类的方法是按照实现并行的层次分,...

           并行计算指的在同一时刻存在多于一个计算任务被执行。由于CPU主频提高的上限,使用多核心处理器进行并行计算早已成为主流。GPU也是一个多核心的处理器,但它的并行计算模型与多核的CPU有很大区別。我们有必要了解GPU的并计算模型。

           对并行计算模式进行分类是了解CPU和GPU并行计算区别的有效方式。一种分类的方法是按照实现并行的层次分,即底层的并行或是高层的并行。主要可以分为以下4种:

    1. 位并行(bit-level parallelism)是一种相对较老的并行方式,它通过增加处理器的字节长度来提高并行率。从4位的处理器到20世纪80年代末的32位的处理器,位并行技术在近二十 间没有再向更高的并行程度发展。目前广泛使用的32位和64位的处理器。
    2. 指令并行(instruction-level parallelism)是20世纪9 0年代中期之前关注的重点。现代CPU都 有一个多级指令流水线。举例来说,一个五级指令流水线可以是:读取、解码、执行、访问内存、写入。如果流水线中的每级都可以同时执行,流水线中的各级就可以同时进行。这样并不顺次地执行不相关的指令起到了指令并行的效果。
    3. 数据并行(data parallelism)指多个不同的数据同时被相同的指令、指令集或者算法处理。这与GPU的并行概念是相同的。当每个线程处理一个数据所需的时间相等时,数据并行处理的速度是用单线程循环语句的速度的N_threads倍;当线程处理不同数据所需的时间不相等时,数据并行处理所需的时间由花费最长计算时间的线程决定。 值得一提的是,这里的数据 并行模型与下面的另一种分类方式中的SIMD模型是完全相同的。
    4. 任务并行(task parallelism)是在多个不同的数据上执行不同的指令、指令集或者算法。这与多核CPU的计算模型是相同的。一个典型的任务并行例如如下:
      begin
          if CPU="a" then
              do task "A"          //任务并行(即MIMD)
          else if CPU="b" then
              do task "B"          //任务并行(即MIMD)
              end if
      end

      在所有的CPU中,当CPU“a”从第一句if语句里读到了true,他就会开始执行任务“A”;当CPU“b”从第二句读到了true,他就会开始执行任务“B”。由于判断if-else语句的速度非常快,跳转的时间可以忽略,因此可以认为任务“A”和任务“B”是同时执行的。需要助兴的是,从外部执行这段代码时,为了给不同的数据分配不同的处理器,采用的是数据并行模型(SIMD),即每个数据都经由这段相同的代码处理,只有在被加注的两行体现了任务并行的效果。任务并行的模型和我们下面要介绍的MIMD模型是完全相同的。

          另一种流行的分类法是从数据流和指令的角度把计算模型分为4类,即费林分类法。

    1. 单指令单数据流(SISD)是非并行计算的模型。典型的例子就是单核的CPU,所有数据都被一个处理器顺次处理,某一时刻只能处理一种指令。
    2. 单指令多数据流(SIMD)是GPU的计算模型,与上述数据并行模型相同。
    3. 多指令单数据流(MISD)指在同一个数据流上执行不同的指令。流水线模型可以被认为一种MISD。
    4. 多指令多数据流(MIMD)是多核CPU的计算模型,与上述的任务并行模型相同。

           在CUDA中,程序在整体上完全不必遵循SIMD的要求,只需要那些必须在GPU上执行的部分局部地符合SIMD模型。值得一提的是,CUDA提出了SIMT(Single Instruction Multiple Treads)模型,按照费林分类法,SIMT也属于SIMD的范畴,因为它也是在多个数据上执行相同的指令,但在程序实现的过程中,SIMT允许由用户来分配线程,而并行计算也是以线程为单位的。CUDA为每个线程指定了标识符(编号)。在已知数量的数据上,SIMT模型可以指定自定义数目的线程,并根据线程标识符设计线程与数据关联的映射法则。

         总结一下SIMD(包括SIMT)的两大特点。也就是说,要使用GPU做并行计算,要保证并行算法满足一下两点:

    1. 每个线程的任务互不相关。
    2. 每个线程执行相同的指令。

         与之对应,具有一下特点的算法能够在GPU上达到最高的执行效率:

    1. 每个数据都需要经过相同的流程来处理。
    2. 数据之间没有相干性。
    3. 数据量庞大。
    展开全文
  • 并行计算计算模型

    千次阅读 2011-12-13 22:08:49
    随着海量数据处理的需求增加,并行计算越来越发挥它巨大的作用。通过采用多线程(多进程)的模式对同一任务进行并行处理,可以大大...那么进行并行计算的一模式就是对数据进行划分,包括:划分输入数据、划分输出数

        随着海量数据处理的需求增加,并行计算越来越发挥它巨大的作用。通过采用多线程(多进程)的模式对同一任务进行并行处理,可以大大节省处理时间,提高处理效率。

    并行算法可以通过数据划分,得到相应的任务即,然后映射到多个进程。接下来让我们一窥究竟。

       
    划分数据
        我们知道算法就是作用于输入数据,得出一组输出数据。那么进行并行计算的一种模式就是对数据进行划分,包括:划分输入数据、划分输出数据、划分中间数据。
    1) 划分输入数据
      例1:计算从从1到n的自然数哪些是素数
      那么将长度为n划分为p个区间,每个任务判定对应自然数区间的素数。

    2) 划分输出数据
      例2:两个矩阵A、B相乘,那么每个矩阵都可以分解为4个矩阵块。

    每个输出块都可以独立算出
       Task1:C11 = A11B11 + A12B21
       Task2:C12 = A11B12 + A12B22
       Task3:C21 = A21B11 + A22B21
       Task4:C22 = A21B12 + A22B22
       那么根据输出数据划分的4个任务都可以独立地计算出,最大并发度为4

    3) 划分中间数据

       例3:还是例2中的问题,我们知道以输出矩阵C的 2x2的划分的最大并发度为4,其实对于每个任务我们可以划分更加细致。


      其中每个任务划分如下:

       Task1:E11 = A11B11

       Task2:E12 = A11B12 
       Task3:E21 = A21B11 
       Task4:E22 = A21B12 
       Task5:F11 = A12B21
       Task6:F12 = A12B22
       Task7:F21 = A22B21
       Task8:F22 = A22B22
       Task9:C11 = E11 + F11
       Task10:C12 = E12 + F12
       Task11:C21 = E21 + F21

       Task12:C22 = E22 + F22

       先计算来个中间矩阵,然后对这2个中间矩阵求和。


    并行算法性能评价
        我们知道一个好的并行算法具有较高的加速比,也就是说具有尽可能大的平均并发度,它是描述并行程序性能一个非常重要的指标。
    一般来说并行算法都可以用一个任务依赖图进行描述,我们可以通过任务依赖图来得到平均并发度
        平均并发度 = 总任务大小 / 关键路径长度

    其中关键路径长度是任务依赖图中任何一对起始节点和终止节点之间的最长有向图路径,是整个并行算法瓶颈所在。

        以平均平均并发度的标准来衡量矩阵相乘中的两种算法:划分输出数据和划分中间数据,分别在(a)和(b)中得到它们的平均依赖图,以及每个任务的大小。


    对于划分输入数据:

         关键路径为n^3/4, 总的任务为n^3,平均并发度为4

    对于划分中间数据:

        关键路径为n^3/8+n^2/4,总的任务为n^3,平均并发度约为8

    由上面的过程可以看出,为了有效的进行并行计算,划分的各个人间最好相互独立,并尽可能减少划分的r任务粒度。

    负载平衡的映射技术
       以例1为例,如果有p个进程,可以用以下三种负载平衡方案:
    1)静态映射方案
       并行算法如例1所示,伪代码如下所示:
       void PrimePrint()
       {
          int id = ThreadID.get();
          int block = n / p;
          for(int j= id * block; j< (id+1) * block; ++j)
            if(isPrime(j))
              print(j); 
       }
           每个进程判定相应的区间的素数。但是这种静态映射方案存在着任务不均衡的问题,我们知道自然数越大判定它是否是素数花费的时间越长,因此p个任务
    严重不均衡。同时在实际的任务中,我们也无法容易的确定每个任务大小以及任务间交互特点,因此采用静态映射方案的缺点是可能存在着负载不均衡,优点是很容易设计和编程。

    2)集中式方案
       可以将所有可执行的任务维护在一个公用的中心数据结构, 以例1为例,伪代码如下图所示
       void PrimePrint()
       {
          i = counter.getAndIncrement();   //原子加1
            if(isPrime(j))
              print(j); 
       }
       也可以在主进程中维护一个任务池,其他集成通过主进程获取一部分可用的任务,当新任务产生的时候会被添加到主进程的任务池中。集中式映射方案负载平衡性比较好,但是一个缺点是可能限制可扩展性,如果使用的进程越来越多,大量访问公用数据结构或主进程就会导致瓶颈。

    3)分布式方案
       采用这种方案中,可执行任务集分布在多个进程中。每个进程在预先设定的任务执行完后可以从其他进程“窃取”任务。这种方案非常灵活,但设计和编程实现难度较大。
    展开全文
  • 并行计算之C3模型

    2016-04-26 09:21:36
  • 基于MapReduce和GPU双重并行计算的云计算模型.pdf
  • 并行计算模型及其算法设计,并行计算模型及其算法设计
  • 并行计算模型有哪些?

    万次阅读 热门讨论 2021-04-22 00:31:44
    并行计算模型通常指从并行算法的设计和分析出发,将各种并行计算机(至少是某一类并行计算机)的基本特征抽象出来,形成一个抽象的计算模型。 从更广的意义上说,并行计算模型为并行计算提供了硬件和软件界面,在该...

    写在前面

    本文隶属于专栏《100个问题搞定大数据理论体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

    本专栏目录结构和文献引用请见100个问题搞定大数据理论体系

    解答

    并行计算模型通常指从并行算法的设计和分析出发,将各种并行计算机(至少是某一类并行计算机)的基本特征抽象出来,形成一个抽象的计算模型。
    
    从更广的意义上说,并行计算模型为并行计算提供了硬件和软件界面,在该界面的约定下,并行系统硬件设计者和软件设计者可以开发对并行性的支持机制,从而提高系统的性能。
    
    常见的并行计算模型有:BSP 模型,PRAM 模型,LogP模型,C3 模型,BDM 模型
    

    在这里插入图片描述

    补充

    为什么需要并行计算模型?

    Spark、 Hadoop是迭代模式,只适合一般的计算,在机器学习等计算量非常大的领域,传统的迭代模型不再适用。并行计算模型就是为了解决一些特定场景下的计算量问题。

    BSP模型

    (Bulk Synchronous Parallel,整体同步并行计算模型)是一种并行计算模型,由英国计算机科学家 Viliant 在20世纪80年代提出。

    Google发布的一篇论文(Pregel:A System for Large-scale Graph Processing)使得这一概念被更多人所认识。

    和 Mapreduce-样, Google并没有开源 Pregel, Apache按 Pregel 的思想提供了类似的框架Hama。

    BSP模型基本原理

    BSP模型是一种异步MIMD-DM模型(DM-Distributed Memory,SM–Shared Memory), 其支持消息传递系统、块内异步并行、块间配式同步。

    该模型基于一个 Master协调,所有的 Worker 同步(lock-step)执行,数据从输入的队列中读取。

    BSP计算模型不仅是一种体系结构模型,也是设计并行程序的一种方法。

    BSP程序的设计准则是整体同步(Bulk Synchrony),其独特之处在于超步(Super Step)概念的引入。

    一个BSP程序同时具有水平和垂直两个方向的结构。从垂直上看,一个BSP程序由一系列串行的超步(Super Step)组成,如图所示,这种结构类似于一个串行程序结构。

    BSP超步

    从水平上看,在一个超步中,所有的进程并行执行局部计算。一个超步可分为三个阶段,如图所示。

    BSP超步三个阶段

    1. 本地计算阶段,每台处理器只对存储在本地内存中的数据进行本地计算。
    2. 全局通信阶段,对任何非本地数据进行操作。
    3. 栅栏同步阶段,等待所有通信行为结束。

    BSP并行计算模型可以用p、s、g、i4个参数进行描述

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

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

    BSP模型的特点

    1. BSP模型将计算划分为一个一个的超步(Super Step),有效避免了死锁。
    2. 它将处理器和路由器分开,路由器仅仅完成点到点的消息传递,不提供组合、复制和广播等功能,这样做既掩盖了具体的互连网络拓扑,又简化了通信协议。
    3. 障碍同步是以硬件实现的全局同步,是可控的粗粒度级的,从而提供了执行紧耦合同步式并行算法的有效方式,而程序员并无过多的负担。
    4. 在分析BSP模型的性能时,假定局部操作可以在一个时间步内完成,而在每一个超步中, 一台处理器最多发送或接收h条消息(称为h-relation)
    5. 为PRAM模型设计的算法都可以采用在每台BSP处理器上模拟一些PRAM处理器的方法来实现。

    BSP模型的评价

    1. 在并行计算时, Viliant试图为软件和硬件之间架起一座类似冯・诺伊曼机的桥梁,BSP模型可以起到这样的作用。正因如此,BSP模型也被称为桥模型。
    2. 一般而言,分布式存储的MIMD模型的可编程性比较差,但在BSP模型中,如果计算和通信可以适当平衡,则它在可编程性方面将呈现出更大的优势。
    3. 在BSP模型中直接实现了一些重要的算法(如矩阵乘、并行前序运算、FFT和排序等),均避免了自动存储管理的额外开销。
    4. BSP模型可以有效地在超立方体网络和光交叉开关互连技术上实现,显示出该模型与特定的技术实现无关,只需路由器具有一定的通信吞吐率。
    5. 在BSP模型中,“超步”的长度必须能够充分地适应任意的h-relation。
    6. 在BSP模型中,在“超步”开始发送的消息,即使网络延迟时间比“超步”的长度短,该消息也只能在下一个“超步”中使用
    7. BSP模型中的全局障碍同步假定是用特殊的硬件支持的,很多并行机中可能并没有相应的硬件。

    BSP模型的实现

    BSP计算框架有很多实现,最有名的是Google的大规模图计算框架Pregel,首次提出将BSP模型应用于图计算。

    Yahoo!贡献的 Apache Giraph专注于送代图计算(如 Pagerank、最短连接等),每个Job就是一个没有 Reducer过程的 Hadoop Job。

    Apache Hama也是ASF社区的 Incubator项目,与 Giraph不同的是,它是一个纯粹的BSP模型的Java实现,并且不仅用于图计算,而且意在提供一个通用的BSP模型的应用框架。

    PRAM模型

    PRAM(Parallel Random Access Machine,随机存取并行机器)模型也称为共享存储的SIMD模型,是一种抽象的并行计算模型,它是从串行的RAM模型直接发展起来的。
    在这种模型中,假定存在一台容量无限大的共享存储器,有有限台或无限台功能相同的处理器,且它们都具有简单的算术运算和逻辑判断功能,在任何时刻各处理器都可以通过共享存储单元相互交互数据。

    PRAM模型的优点

    1. PRAM模型特别适合并行算法的表达、分析和比较,使用简单,很多关于并行计算机的底层细节,如处理器间通信、存储系统管理和进程同步等,都被隐含在该模型中;
    2. 易于设计算法和稍加修改便可以运行在不同的并行计算机系统上;根据需要,可以在PRAM模型中加入一些诸如同步和通信等需要考虑的内容。

    PRAM模型的缺点

    1. 模型中使用了一台全局共享存储器,且局存容量较小,不足以描述分布主存多处理器的性能瓶颈,而且共享单一存储器的假定,显然不适合分布存储结构的MIMD机器。
    2. PRAM模型是同步的,这就意味着所有的指令都按照锁步( Clock Step)的方式操作。用户虽然感觉不到同步的存在,但同步的存在的确很耗费时间,而且不能反映现实中很多系统的异步性。
    3. PRAM模型假设每台处理器可在单位时间内访问共享存储器的任一单元,因此要求处理器间通信无延迟、无限带宽和无开销。假定每台处理器均可以在单位时间内访问任何存储单元而略去了实际存在的、合理的细节,如资源竞争和有限带宽,这是不现实的。
    4. 未能描述多线程技术和流水线预取技术,而这两种技术又是当今并行体系结构应用最普遍的技术。

    LogP模型

    LogP模型是由Culler(1993)提出的,是一种分布存储的、点到点通信的多处理器模型。其中通信由一组参数描述,实行隐式同步。

    LogP模型的通信网络由4个主要参数来描述

    1. L(Latency):表示源处理器与目的处理器进行消息(一个或几个字)通信所需的等待或延退时间的上限,表示网络中消息的延迟。
    2. o(overhead):表示处理器准备发送或接收每条消息的时间开销(包括操作系统核心开销和网络软件开销),在这段时间内处理器不能执行其他操作。
    3. g(gap):表示一台处理器连续两次发送或接收消息时的最小时间间隔,其倒数即微处理器的通信带宽。
    4. P(Processor):处理器/存储器模块个数

    LogP模型的特点

    1. 抓住了网络与处理器之间的性能瓶颈。g反映了通信带宽,单位时间内最多有Lg个消息能进行处理器间传送。
    2. 处理器间异步工作,并通过处理器间的消息传送来完成同步。
    3. 对多线程技术有一定的反映。每台物理处理器可以模拟多台虚拟处理器(VP),当某台VP 有访问请求时,计算不会终止,但VP的数目受限于通信带宽和上下文交换的开销。VP受限于网络容量,最多有Lg台VP。
    4. 消息延迟不确定,但延迟不大于L。消息经历的等待时间是不可预测的,但在没有阻塞的情况下最大不超过L。
    5. LogP模型鼓励编程人员采用一些好的策略,如作业分配、计算与通信重叠及平衡的通信模式等。
    6. 可以预估算法的实际运行时间。

    LogP模型的不足

    1. 对网络中的通信模式描述得不够深入,如对重发消息可能占满带宽、中间路由器缓存饱和等未加描述
    2. LogP模型主要适用于消息传递算法设计,对于共享存储模式,则简单地认为异地读操作相当于两次消息传递,未考虑流水线预取技术、 Cache引起的数据不一致性及 Cache命中率对计算的影响。
    3. 未考虑多线程技术的上下文开销。
    4. LogP模型假设用点对点消息路由器进行通信,这增加了编程者考虑路由器上相关通信操作的负担。

    C3模型

    C3模型假定处理器不能同时发送和接收消息,它对超步的性能分析分为两部分:

    1. 计算单元(CU),依赖于本地计算量;
    2. 通信单元(COU),依赖于处理器发送和接收数据的多少、消息的延迟及通信引起的拥挤量。

    该模型考虑了两种路由(存储转发路由和虫蚀寻径路由)和两种发送接收原语(阻塞和无阻塞)对COU的影响

    C3模型的特点

    1. 用CI和Cp来度量网络的拥挤对算法性能的影响。
    2. 考虑了不同路由和不同发送或接收原语对通信的影响。
    3. 不需要用户指定调度细节,就可以评估超步的时间复杂性。
    4. 类似于H-PRAM模型的层次结构,C3模型给编程者提供了K级路由算法的思路,即系统被分为K级子系统,各级子系统的操作相互独立,用超步代替了H-PRAM中的 Sub PRAM进行分割。

    C3模型的不足

    1. C度量的前提为同一通信对中的两台处理器要分別位于对分网络的不同子网络内。
    2. 该模型假设网络带宽等于处理器带宽,从而影响了正确描述可扩展系统。
    3. 在K级算法中,处理器间的顺序可以有多种排列,但C3模型不能区分不同排列的难易程度。

    BDM模型

    1996年,J.F.JaJa等人提出了一种块分布存储模型(Block Distributed Model,BDM),它是共享存储编程模式与基于消息传递的分布存储系统之间的桥梁模型。

    其主要有4个参数。

    1. P:处理器个数。
    2. t:处理器从发出访问请求到得到远程数据的最大延迟时间,包括准备请求时间、请求包在网络中路由的时间、目的处理器接收请求的时间,以及将包中M个连续字返回给原处理器的时间。
    3. M:局部存储器中连续的M个字。
    4. 处理器发送数据到网络或从网络接收数据的时间。

    BDM模型的特点

    1. 用M反映出空间局部性特点,提供了一种评价共享主存算法的性能方法,度量了因远程访问引起的处理器间的通信。
    2. BDM认可流水线技术。某台处理器的K次预取所需的时间为+KMo(否则为K(r+Mo) 可编程性好。
    3. 考虑了共享主存中的存储竞争问题。
    4. 可以用来分析网络路由情况。

    BDM模型的不足

    1. 认为初始数据置于内部存储中,对于共享主存程序的编程者来说,需要额外增加数据移动操作
    2. 未考虑网络中影响延迟的因素,如处理器的本地性、网络重拥挤等。
    3. 未考虑系统开销。
    展开全文
  • 并行计算中的BSP模型

    千次阅读 2016-04-21 14:41:06
    所谓计算模型实际上就是硬件和软件之间的一桥梁,我们可以借助它来设计分析算法,在其上髙级语言能被有效地编译且能够用硬件来实现。在串行计算时,冯•诺依曼机就是一个理想的串行计算模型。BSP(Bulk ...

    计算模型

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

    不幸的是,在并行计算时,尚未有一个类似于冯•诺依曼机的真正通用的并行计算模型。现在流行的计算模型要么过于简单、抽象(如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 是进程 i processi)的局部计算函数, 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

    展开全文
  • 并行计算体系结构的概述。并行计算机访存模型的简介、分类及主要特点的介绍。
  • PRAM(Parallel Random Access Machine,随机存取并行机器)模型,也称为共享存储的SIMD模型,是一抽象的并行计算模型,它是从串行的RAM模型直接发展起来的。在这种模型中,假定存在一个容量无限大的共
  • 在并行机上求解问题首先要写出求解问题的并行算法并行算法是在并行计算模型上设计出来的而并行计算模型是从不同的并行计算机体系结构模型中抽象出来的然后根据并行算法进行并行程序设计;为了达到将问题的并行求解...
  • 并行计算框架MapReduce编程模型

    千次阅读 2019-01-26 18:20:42
    MapReduce计算框架是Google提出的一种并行计算框架,是Google云计算模型MapReduce的java开源实现,用于大规模数据集(通常1TB级以上)的并行计算。但其实,MR不仅是一分布式的运算技术,也是简化的分布式编程模式,...
  • 多核处理器并行计算模型研究.pdf
  • 文章主要介绍了一基于并行计算机架构的OS 模型,其中主要包括并行计算机架构模式、并行计算机OS模型并行计算机OS的QOS模型等几个方面。并行计算机的性能优越,数据计算和数据处理能力强大,在国民经济社会实践中...
  • 中科大并行计算讲义并行计算机系统和结构模型.ppt
  • 写在前面的话:文章内容来源于但不限于网络、书籍、个人...众所周知,卷积神经网络模型是支持并行计算的,而且GPU并行计算与SGD(Stochastic Gradient Descent,随机梯度下降)训练的数据并行特性支持的尤其好,这...
  • MapReduce是Google提出的分布式并行计算编程模型,用于大规模数据的并行处理。Ma-pReduce模型受函数式编程语言的启发,将大规模数据处理作业拆分成若干个可独立运行的Map任务,分配到不同的机器上去执行,生成某种格式的...
  • 多核处理器机群Memory层次化并行计算模型研究,多核处理器机群Memory层次化并行计算模型研究
  • 提出一统一的并行计算模型LogGP-U(Unified LogGP),它是一个基于LogGP的并行计算模型,给出在几并行程序设计模式下对应的修正形式。使用这个模型既可以准确度量一般情况下并行程序的时间复杂性,也可以度量...
  • 研究了CMAQ大气模型在64位Linux操作系统上不同CPU核心数目并行计算模拟耗时以及结果的差异情况。研究结果表明,并行计算能大幅缩短CMAQ模拟耗时,以16个CPU核心并行处理为性价比最佳值;此时连续模拟中国区域37天...
  • 集装箱码头物流的并行计算模型
  • 64位Linux并行计算大气模型效率优化研究.pdf
  • spark 并行计算模型

    万次阅读 2012-12-19 23:04:32
    Spark Spark是一个小巧玲珑的项目,由...Spark要解决的问题是,在当前的分布式计算框架中不能有效处理的两类问题:iterative(迭代计算)和 interactive(交互式)计算。 目前最流行的Hadoop 系统实现了DAG(有向无环
  • 并行图论算法, 介绍并行计算机模型下的图论算法

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 183,991
精华内容 73,596
关键字:

并行计算的四种模型