PRAM 模型

并行计算中的并行随机存取器(PRAM,parallel random access machine)模型是并行架构体系的一种理想化模型,最初由 Fortune 和 Wyllie 在 1978 提出。

PRAM 模型 可以描述为:包含有 p 个同样的RAM处理器,每个都拥有自己的私有内存,并共享一块很大的共有内存。在一个单位时间内,每个处理器能够读取一个全局或局部的内存地址,执行一个单独的RAM操作,以及写入一个全局或局部的内存地址。

PRAM(Parallel Random Access Machine)模型是单指令流多数据流(SIMD)并行机中的一种具有共享存储的模型。它假设有一个无限大容量的共享存储器,并且有多个功能相同的处理器,在任意时刻处理器可以访问共享存储单元。缺点是不现实,首先容量无限大的存储器是不存在的,而且由于各方面的原因,全局访存通常要比预想的慢。其次,他忽略了通信带宽的影响。 优点是结构简单,便于进行理论分析。

PRAM 模型 is very successful as a basis for parallel algorithm design. The model ignores algorithmic complexity of machine connectivity and communication contention, data locality, synchronization, and reliability.

In particular the PRAM model is generally classified into four sub-categories which relate to the use of shared memory:

  • EREW : exclusive read, exclusive write
  • CREW : concurrent read, exclusive write
  • CRCW : concurrent read, concurrent write
  • ERCW : exclusive read, concurrent write (shown only for completeness)

An EREW PRAM does not allow simultaneous access to a memory location for read or for write operations.

A CREW PRAM allows simultaneous access for reading but not for writing.

A CRCW PRAM allows simultaneous access for reading and for writing.

并发的写操作,需要一个更进一步的划分来定义冲突处理的方式:

COMMON:一个值可以被写入,当且仅当所有(产生冲突的)处理器都写相同的值(otherwise an error condition may be flagged);
ARBITRARY:在众多产生冲突的处理中,随机选择一个来使其完成写操作(当然这要求算法在无论哪个处理器被选中时都不会出问题);
PRIORITY:在产生冲突的各个处理器中具有最小标识符(lowest identifier)的那个处理器(也就是具有最高优先级的那个)可以执行写操作;
COMBINING:A function of the conflicting values is written; this model requires defining the combining operation.

不同PRAM模型的相互模拟——在EREW PRAM上模拟PRIORITY PRAM CRCW

一条在PRIORITY PRAM CRCW模型(设模型上有n个处理器)上的指令,可以在EREW模型上(同样具有有n个处理器)用O(log n)的时间实现之。(假设we can sort n numbers on an EREW PRAM with n processors in O(log n) time)

证明:令 Q1, Q2, ..., Qn 是PRIORITY PRAM CRCW模型中的处理器,其中 Qk 要读取Mk单元中的内容(或者要向该地址写入内容)。现在指定 P1, P2, ..., Pn 是EREW PRAM 模型上的n个模拟处理器。也就是说我们用 Pk 来尝试模拟处理器Qk ,1<=k<=n,EREW PRAM中的全局存储单元a1, a2, ..., an保留用于特殊用途(在某些资料上通常用一个数组a[n]来指代这n个存储单元,即用数组中的一个元素a[k]来代表ak)。

for k = 1, ..., n,并行地执行如下步骤:

在EREW PRAM,Pk 来设置二元组(Mk, k),并将其存于单元ak,即ak←(Mk, k)。

(*一些资料上的其他说法:

If Qk wants to access Mk processor Pk writes pair (Mk ,k) into a[k].

If Qk does not wants to access any PRIORITY cell, processor Pk writes pair (0,k) int a[k].)

(注意这一步在EREW PRAM上是一个合法的操作步骤,而且执行时间为O(1))

现在用EREW PRAM上所有的处理器(共n个)对 a1, a2, ..., an中存储的n个二元组(Mk, k)进行排序(先根据memory location Mk再根据k来排序),其中1<=k<=n,这一步根据我们最开始给出的假设需要花费的时间为O(log n)。

for k = 1, ..., n,并行地执行如下步骤:

(*一些资料上的其他说法:每一个Pk appends to cell a[k] a flag f:

f = 1,如果the first component of a[k] ≠ the first component  of a[k-1]

or the first component of a[k] ≠ 0

f = 0,otherwise)

