1、并行处理复习题Answer全面The Review of Parallel Process1The Sieve of Primes (810)(筛选质数) 对于给定的一列数1,2,n,构造一个和这列数相对应的一个位向量,记为mark,则:(1) 对于单处理机来说,算法如下:如图 CurrentPrime=2,Index=22,将该列数的位向量mark的所有元素置为0,即marki=0;If Current2n then 转向 Else Do markIndex =1,Index=Index+CurrentPrime Until Indexn找出向量mark中下一个值为零的元素,将其赋给Curr
2、entPrime,转向执行;所有mark值为零的位置所对应的元素即为质数,输出。(2)对于共享存储器的系统来说,每个空闲的处理机都根据存储器中的CurrentPrime来求自己序列中的质数,同时更改存储器中共享的CurrentPrime的值,从而达到通信的目的,其他同上面的算法。(3)对于处理机私有存储器的系统来说,P1寻找每一个质数,并且向所有其他处理器广播,然后各个处理机再从它的子列中寻找质数,方法同上。2The Sequential(连续的,结果的)algorithm (semigroup(半群), prefix computation, routing, broadcasting, s
3、orting) (20,21,23)(1)(2) (3)Packet Routing:一个处理机给另外一个处理机发送数据包;(4)Broadcasting:一个处理机给其他所有处理机发送数据包;(5)Sorting:处理机按照指定的顺序对数据进行重新排列。3Maximum-finding, Computing prefix sum on linear arrays (24,25)(在线性组上计算最大值,并行前缀和)(1)Maximum-finding:每个处理机都有一个初始值,目标是每个处理机都知道最大值是多少。每个处理机将本身的值都存在own中,每个处理机都存储一个本地变量max-thus-
4、far,记录迄今为止该处理机上所得到的最大值,其初始值是处理机本身的值。每一步中,每个处理机都向其左右邻居发送其数据,处理机接受到左右邻居的数据后,将其分别存储到left和right中,令max-thus-far=max(left,own,right)。最坏情况下,需要p-1个通讯步和p-1个值比较步即可完成。(2) Computing prefix sum:每个处理机上只有一个值时,初始,只有最左边的处理机是活跃的,将其值向右边的邻居发送,其有邻居接受到数据后变为活跃的,计算两者的和(即为该元素以前的prefix sum)并向其又邻居发送结果、变为不活跃,直至最右边一个处理机计算出最后pre
5、fix sum。处理机上有多个值时,每个处理机先对自身数据求前缀和,然后再对和求diminished前缀和,最后再将Local prefixes(自身及自身的和)同前面的diminished前缀和求和,即为相应元素的前缀和。4Odd-even sort on linear array (27)(在线性数组上的奇偶排序)当所有的关键值已经存储在各个处理机上,且一个处理机存一个数据时,可用Odd-even Sort。以升序排列为例,在奇数步骤,标号为奇数的处理器同其右侧的处理器进行比较,如果大于于其右侧处理器的数据,则进行交换,否则不做处理;在偶数步骤,标号为偶数的处理器同其右侧的处理器进行比较,
6、如果大于于其右侧处理器的数据,则进行交换,否则不做处理。这样处理的结果就是将数据按升序排列。对这种排序,有如下性能度量指标:最坏情况下,最大值在P0上,从而一直移动到最右边。 5Finding the rank of each 1s in a list of 0s and 1s (29)(前缀和的应用)利用求该序列的parallel prefix computation来实现。每个1的并行前缀和就是他在该0-1序列中的序号。6Packet routing on a tree (30)说明要路由的包的目的节点不在以self为根的子树上,所以应该向上路由,由其父节点来路由它。依赖于处理机节点的编号
7、模式。以前序遍历为例:按前序遍历的顺序对二叉树的节点进行编号,因此每个节点序号均小于其所有后代节点的序号,即根节点的序号是该子树中序号最小的。假定每个节点知道自己的序号(记为self),其做子树的最大序号为maxl,右子树的最大序号为maxr。则将包(在节点self上)从节点i路由到节点dest的算法为:7Find maximum value,computing prefix sum and shearsort on 2d mesh (33)(1)Find maximum value:首先对每一行求最大值(参考第3题),从而每行都存储了该行的最大值;其次对每一列求最大值,从而每列都存储了该列的
8、最大值。这样,所有的处理机都存储了这些元素的最大值。(2)computing prefix sum:假定处理机按行主序排列。在每行中computing prefix sum;在最右边一列computing diminished prefix sum;将最右边的结果值在相应行中向左广播,并且与先前求出的该位置处的row prefix sum求和。(3) shearsort:该算法在r行的2D mesh上需要阶段。除了最后一个阶段的所有阶段,先是所有行都独立地进行蛇形排序,即偶数行从左到右排序,奇数行从右到左排序,然后所有列都分别从上到下排序。最后一个阶段只将每行从左到右排序,或者所有行再进行一次
9、蛇形排序,得到结果即为以行序为主的排序序列。8SIMD vs. MIMD Architecture (45-52)(答案来自XX百科) (1)SIMD:单指令多数据流(Single Instruction Multiple Data)能够复制多个操作数,并把它们打包在大型寄存器的一组指令集以,异步方式,在同一时间内执行同一条指令。 SIMD在性能上的优势:以加法指令为例,单指令单数据(SISD)的CPU对加法指令译码后,执行部件先访问内存,取得第一个操作数;之后再一次访问内存,取得第二个操作数;随后才能进行求和运算。而在SIMD型的CPU中,指令译码后几个执行部件同时访问内存,一次性获得所有操
10、作数进行运算。这个特点使SIMD特别适合于多媒体应用等数据密集型运算。 (2)MIMD:多指令流多数据流(Multiple Instruction Multiple Data),它使用多个控制器来异步地控制多个处理器,从而实现空间上的并行性。传统的顺序执行的计算机在同一时刻只能执行一条指令(即只有一个控制流)、处理一个数据(即只有一个数据流),因此被称为单指令流单数据流计算机。而对于大多数并行计算机而言,多个处理单元都是根据不同的控制流程执行不同的操作,处理不同的数据,因此,它们被称作是多指令流多数据流计算机,即MIMD计算机。9PRAM cycle (53)一个PRAM cycle 包含以下
11、三个阶段:1 各个处理器访问存储器,通常不同处理器对应存储器的不同地址;2 各个处理器执行计算步骤;3 各个处理器将运算结果保存到存储器中。在实际应用中,存储器被分成不同的模块,并且对一个模块的同时访问是不允许的。处理机i在一个cycle内可以完成以下3个工作:在共享存储器si处取出操作指令;在本地寄存器中对数据执行计算操作;将结果存在共享内存的地址di处。 10PRAM submodel (61-62) 根据是否允许同时读写一个地址,PRAM模型被定义为四种子模型:EREW,排他读,排他写;ERCW,排他读,同时写;CREW,同时读,排他写;CRCW,同时读,同时写。其中,EREW是最现实的
12、一种子模型。各个子模型根据其计算能力有如下排序:EREW CREW CRCWEREW CREW CRCW-D CRCW-C CRCW-R 1,m1,分别单独合并偶数序号的子列和奇数序号的子列即可得到。再对w0:v1,w1:v2,进行比较并交换即可得到完全排序的结果序列。20Searching and Dictionary Operations(108-109)用p个处理机的PRAM在n个keys中寻找y。假定输入序列x按升序排序。Key y和位于序列中间或近似中间的Key xn/2 比较。若y= xn/2,则搜索结束;否则,若y xn/2,在xn/2+1到xn-1上搜索。该算法是优化的,没有另
13、外基于搜索的算法更快。其加速比:Speed-uplog2(p+1)21Mesh-Connected Computer (125-126)Mesh结构的连接度是常数4,下图是2D mesh处理机的一些线性排序模式。22Shearsort algorithm (128-130)(1)假定每个处理机有一个数据项,在行主序排列的2D mesh上的Shearsort 算法:将下面的两个操作重复次:蛇形排序各行,然后由上到下排序各列;根据结果要求,蛇形排序各行或者行主序排序各行。(2)通过0-1原则证明Shearsort algorithm的正确性:假定进行列排序时,先对列中的元素成对排序,再进行整列的排
14、序,则证明过程如下图:23Recursive(递归)Sorting algorithm (132-133)算法步骤:在四个小块上分别进行蛇形排序;分别按蛇形排序各行(合并一行);分别从上到下排列每一列;整体上按蛇形进行奇偶交换排序,用4步。具体的,如下图所示: x b + c + (a b)/2 + (d c)/2 A similar inequality for x leads to: x + x b + c + (a b)/2 + (d c)/2 + a + d + (b a)/2 + (c d)/2 b + c + a + d + (a b)/2 + (d c)/2+ (b a)/2 +
15、 (c d)/2 4 1/2= (a + a)/2 + (b + b)/2 + (c + c)/2 + (d + d)/2 2 4The number of dirty rows after Phase 3: x x 4Thus, at most 4 of the p elements are out of order along the overall snake24Routing Operation (140)(1)点对点通信:(2)聚合通信:(3)一些特殊的data routing操作:(步骤a)25Routing multiple packet on a linear array (1
16、42)每个包包含信息部分和目的地址部分,将其中的目的地址部分转化为一个有符号的偏移量,正号表示向右移动其绝对值个处理机,负号表示向左移动其绝对值个处理机。当处理机接收到数据包时的处理算法如下:if offset=0then remove the packetelseif offset0 then offset:=offset-1 ; send to right neighbor else offset:=offset+1; send to left neighborendifendif在线性数组上路由多个包时,需要根据同时在同一处理机上存在的包数来设置每个处理机的缓冲区的数目。26Data r
17、outing on a 2-D array (143)(1)如图所示,2D mesh上数据的路由按如下方式进行:按照目标列号的顺序以列主序排列各包,(?);向右移动包,使得每条记录都在正确的列上,由于每行最多有一条记录向相应的列移动,所以不会有冲突;在每一列中路由各包。(2)该算法并非最短路径路由算法。27Greedy Routing algorithm (144-145)Greedy是指每步中都沿着向目标地址前进了最大距离的方向移动。2D mesh上以行主序的贪婪路由算法:if 包不是在目的列上then 沿着行向目标列路由该包(处理机有足够的缓冲区容纳输入的信息数据)else 沿着列向目的节
18、点路由该包(在需要用到向上或向下的连接信息中,路由需要移动最大距离的包优先使用这些连接)endif时间复杂度:T=2P1/2-2(但是需要最大的缓冲区)Routing algorithms thus far(迄今为止)Slow 6p1/2, but with no conflict (no additional buffer)Fast 2p1/2, but with large node buffers28sorting on a 3D mesh(p172)在m*m*m mesh中,处理机(i,j,k)表示是在第i行,第j列和第k层的处理机,并且先按层(z)排序,同一层再按列(y)为主排序,即
19、按照zyx的顺序排序(最小的m2个元素在Layer 0上,且按列序为主排序,次小的m2个元素在Layer 1上,且按列序为主排序),下面是排序算法: 29Mesh with a global bus and semigroup computation(p179,180)带有一个全局总线的()mesh能在时间内完成semigroup computation,而不是用O()steps.假定半群操作时可交换的,把的mesh分为的小mesh,共个,一行一列均有个Phase1.求出各个submeshes的部分结果,结果存在每个子mesh的左上角的处理机上Phase2.在一个处理机上用串行算法对部分结果做结合运算,用全局总线传输数据Phase3.用全局总线广播结果30embedding concept(195)Fig. 13.2. Embedding a seven-node binary tree into 2D meshes of various sizes.31Embeding of array and tree(196)32Bitonic sorting on a hypercube(211)Sort lower (xq1 = 0) and upper (xq1 = 1) subcubes in opposite directions; yields a
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1