多核和多CPU编程——并行计算模型

一、几种并发模型

一般来说,模型是抽象出来具有某些普遍特征的单元。它可能是一个(组)公式,也可能是一个算法等等。目前比较常见的几个模型有如下几个:
1、PRAM
PRAM(Parallel Random Access Machine,随机存取并行机器)模型是一种抽象的并行计算模型,即共享存储的SIMD模型。其假定有一个无限容量大的共享存储器,具有N个(N可达无限)功能、架构相同的处理器,相关处理器随时可以通过共享存储单元相互交互数据。根据处理器对共享存储单元同时读、同时写的限制,PRAM模型可以分为下面几种:
a、互斥读和互斥写(Exclusive-Read and Exclusive-Write)的PRAM模型,简称为EREW
b、并发读但互斥写(Concurrent-Read and Exclusive-Write)的PRAM模型,简称为CREW
c、互斥读和并发写(Exclusive-Read and Concurrent-Write)的PRAM模型,简称为ERCW
d、并发读和并发写(Concurrent-Read and Concurrent-Write)的PRAM模型,简称为CRCW
但同时写是有困难的,因此对CRCW模型进一步描述:
a、所有处理器并发写相同的数,即公共(common)的PRAM-CRCW(CPRAM-CRCW)
b、按优先级的处理器写,即优先(Priority)的PRAM-CRCW(PPRAM-CRCW)
c、任意处理器自由写,即任意(Arbitrary)的PRAM-CRCW(APRAM-CRCW)
d、向存储器中写入所有处理器写的数的和,即求和(Sum)的PRAM-CRCE,(SPRAM-CRCW)

2、LogP
LogP是面向高性能并行计算的模型,1993年D.Culer等人提出了点对点通信的多计算机模型,即充分利用分布式网络存储、多处理理器网络通信机制等,在屏蔽具体的网络结构和算法通过消息机制来实现的一种模型。
LogP模型是一种分布存储的、点到点通信的多处理机模型,网络通信抽象为4个主要参数:
a、L(Latency) 最大通信延迟,即源模块到目的模块传递消息(一个或几个字)通信所需要的时间上限
b、o(overhead)通信开销,即处理机发送或接收消息的时间长度,在这段时间里处理不能执行其它操作
c、g(gap)通信间隔,即处理机连续发送或接收消息时的最小时间间隔,此值的倒数即通信带宽
d、P(Processor)处理机/存储器模块个数,其每个周期即为处理器的单位运行时间
假设每个周期完成一次操作,L,o和g都可以表示成处理器周期的整数倍

3、BSP
BSP(Bulk Synchronous Parallel)模型最早由Leslie和Valiant 在 1990 年提出,它是一种异步MIMD-DM模型(DM: distributed memory,SM: shared memory),BSP模型支持消息传递系统,块内异步并行,块间显式同步,其基于master/worker同步(lock-step)执行, 数据从输入的队列中读取。BSP并行计算模型由下面4个参数描述:
P:处理器的数量(带有存储器)
s:处理器的运行速度
g:每秒本地计算操作的数目/通信网络每秒传送的字节数,即选路器吞吐率,视为带宽因子 (time steps/packet)=1/bandwidth
L:路障同步器,全局的同步时间开销,即全局同步之间的时间间隔 (Barrier synchronization time)
BSP计算模型既是体系结构模型也是并行设计的方法。整体上是一个同步设计,同时具有水平和垂直两个方向的结构。并且,其引入了超步(superstep)概念,它和LogP在效率是等效的。

二、特点和简要分析

1、PRAM
PRAM模型适合于并行算法的表达、分析和比较,使用简单,隐藏了很多关于并行计算机的底层细节(处理器间通信、存储系统管理和进程同步),略加设计和修改就可以应用在不同的并行计算平台上。此模型中,可灵活的按实际情况增加进程通信及同步相关设计。
其也有如下不足:
a、此模型使用一个存储容量较小的全局共享存储器,不适合于分布存储结构的MIMD机器
b、此模型是同步的,即通过同步来实现的异步,不能反映现实中很多系统的异步性
c、此模型假定要求太高(如对处理机间通信无延迟、无限带宽和无开销)这个不现实
d、此模型假设处理机有限或无限,对并行任务的增大无开销
e、引模型对锁线程技术和流水线预取技术未能描述,略显滞后

2、LogP
LogP模型相对PRAM模型来说更接近实际,对通信和信息交换方面的开销都进行了处理,特别是对多线程的应用更是相对合理。
a、正如上面所说,对网络IO和处理机之间的瓶颈进行了说明。抓住了网络与处理机之间的性能瓶颈。真正通过异步操作实现处理机间的消息通信
b、较好的适应了多线程和虚拟处理机(VP)技术
c、消息延迟不确定,但延迟上限不超过L
d、LogP模型可以更适用一些好的策略,如作业分配,计算与通信平等以及平衡的通信模式等
e、算法实际运行时间可估算。
此模型的不足之处在于对网络通信模式描述模糊,对流水线和缓存等没有考虑,同时多线程的操作带来Context切换的开销,编程的复杂度上升且需要对P2P路由器通信有了解。

3、BSP
a、 BSP模型将计算划分为一个一个的超步(superstep),有效避免死锁
b、 它将处理器和路由器分开,强调了计算任务和通信任务的分开,而路由器仅仅完成点到点的消息传递,不提供组合、复制和广播等功能,这样做既掩盖具体的互连网络拓扑,又简化了通信协议
c、 采用障碍同步的方式以硬件实现的全局同步是在可控的粗粒度级,从而提供了执行紧耦合同步式并行算法的有效方式,而程序员并无过分的负担(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)
d、 在分析BSP模型的性能时,假定局部操作可以在一个时间步内完成,而在每一个超级步中,一个处理器至多发送或接收h条消息。假定s是传输建立时间,所以传送h条消息的时间为gh+s,如果 ,则L至少应该大于等于gh。很清楚,硬件可以将L设置尽量小,而软件可以设置L的上限。在实际使用中,g可以定义为每秒处理器所能完成的局部计算数目与每秒路由器所能传输的数据量之比。如果能够合适的平衡计算和通信,则BSP模型在可编程性方面具有主要的优点,而直接在BSP模型上执行算法,这个优点将随着g的增加而更加明显
e、提供对PRAM模型所设计的算法,可以模拟一些PRAM的方法实现

三、总结

不同串行化的模型结构只有冯诺伊曼计算模型,并行计算的设计其实不少,除了上面的常见的,还有SEDA阶段式事件驱动架构和C^3模型等。但是其实哪种优劣还是得看应用场景和具体情况。倒是BSP的应用中,有Google的Pregel和大数据分析的Spark,更为程序员们知道。目标要宏大,但实现要聚焦,这才是学习的目的和行动的方式。
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值