现在二元组(或者三元组中的前两个数)(Mk ,k) 就可以被组织成一些块,使得每块中的二元组都具有相同的第一个分量(Mk,即全局存储单元的地址);每块的代表(也即是排在块组中最前面的一个)具有最小的第二分量,它可以在O(1)时间内选出。(本小节最后给出了更便于理解的示例)这样,在EREW PRAM上,处理器 Pk 就可以在O(1)的时间内并行地对由“三元组”所指定的单元进行读或者写操作。

PRIORITY WRITE: 每一个Pk读取三元组(Mk, k, f) from cell a[k] and writes into Mk iff f = 1.

最后是一个例子:你可以看到经过排序后,二元组被分成了四块,即[(0, 7)]、[(1,4)]、[(2,1), (2, 3), (2, 6)]、[(4,2), (4,5)]。其中每块的第一个分量都相同,它是要读取或者要写入的全局地址,第二分量则是优先级排序,排在最前的也是该块的代表,它具有最高优先级。

工作量与加速比

现在,设S为一个待处理的问题,其输入的大小为n,S能够在PRAM上使用p(n)个处理器,用一个并行算法在t(n)个步骤内求解。

那么被这个并行算法所处理的工作量就用w(n)=t(n)p(n)来表示。任何PRAM算法所执行的工作量w(n)都可以转化成一个在w(n)时间内执行的串行算法,只要用一个处理器模拟执行PRAM中的所有并行步骤即可。

直觉上来说,当程序规定时,一个并行的执行通常意味着更短的耗时,这一点可以用加速因子(speedup factor)来表示:

其中,p是处理器的数量,ts是串行执行的时间,tp是并行执行的时间。在实际中,时间通常是指挂钟时间。但是对于PRAM算法来说,我们所说的时间通常是指算法执行步骤的多少。

阿姆达尔定律(Amdahl’s Law)

阿姆达尔定律(Amdahl’s Law)是一条用以阐释并行计算所能达到之基本极限的法则,it is formulated by 美国计算机科学家 Gene Amdahl in 1967。或者说,Amdahl’s Law是一种给定问题规模的前提下,用以预测(或估计)最大可达的加速因子(或称加速比)的方法。

如果 ts 是串行执行的时间,f 是其中不能被并行化的部分所占之比例,那么当处理器数量为p时,最大加速比(the maximum speedup)就是

注意,下面这种(文献2中所采用的)表述与上面这种是一致的(只要将分子分母同时除以p即可):

Amdahl’s Law给出了在一个系统中,基于可并行化和串行化的组件各自所占之比重,程序通过获得额外的计算机资源,理论上能够获得的最大加速。

推荐阅读与参考文献:

【1】陈国良,并行算法的设计与分析(第3版),高等教育出版社,2009

【2】Dr Aaron Harwood,The University of Melbourne 并行与多核计算课程材料

【3】左飞,代码揭秘:从C/C++的角度探秘计算机系统,电子工业出版社

【4】http://pages.cs.wisc.edu/~tvrdik/2/html/Section2.html#Simulation2

