协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
,也支持CMU自行设计的RMP(Reliable Message Protocal)等协议。
为了解决通信瓶颈问题,Nectar系统采用了高速光纤网,数据传输率可以从每秒100兆位到
每秒800兆位。此外,Nectar系统还采用了两种方法来降低通信延迟。一是减少数据发送与接收时数据复制的次数。由于结点机主存带宽的限制,频繁的数据复制将引起很大的通信延迟。二是与通信有关的中断处理均由通信加速器完成,减少结点机中断次数。为了进一步减少通信延迟,Nectar系统采用了图9.4.2所示的方法设计节点机与网络的接口。这种设计把用户数据缓冲区移到通信加速器中。因此,发送或接收数据时不需要由结点机来控制数据的复制操作。数据的打包和拆卸等工作在通信加速器上由用户进程Server完成。这样,由主存带宽限制所引起的通信延迟被降到最低。如果采用通常的方法,计算机向网络传送数据时,其接口过程如图9.4.3所示。用户命令被解释为某种系统调用,由该系统调用控制向网上发送数据。在执行系统调用时,首先由结点机操作系统从用户空间复印数据到系统缓冲区,经过数据打包后传送给网络控制器,然后从网络控制器转发到网上。使用这种方法,每发送或接收数据时,至少需要占用三次总线,引起很大的通信延迟。
节点机节点机节点机
通讯加速器通讯加速器通讯加速器
......
光纤端口光纤端口光纤端口
交换器交换器交换器
光纤端口光纤端口光纤端口
Nectar网
......
通讯加速器通讯加速器通讯加速器
节点机节点机节点机
图9.4.1.Nectar系统结构示意图。
191
在Nectar网中,每台结点机通过交换器实现与其它结点机的直接点对点通信,数据传输率不随计算机结点的增加而下降。Nectar的围绕一组核心为1616交叉开关的交换器而设计。交换,
器能够使结点机的通信加速器“打开”或“关闭”。通信加速器可以实现数据包和非数据包方式的信息传输。按数据包方式传输信息时,数据以包的形式传送,数据包的最大长度受到交换器
FIFO缓冲区的长度限制。 按非数据包方式传输信息时,传送数据的长度不受限制。根据端口
测定,Nectar网络进行数据传送时,数据包第一个字节的传送延迟(包括建立链路和完成传送两部分)约为0.7毫秒,其余字节传送时的延迟时间为0.35毫秒。Nectar的交换器能够在每0.7毫秒的周期内建立一个新的链路。
由于单个交换器的传送和开关延迟较低,多个交换器组成的网络结构附加的延迟也较少。CMU的实验表明,通过增加交换器的个数,Nectar网可以支持近100台工作站构成的机群并行计算系统。
CPU
用户数据主存储器 缓冲器
通讯加速器
网络
节点机与网络的接口过程。图9.4.2.
CPU
用户系 统存储器空间缓冲区
主存储器网络控制器
网络
图9.4.3.一般的数据传递接口过程。
192
2. Hcluster系统
Hcluster是黑龙江大学信息技术研究所研制的微型计算机机群并行计算系统。 Hcluster并行计算系统目前由16台586高档微型计算机组成。16台计算机由我们自行研制的16台通信处理器和互连网络连接成4维Hypercube并行计算结构。Hcluster的系统结构如图9.4.4所示。
处理处理处理处理结点结点结点结点
处理处理处理处理结点结点结点结点处理处理处理处理结点结点结点结点
处理处理处理处理结点结点结点结点
图9.4.4. Hcluster的系统结构。
图9.4.4中的每个处理结点由一台586微型计算机和一台通信处理器构成,其结构如下:
586微型计算机
通信处理器
每个通信处理器由一台微处理器、通讯接口和高速缓冲器组成。
为了解决网络瓶颈问题,Hcluster摆脱了局域网络的束缚, 使用了一个具有Hypercube拓扑结构的通信网络。这个网络具有如下的特点:
1. 具有通信性能很高的Hypercube
2. 突破了总线式通信网络的局限性,实现了网上多计算机并行通信, 即多计算机可同时在
3. 实现了网络物理链路的多位并行信息传输,
4. 实现了计算与通信过程的重叠,提高了系统的并行性。
5.
目前,Hcluster的信息传输率峰值可达每秒300兆位。 如果使用高速元器件,信息传输率可达每秒千兆位。Hcluster已经用于实现并行数据库管理系统。实验表明,Hcluster具有很高的效率和性能。
193
9.4.4 机群并行计算系统的软件环境
我们在9.4.3节介绍了机群并行计算机系统的硬件环境。显然,仅有硬件环境,机群并行计算系统还不能有效地支持并行程序的开发和运行。软件开发环境是机群并行计算机系统必不可少的重要组成部分。最近几年,出现了一些基于机群并行计算机系统的软件开发环境,其中影
Express系统。本节简单介绍一下这两个系统。 响较大的是PVM和
1. PVM并行软件环境
PVM(Parallel Virtual Machine)是一个以UNIX基础,以TCP/IP为通信协议的并行计算机机群软件环境。PVM把多个异构计算机通过网络互连在一起,构成并行虚拟计算机系统。PVM是由美国OAK RIDGE国家实验室于1989年开始研制的系统。田纳西大学、EMORY大学和卡内基—梅隆大学也参加了PVM的研制工作,并得到了美国能源部、国家自然科学基金、CONVEX公司
年初推出了3.3.7版。1995年9月推出了3.3.9版。与PVM配套的异构计和田纳西州的资助。1995
算机网络环境HeNCE和可视化工具XPVM已经被推广使用。很多标准软件系统正在移植到PVM平台。
PVM支持的结点机可以是并行机、向量机、工作站等,网络可以是ETHERNET、FDDI等。在这个机群并行计算软件环境中,用户可以指定其中的任意一台结点机为主机。PVM中并行执行的基本单位是任务。任务与UNIX的进程类似,通常就是一个UNIX进程。PVM的基本功能就是支持多任务在多个结点机上并行执行。PVM提供了控制多任务并行执行和实现多任务间通信同步的软件工具。PVM支持FORTRAN和C语言。
PVM软件环境由两部分组成。第一部分是PVMD。PVMD运行在所有结点机上。用户使用PVM时,首先需要在一个网络结点机上执行PVMD。这个结点机上的PVMD将启动其它节点机上的PVMD,共同组成一个由用户定义的虚拟并行计算机。应用程序可以在任一结点上执行。多个用户可以配置多个相互重叠的虚拟机。每个用户可以同时执行多个应用程序。
组成PVM的第二部分是PVM函数库。PVM以函数的形式与用户程序接口,向用户提供各种服务。用户程序需要通过函数调用来使用PVM的各种功能。下边我们简单介绍几类主要的PVM函数。
(1). 宿主语言. 我们称可以直接调用PVM函数的程序设计语言为宿主语言。PVM系统支持两种宿主语言,即FORTRAN和C语言。为了避免PVM函数与各节点机的函数库发生冲突,PVM的C语言函数皆以PVM_开头。PVM的FORTRAN语言函数名都以PVMF开头。
(2). 并行任务控制函数. 并行任务控制函数用来控制多任务的并行执行。第一组并行任务控制函数用于把用户进程转换为PVM任务,然后再转变成正常的进程。第二组并行任务控制函数用于返回系统中正在执行的任务的标识符,使应用程序能够辩认系统上正在运行的任务。PVM启动的所有任务都有一个任务标识符。任务标识符由PVMD提供,在系统中是唯一的。第三组并行任务控制函数用于启动和结束PVM任务。第四组并行任务控制函数用来实现动态任务组的控制。动态任务组机构是建立在PVM基础之上的。一个任务可以属于多个任务组。任务组在系统运行时可以动态地改变。动态任务组控制函数以组名为参数,包括建立和撤消任务组、向任务组添加任务、从任务组中删除任务等。一个任务组中的每个任务都可以查询组内其它任务的状态。
194
(3). 任务通信同步函数. PVM提供了两种任务间通信同步方式。一种是在任务之间发送信号。另一种是在任务之间进行消息传递。PVM提供了两组相应的通信同步函数。第一组通信同步函数用于在多任务之间发送信号,包括两种发送信号的函数。一种是发送UNIX信号。另一种是发送事件标志,包括任务的退出、网络节点机的删除与加入。应用程序可以调用PVM的相应函数检测到这些标志。PVM的第二组通信同步函数是消息传递函数,包括数据打包、数据拆包、数据包发送、数据包接收等函数。使用这组函数,任何任务都可以异步地向另一个任务发送消息,或者向一组任务广播消息。消息可以按照封锁(BLOCKING)或非封锁(NON-BLOCKING)方式来接收。接收函数可以按要求返回接收到的消息。消息缓冲区是动态分配的。所以,结点机上可用存储空间的大小决定了消息的长度。
(4). 虚拟并行机管理函数. 虚拟并行机管理函数提供动态改变PVM环境的功能。这类函数包括向系统加入结点机、从系统删除结点机、查询虚拟并行机配置信息等函数。
PVM除了具有上述功能外,还具有容错的特征。若组成系统的某台节点机发生故障,PVM能自动地检测出这台计算机并将其从系统删除。用户程序可以获得系统的状态信息。PVM不能自动地将非正常终止的任务恢复。所以,用户程序能否容错需由用户在编程时加以考虑。
美国Oak Ridge国家实验室和田纳西大学等单位在PVM的基础上开发了一个基于
X-WINDOWS窗口软件的机群并行计算环境。该环境是一个图形化的高级并行程序设计和运行环境。在这个环境下,用户只要用一种简单结构图描述程序的并行性和控制流,并用普通的程序设计语言设计基本的计算构件—子程序,系统就可以自动完成并行程序的设计、编译、调试和运行。
PVM已被用于多种计算任务,如分子学模拟、超导研究、矩阵计算等。由于PVM具有很高的I/O并行性,它可以有效地支持并行数据库系统。
2. EXPRESS并行软件环境
Express是最早出现的并行计算环境之一。它是ParaSoft公司于1988年推出的商品化系统。Express要求的硬件环境是一种“主机—结点机”结构。主机与结点机以及结点机之间的通信由消息传送机制通过高速连接网络实现,其拓朴结构可以是Mesh、Ring、Torus、Hypercube等。如果主机与节点机都是工作站(即工作站机群),高速连接网可以由一般的局域网(如ETHERNET)替代。Express系统的主机和节点机有明确的分工。主机负责用户界面并完成I/O操作。节点机主要进行计算工作。
Express既可作为操作系统,也可以作为实用程序和库函数使用。当它运行在一个没有加载操作系统的并行计算机系统(如 Transputer阵列)上时,它就是一个操作系统,为并行程序提供多任务管理、I/O操作管理、调试跟踪等服务。当它在已加载操作系统的并行计算机系统(如工作站机群)上运行时,它就成为一种运行在操作系统之上的实用程序和库函数。Express由一组软件包组成。它以独立于具体机器结构的方式提供并行软件生存周期所要求的开发工具,包括分析、设计、编码、调试、性能评估、维护等工具,并为大多数工具提供了图形界面。
Express的目标是力图避免寻求新的或者复杂的方法去开发并行程序,而尽量采用接近于传统串行程序设计风格的规则来编写并行程序。这个目标使得Express类似于一种由传统程序设计方法简单扩展而成的并行程序开发环境。下边,我们简单介绍一下Express的功能和它提供的并行软件开发工具。
Express几个主要功能如下:
195
(1). 支持多个用户同时使用并行计算机系统。
(2). 在多种网络拓扑结构下实现透明的点对点通信。
(3). 提供管理控制多任务在多结点机上的并行运行,如建立、启动、终止任务等。
(4). 可以实现静态或动态的负载均衡调整策略。
(5). 实现用C或FORTRAN语言编写的顺序程序到并行程序的自动转换。
(6). 实现在高级语言级调试并行程序。
(7). 实现自动分析和评估并行程序的动态行为。
(8). 实现自动数据分解、在异构网络下运行并行程序等。
(9). 实现I/O共享,使各节点机能平等地访问主机,实现I/O操作。
Express有如下几个主要软件工具:
(1). Vtool:用于算法分析与设计的工具。它以动画方式显示算法的全过程,其中通过显示数据结构的引用和修改状况来演示算法的结构。
(2). Aspar: 用于编码阶段的工具。它能够把用C或FORTRAN语言编制的顺序程序转换为Express编程模式下的并行程序。Express编程模式包括数据划分、功能划分、客户/服务器等。Aspar还具有一个Ftool工具,用于分析程序中的变量引用和数据/控制流等静态结构。
(3). Ndb: 并行程序调试工具。Ndb的功能和调试命令与dbx相似。不同之处在于,它可以调试跟踪一组结点机上运行的并行程序。
(4). Ctool: 用于性能分析的工具。它通过实际运行并行程序来分析其用于计算、I/O和数据通信的开销,为用户进一步优化程序结构提供依据。
Express是一个商品化的系统。目前,它可以在下列并行计算机系统上运行:CRAY X-MP、CRAY Y-MP、CRAY-3D、CONVEX MPP、DEC ALPHA、DEC工作站机群、HP9000/800、HP工作站机群、Intel iPSC/i860、Intel iWarp、Intel Delta、Intel Paragon、IBM ES9000、IBM3090、IBM PVS、IBM RS/6000工作站机群、IBM SPI、Kendall Square KARI、nCUBE系列、SGI工作站机群、SUN工作站机群、CM5、Transputer系统等。
9.5 并行算法及其复杂性分析
并行算法是为并行计算机系统设计的算法。并行算法一般都是指可在SIMD计算机或MIMD计算机上执行的算法。可在SIMD计算机上执行的算法称为同步并行算法。可在MIMD计算机上执行的算法称为异步并行算法。在松散耦合的MIMD计算机上执行的算法也称为分布式并行算法。下面,我们讨论各类并行算法的复杂性分析方法。
并行算法的复杂性分析与顺序算法的复杂性分析有很大差别,需要考虑的因素很多。并行算法的复杂性测度包括工作量、运行时间、处理机数目、加速比、效率、伸缩性等。在并行算法的设计与分析中,我们必须全面考虑这些复杂性测度。
在分析算法的复杂性时,我们经常要考虑平均复杂性和最坏复杂性。设S、S、...、S是12k算法A的所有大小为N的输入,P是S的出现的概率,COMPLEXITY(S)是算法A在输入S上执iiii
196
行的复杂性,COMPLEXITY可以是工作量、执行时间等复杂性测度。A在大小为N的输入上的平均复杂性定义为
k。 ,,ACOMPLEXITYN,,COMPLEXITY(),SPiii,1
显然,分析算法的平均复杂性时,需要了解输入的分布情况,比较困难。最坏复杂性要比平均复杂性容易分析。最坏复杂性定义为
。 ,,,,WCOMPLEXITYN,MAXCOMPLEXITY() | 1,i,kSi
9.5.1. 并行执行时间
一个并行算法的并行执行时间是指它在并行计算机上求解一个输入大小为N的问题所需要的时间,记作RT(N)。设A是一个并行算法,P是处理器个数,t是执行A时第一个被启动的处理s
器开始运行的时间,t是最后一个停止运行的处理器的停止时间。算法A的并行执行时间是N和t
P的函数RT(N,P)=t- t。当并行算法是同步算法时,所有处理器的开始运行时间都是相同的,所ts
有处理器的终止时间也都是相同的。
算法分析工作一般在算法执行之前就要进行。人们通常使用算法执行的基本操作数近似地表示RT(N,P)。对于不同的计算模型,基本操作的定义也不相同。但是,无论对哪种计算模型来说,基本操作都仅需要常数执行时间。由于并行算法的执行时间RT(N,P)包括计算时间、I/O时间、通信时间三部分,我们估计一个并行算法的RT(N,P)时首先要计算这个算法需要执行的基本计算操作数、基本I/O操作数、基本通信操作数,然后考虑这三类操作是否并行运行,估计三类操作所需要的时间,最后使用加法或max求出RT(N,P)的估计式。
9.5.2. 工作量
一个并行算法的工作量定义为该算法执行时所使用的处理器数量和并行执行时间的乘积。我们用Cost(N)表示一个并行算法求解一个输入大小为N的问题时的工作量,则
Cost(N)=P×RT(N,P),
其中P是处理器数量。Cost(N)是求解输入大小为N的问题时所有处理器运行时间总和的近似值。一个MIMD机器求解一个问题的工作量可能会小于Cost(N),因为RT(N,P)是所有处理器中运行时间最长的处理器的运行时间。换言之,Cost(N)是在假定每个处理器的运行时间皆相等的条件下的并行算法的工作量。我们希望最快顺序算法的运行时间与Cost(N)之比越大越好,理想值是1。
9.5.3. 加速比
197
设A是求解问题P的最快顺序算法,PA是求解问题P的一个并行算法,A的运行时间是RT(N),PA的运行时间是RT(N,P)。并行算法PA加速比定义为: APA
S(N,P)=RT(N)/RT(N,P)。 APA
很多问题的最快顺序算法还不清楚。所以我们一般都是使用已知最快顺序算法的执行时间来计算并行算法的加速比。显然,S(N,P)越大,并行算法越好。S(N,P)的理想值是P,但实际上是达不到的,因为并行算法运行时需要很多额外开额,如通信同步等。事实上,由于任一并行算法皆可在一台串行机上模拟,所以RT(N)P×RT(N,P),于是S(N,P)P。 ,,APA
9.5.4. 效率
一个具有高加速比的并行算法对处理器的利用率可能很低。S(N,P)不能全面反映并行算法
的性能。为此,我们需要另一个并行算法的复杂性测度,即效率。并行算法的效率定义为:E(N,P)=S(N,P)/P。E(N,P)是度量并行算法的处理器利用率的测度。由S(N,P)P可知,,0。 12n
'''''',s,s,....,s,s,s,....,s 输出:, nn1212
*使用n个处理机完成n个数的排序。
?算法
199
? FOR i=1 TO n 并行地Do
? p从左邻接点接收一个数据; i
? p把输入数与存储的数进行比较; i
? p输出大值到右邻接结点; i
? p存储小值到p的局部存储器; ii
? 输出排序的数列:任一个处理机无左输入,则开始向左传输数据。
?例子
30512
3051 2
305 2 1
30 5 1 2
3 1 2 0 5
3 5 0 1 2
3 5 0 1 2
3 0 1 2 5
5 0 1 2 3
0 1 2 3 5
?复杂性分析:
200
响应时间:T=2n-1(sort) T=n(output) T(n)=T+T=,(n) 1212
使用的处理机数:P(n)=n
加速性:S(n)=,/T(n)=,(n,logn)/,(n)=,(logn)
2 工作量:W(n)=T,P=,(n),n=,(n)
有效性:E(n)=S(n)/n=,(logn)/n=,(logn/n)
2. 用少于N个处理机排序N个数
?可行性条件
用P个Processors排序n个数,每个Processor必须能够存储n/P个数。
?方法
一般算法:设A是用于具有P个处理机的并行计算机的算法,G是一个具有P个处理机1122
,,p的并行计算机,PP个处理机上设计的有效算法可以转换为P个处理机上的有效算法。 122
2. 若P=1,有效并行算法可以转换为有效顺序算法。 2
* 顺序算法转为有效并行算法是open problem!
9.6.2 线形数组并行机上的奇—偶交换算法
1. 奇—偶交换方法
?问题定义
输入:S=,S存储与P中n个存储机。 12nii
'''s,s,....,s 输出:s’存储与P中, iin12
?算法
设s在P中 ii
201
基本思想:设S={6,5,9,2,4,3,5,1},
奇数步:比较交换(6,5),(9,2),(4,3),(5,1), 得
S={5,6,2,9,3,4,1,5}
偶数步:比较交换(6,2),(9,3),(4,1), 得
S={5,2,6,3,9,1,4,5}
如此继续下去循环次数:,n/2,次,得到S={1,2,3,4,5,5,6,9}
DO 算法:FOR j=1 TO ,n/2,
FOR i=1, 3, …., 2,n/2,-1 Do in parallel
IF s>s THEN s,s; ii+1ii+1
ENDFOR;
FOR i=2, 4, …., 2,(n-1)/2, DO in parallel
IF s>s THEN s,s; iI+1ii+1
ENDFOR;
ENDFOR
例:S={6,5,9,2,4,3,5,1}
516 5 9 2 4 3
?复杂性分析
响应时间:T(n)=O(n)
处理机数:P=n
2 工作量: W(n)=P,T(n)=O(n)
加速性: S(n)=,/T(n)=,(nlogn)/O(n)=O(logn)
有效性: E(n)=S(n)/P=O(logn)/O(n)=O(logn/n)
2. 一般化的奇—偶交换方法
?问题
输入:S=, 12n
处理机数N,Nj,则s在s之后 ijij
S={5,2,4,5}, (p,….., p)计算与s对应的C 例: 令i1inii
S p pppC S 1112 13 14
5 5/5 5/2 5/4 5/5 2 2
P ppp 2122 23 24
2 2/5 2/2 2/4 2/5 0 4
P ppp 3132 33 34
4 4/5 4/2 4/4 4/5 1 5
P ppp 4142 43 44
5 5/5 5/2 5/4 5/5 2 5
算法
(1) FOR i=1 To n Do in parallel
(2) FOR j=1 To n Do in parallel
(3) If (s>s) OR (s=s and i>j) ijij
(4) then P(i,j)在C中写1 i
(5) else P(i,j)在C中写0 i
(6) ENDFOR
(7) FOR i=1 To n Do in parallel
(8) P(i,1) 存S中写到S`(c+1) ii
(9) ENDFOR
4. 复杂性分析
响应时间:(1)—(6)要求O(1)时间
(7)—(8)要求O(1)时间
T(n)=O(1)
205
2 处理机数:P=n
2工作量: W(n)=T(n).P=O(n)
加速性: S(n)=O(nlogn)/O(1)=O(nlogn)
2有效性: E(n)=S(n)/P=O(nlogn)/O(n)=O(logn/n)
E(n) ,0 *有效性很低,n,,,
5. 注释
?该方法依赖于:
(1) CRCW
(3) 非常多的处理器
模型太强了,无实际意义。
?可以用n处理器实现该算法。
9.6.4 CREW并行计算机上的Merge算法
1. 计算模型
SIMD、CREW、Shared-Memory、N procesors
2. 问题定义
a,a,....,a 输入:A=,, 12r12r
b,b,....,b B=,, r,s, 12ss12
处理器数N,N,r
输出:C=,A,B;c,c,….,c12r+s12r+s
3. 算法
基本思想:
(1) 每个处理器可运行两个过程
SEQUENTIAL MERGE /* O(n) */
BINARY SEARCH /* O(logN) */
(2) 例:N=4,r=s=12
A={2,3,4,6,11,12,13,15,16,20,22,24}
B={1,5,7,8,9,10,14,17,18,19,21,23}
? 把A和B分为相等大小的N个子序列:
A: <2,3,4> <6, 11, 12> <13,15,16> <20,22,24>
A’: 4 12 16 /* A’[i]=A[i*(r/N)] */
B: <1,5,7> <8, 9, 10> <14,17,18> <19,21,23>
B’: 7 10 18 /* B’[i]=B[i*(s/N)] */
206
? 合并A`和B`形成一个三元组序列:
V=<(4,1,A), (7,1,B), (10,2,B), (12,2,A},(16,3,A),(18,3,B)>
*第一分量表示数,第二分量表示数在A’或B’中的位置,第三分量表示数所在数组。 ? 确定每个处理机需要Merge的两个A与B的子集的第一个元素送数组Q,Q(i)=(x,y)
表示第i个处理机合并由位置x开始的A子列和由位置y开始的B子列:Q(1)=(1,1),
Q(2)=(5,3), Q(3)=(6,7), Q(4)=(10,9)_
P根据Q(i)=(x,y),合并由位置x开始和由位置y开始的A和B的子序列,送到由x+y-1 ? i
开始的C的子列.
算法
? FOR i=1 To N-1 Do in parallel
P确定A’[i]和B’[i]: A’[i]?A[i,r/N,];B’[i]?B[i,s/N,]; i
? FOR i=1 To N-1 Do in parallel
P用二元查找法在B’中找满足A’[i]1 Do
(2.1) FOR m=1 to ,v/2, Do in parallel
u+1uuP,P,P m2m-12mu+1uuu+1用P中的处理器完成CREW—MERGE(S, S, S) m2m-12mmu+1uu+1u (2.2) If v是奇数 THEN P, P;S, S; ,v/2,v,v/2,v
(2.3) u,u+1;v?,v/2,
ENDwhile
4. 复杂性分析
响应时间:step1: O(n/N log(n/N))
208
step2: O(,logN, (n/N+logn))
2 T(n)=O(n/Nlogn+logn)
处理机数:P=N
2 工作量: W(n)=O(nlogn+N logn)
2 加速比: S(n)=,/T(n)=O(nlogn)/O(n/Nlogn+logn)=O(1/(1/N+logn/n))
n,,,S(n)=N
N,,,S(n)=n/logn
有效性: E(n)=O(1/(1+N/nlogn))
E(n) ,1 n,,,
N,,,E(n) ,0
9.6.6 EREW并行计算机上的排序算法
9.6.6.1. 计算模型
?SIMD、SM、EREW
?EREW要求必须避免写和读冲突,需要三个算法
EREW—Broadcasting算法
All—sums算法
EREW—Selection算法
9.6.6.2. Broadcasting算法
1. 问题定义
输入:D=存储器中的一个单元,N个处理器。
输出:D的数据输送到所有N个处理器。
2. 算法
基本思想:
D 1 2 3 4 5 6 7 8
,数组A N=8 5 5
5 Step 0
pppppppp1 2 3 4 5 6 7 8
209
1 2 3 4 5 6 7 8
5 5
5 5 Step 1
pppppppp1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
5 5 5 5
Step 2 logN
5 5 5 5
pppppppp 1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
5 5 5 5 5 5 5 5
Step 3
5 5 5 5 5 5 5 5
pppppppp1 2 3 4 5 6 7 8
算法:
Step 1:Processor p执行:1
读D的值;
存储到自己的存储器;
写入A(1);
Step 2:FOR i=0 To (logN-1) Do
ii+1 FOR j=2+1 To 2Do in parallel
Processor P执行:j i 读A(j-2)的值;
存储到自己的存储器;
写入A(j);
ENDFOR;
ENDFOR.
3. 复杂性分析:
响应时间:T=O(logN)
210
处理机数:P=N
工作量: W=T,P=O(NlogN)
9.6.6.3 Prefix sums算法
1. 问题定义
输入:处理P存储有a,1,I,N II
输出:P中存储a+a+….+ a,1,I,N i12I
2. 算法
基本思想:设A= a+a+….+ a, ijII+1j
例:N=8
pppppppp1 2 3 4 5 6 7 8
aaaaaaaa1 2 3 4 5 6 7 8
step 1 AAAAAAAA11 12 2334 45 56 67 78
3
step 2
AAAAAAAA11 12 14 25 36 47 50 13 logN
step 3 AAAAAAAA11 12 1314 15 16 17 18
算法:
FOR j=0 To logN-1 Do
j+1 FOR I=2 To N Do in parallel
Processor pI
jj+1jj(2-1)j (i) 从p得到a/*I-2=2-2=2=2*/ jjI-2I-2
(ii) a+a代替a IIjI-2
ENDFOR
211
ENDFOR
3. 复杂性分析
响应时间:T=logN
处理机数:P=N
工作量: W=O(NlogN)
Select算法 9.6.6.4 EREW—
1. 问题定义
输入:S={s,s,…s},1,k,n 12n
输出:S的第k个最小数
1-x处理机数:N=n,0m把S分为三个子序列
(5) 最后递归地完成选择S中第k个最小值
例 S={18, 35, 21, 24, 29, 13, 33, 17, 31, 27, 15, 28,
11, 22, 19, 25, 34, 32, 16, 12, 23, 30, 26, 14, 20}
|S|=n=25, N=5, k=6.
1-x1-xx0.51-x 由N=5=n=25可以求出x=0.5, n=25=5, n=5.
下边给出了求S中第6个最小数的过程:
Step (1) 的结果:
S={18, 35, 21, 24, 29} S={13, 33, 17, 31, 27} S={15, 28, 11, 22, 19} 123
S={25, 34, 32, 16, 12} S={23, 30, 26, 14, 20} 45
Step (2) 的结果:
M={24, 27, 19, 25, 23}
Step (3) 的结果:
m=24
Step (4) 的结果:
L={18, 21, 13, 17, 15, 11, 22, 19, 16, 12, 23, 14, 20} /* S的低部 */
212
E={24}
G={35, 29, 33, 31, 27, 28, 25, 34, 32, 30, 26} /* S的高部 */
递归 处理L,因为|L|>6.
算法:
PABALLEL-Select(S, k)
Step 1:
IF n,4 THEN P使用常数次比较返回第k个最小元素 1
ELSE
x1-x(i) S分为等长(n)的n子序列S、….、S 1i
(ii) S分配到P ii
ENDIF
Step 2:
1-x FOR i=1 To n Do in parallel
处理机P,/2,),结果存储到M[i] 执行Sequential-select(S, ,,Siii
ENDFOR
Step 3: m=PABALLEL-Select(M, ,,M,/2,)
Step 4:
划分S为三个子序列
L={s,S | s m} ii
Step 5:
If ,L,,k THEN PARACLEL-SELECT(L, k)
Else If ,L,+,E,,k THEN return m
Else Parallel-select(G, k-,L,-,E,)
Endif
Endif
3. 复杂性分析
响应时间:设T(n)是响应时间;
Step 1:用Broadcast算法向所有处理机传送S的开始地址、,S,和k,需
1-x 要O(log(n))时间;
1-x P计算S的开始和结束地址(for i=1 to n), 需要O(1)时间。 iixx Step 2:在长度为n的S中找中间值,需O(n)时间 i1-x1-x Step 3: 需要T(n), 因,M,=n
1-x1-x Step 4: (i) m被Broadcust传递到n个处理机, 需O(n)时间
xx (ii) 每个P划分S为L、E、G, 需要O(n)时间,因为|S|=n. iiiiii
(iii) L, E,G,合并为L, E, G; ii i
213
令a=,L,,z=0,L的合并如下(同法可合并E、G): ii0iii
i1-x? FOR i=1 To n 计算z= (使用prefix-sums算ai,jj,1
), 法
1-x 需要O(log n)
x? P把L送入L,起始位置为z+1,需要O(n)时间. iii-1
x 于是总时间要求为O(n)。
1-x,L,,3n/4,,G,,3n/4。因为m是M的中间值,M中至少有n/2个 Step 5:
x 值大于m;M的每个元素都是某个S的中间值,故至少有S的n/2 i1-xx 元素大于M的每个中间值,于是,L,,n- (n/2), (n/2)=3n/4. Step 5要求
T(3n/4)时间.
x1-xxx于是,T(n)=O(logn)+O(n)+T(n)+T(3n/4),O(n+t(3n/4))=O(n)(用展开法)
1-x 处理机数:P(n)=n
1-xx工作量: W(n)= n,O(n)=O(n)
x1-x 加速性: S(n)=O(n)/O(n)=O(n),O(n/logn)
1-x1-x 有效性: E(n)=O(n)/ n =O(1)
9.6.6.5 EREW—SORT算法
1. 问题定义
1-x 输入:S=,N= n处理机 12n
'''s,s,....,s输出: n12
2. 算法
基本思想:
1/x1/x1/x(1) 取2-1个点,把S分为2个子序列 (每个序列长为n/2):
(1/x)-1 S, S, …., S, S, S, (j=2) S‖, ― S‖, ―…. ‖, ― S 12jj+12j1 2 2j(2) 并行递归地排序S、S、….、S, 每个子序列用N/j个处理器。 12j
,1/x,1-x,1/x, 算法:令k=2,N=n,x满足:,1/x,,10,n,2,
EREW-Sort(S)
(1) IF n,k Then Quicksort(s); (2) ELSE FOR i=1 To k-1 Do (3) PARALLEL-SELECT(S, ,i,n/k,)
(4) ENDFOR
(5) S,{s,S | s,m} 11
214
(6) FOR i=2 To k-1 DO
(7) S,{s,S | m,s,m} ii-1i
(8) ENDFOR
(9) S,{s,S | s,m} kk-1
(10) FOR i=1 To k/2 Do in parallel
/* 并行排序S….、S, 每个子序列用N/j个处理器 */ 1j
(11) EREW-Sort(S) i
(12) ENDFOR
(13) FOR i=(k/2)+1 To k Do in parallel
/* 并行排序S….、S, 每个子序列用N/j个处理器 */ j+1k
(14) EREW-Sort(S); i
(15) ENDFOR
(16) ENDIF
3. 复杂性分析
xx应时间:(2)-(4):kO(n)=O(n) 响
(5)-(9):由于Parallel-Select已把S分为k个子序列,且S中元素皆在m与mii-1I
之间,故只需计算出S的起始与终止地址,故需O(k)时间 i
(10)-(11):t(n/k), 因,S,=n/k i
(13)-(14):t(n/k)
xx T(n)=O(n)+2t(n/k)=O(nlogn) (展开法)
1-x处理机数:P(n)=n
1-xx工作量: W(n)=O(nnlogn)=O(nlogn)
xx加速性: S(n)=nlogn/nlogn=n/n0 then k,k endif ii
Endfor
5. 复杂性分析
(1)EREW模型
step 1:使用Broadcast—O(logN)
O(n/N) step 2:Seqential-search—
step 3:使用store—O(logN)
于是:T(n)=O(logN)+O(n/N) W(n)=O(NlogN+n)
(2) ERCW
step 1:使用Broadcast—O(logN)
step 2:Seqential-search—O(n/N)
step 3:O(1)
T(n)=O(logN+n/N) W(n)=O(NlogN+n)
(3) CREW
step 1:O(1)
step 2:O(n/N)
step 3:O(logN)
T(n)=O(logN+n/N) W(n)=O(NlogN+n)
(4)CRCW
step 1:O(1)
step 2:O(n/N)
step 3:O(1)
T(n)=O(n/N) W(n)=O(n)
(5)令N=n,查询q个x,对于EREW、ERCW、CREW:T(n)=O(qlogn)
对于CRCW:T(n)=O(q,N/N)=O(1)
5.2.2. Searching on a Tree
1. 计算模型:具有n个叶的Tree-connected SIMD 计算机
224
叶结点:存储S—被search的数据集合
(1)接入输入 Root:
(2)向两个子结点传输,从接收的输入
(3)从两个子结点接收,输出
(4)产生输出
中间结点:(1)从父结点接受一个输入
(2)传输输入到子结点
(3)从两个子结点接收输入
(4)组合 子结点的输入
(5)传送组合结果到父结点
以下讨论 Quering
1. 问题定义:输入:S={s,s,….,s}存储于叶x 12n
输出:yer如果x在S中 no如果x不在S中 2. 基本算法:
(1) Root 读x
FOR i=0 To logn-1 Do
iFOR j=1 To 2 Do in Parallel
i级第j个结点向其两个子结点传送x
(2) FOR i=1 To n Do in Parallel
第i叶结点做
IF x=s THEN 向上输出1 i
ELSE 向上输出0
(3) FOR i=logn-1 DOW—to 0 DO
i FOR j=1 To 2 Do in Parallel
i级显示结点接收其两个子结点传送的值r,r; 23. 复杂性:T(n)=O(logn)
W(n)=O(Nlogn) 4. q个查询的流水形式并行处理
复杂性:(1)产生第一个回应需要O(logn)时间
(2)以后每步产生一个新回应
(3)第一个回应产生后,q-1单位时间内产生所有回应
T(n)=O(logn)+O(q)
W(n)=O(Nlogn)+O(Nq)=O(nlogn)+O(nq)
225
5.2.3. Searching on a Mesh 1. 计算模型:SIMD、Mesh-connected,图5.8 p129
特点:(1)任意两个处理器间连线长度为常数
(2)区域是O(n)
问题:p接收输入,产生输出。 2.111/21/2 输入:S={s,….s},s在p中,x 11nnijij
输出:yes--x,S no--x,S
3. 算法:基本思想:使用二维数组B={b} ij
,传递到所有p(i,j);若p(i,j)中数=x,则置b=1 (1) 第一阶段:p(1,1)读xij
(2) 第二阶段:回送各处理器的比较结果,由p产生回答。 11
例:pp Fig.5.9 (3)
算法:pp 129
4. 复杂性分析:T(n):step 1=O(1)
1/21/2step 2=O(n):n-1步传送信息
1/21/2-1步传送信息 step 3=O(n) n
step 4=O(1)
1/2 T(n)=O(n)
1/23/2 W(n)=O(n,n)=O(n)
1/21/2 S(n)=O(n/n)=n
3/21/2 E(n)=O(n/n)=O(1/n)
226
227