PRAM模型与Amdahl定律相关推荐

  1. 电路 第五版 第一章 电路模型和电路定律

    第一章 电路模型和电路定律 1-1电路和电路模型 1-2电流和电压的参考方向 1-3电功率和能量 1-4电路元件 1-5电阻元件 1-6电压源和电流源 1-7受控电源 1-8基尔霍夫定律

  2. Amdahl定律以及该定律在多核时代的影响

    Amdahl定律 不可并行计算的存在是很重要的,因为它将限制并行化的潜在好处.阿姆达尔定律指明如果一个计算的1/S本质上是顺序的,那么最大的性能改进将受限于因数S.其论证如下,一个并行计算的执行时间T ...

  3. Amdahl定律(阿姆达尔定律)

    Amdahl 定律是计算机系统中的一个重要定律,核心思想是:我们对计算机系统的某一部分加速的时候,该加速部分对系统整体性能的影响取决于该部分的重要性和加速程度.也就是说,比如一个应用程序A,当系统执行 ...

  4. Amdahl定律和Gustafson定律

    本文摘自 葛一鸣 老师的<实战java高并发程序设计>一书.因为觉得写得好就摘下来了 将串行程序改造成并发程序,一般来说可以提高程序的整体性能,但是究竟能提升多少,甚至说究竟是否真的可以提 ...

  5. 如何准确理解Amdahl定律,并讨论计算机系统加速比

    系统加速衡量标准 Amdahl定律 我们对系统的某个部分加速时,其对系统整体性能的影响取决于该部分的重要性和加速程度. 若系统执行某应用程序需要时间为 T o l d T_{old} Told​.假设 ...

  6. 计算机系统结构 之 Amdahl定律

    背景  随着从存储系统的日益复杂,对存储系统的性能分析就显得非常必要.单个存储器的性能由生产厂商在数据手册中说明,那么由多个存储体构成的并行存储系统的性能如何分析,尤其是系统的吞吐率及相应时间就必须借 ...

  7. Amdahl定律(最直观理解)

    Amdahl 定律(也叫阿姆达尔定律)的主要思想是:当我们对系统的某个部分加速时,其对系统整体性能的影响取决于该部分的重要性和加速程度. 若假设系统执行某个应用程序所需时间为 T1 , 优化后的时间为 ...

  8. 性能调优(一)----Amdahl定律及木桶原理

    什么是Amdahl定律? 首先的一个问题就是,这个怎么读啊???对于我这蹩脚的英语来说真是一脸懵逼.赶紧百度下:阿姆达尔定律,是由Gene Amdal 在1967年提出.阿姆达尔定律定义了穿行系统并行 ...

  9. Amdahl定律及木桶原理

    首先的一个问题就是,这个怎么读啊???对于我这蹩脚的英语来说真是一脸懵逼.赶紧百度下:阿姆达尔定律,是由Gene Amdal 在1967年提出.阿姆达尔定律定义了穿行系统并行化后加速比的计算公式和理论 ...

  10. 第一章 电路模型和电路定律(习题解析)

    第一章 电路模型和电路定律(习题解析) 简介: 书后面的习题详解,主要包含的内容关联方向与非关联方向.功率平衡 电路基础(第一章电路模型和电路定律) 第一章电路模型和电路定律(补充) 本篇例题参考教材 ...

最新文章

  1. 澳洲服务器拳头账号怎么注册,lol手游东南亚服拳头账号注册教程 东南亚服怎么注册拳头账号[多图]...
  2. [Google API](5)筛选结果
  3. [ Python ] PIL
  4. Ubuntu建立和删除用户
  5. Objective-c 异步发送Post请求的工具类
  6. bug最后汇总-2018/08/03
  7. 启动代码和Bootloader的区别和关系介绍
  8. Minigui及lgui使用全解释
  9. Oracle中限定日期,Oracle 日期的一些简单使用
  10. 罚款200元的交通违法行为
  11. 为什么使用lambda表达式
  12. Windows2012服务器无法复制粘贴问题
  13. JavaScript中值类型与引用类型
  14. SQL Server 历史SQL执行记录
  15. C语言抽奖程序随机实现,简单的号码抽奖程序 - oixxan的个人博客 - OSCHINA - 中文开源技术交流社区...
  16. Windows API函数大全(1)
  17. xshell通过隧道连接_如何在xshell中创建一个SSH隧道
  18. php codeigniter3,codeigniter
  19. 题目 1035: [编程入门]自定义函数之字符类型统计
  20. 罗技m330更换接收器(通过重新对码的方式)

热门文章

  1. origin图上显示数据标签_Origin中如何将曲线上的数据显示出来?
  2. java:begin_end,C++ STL begin()和end()函数用法
  3. 计算机论文摘要200字模板,设计论文摘要万能模板_论文摘要万能模板_论文摘要200字模板...
  4. 如何不授权情况下获取自己微信openid/傻瓜式获取
  5. 最小生成树算法(普利姆算法和克鲁斯卡尔算法)---抄自天勤数据结构高分笔记
  6. Chrome的YouTube双语字幕插件
  7. @uncheck_jQuery Check / Uncheck复选框
  8. 上海少儿社保参保问题
  9. 保存Windows11聚焦图片教程
  10. win10查看计算机系统版本,如何查看我的电脑是不是win10 1909版本?