并行处理复习题Answer全面文档格式.docx
《并行处理复习题Answer全面文档格式.docx》由会员分享,可在线阅读,更多相关《并行处理复习题Answer全面文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
(2)Computingprefixsum:
①每个处理机上只有一个值时,初始,只有最左边的处理机是活跃的,将其值向右边的邻居发送,其有邻居接受到数据后变为活跃的,计算两者的和(即为该元素以前的prefixsum)并向其又邻居发送结果、变为不活跃,直至最右边一个处理机计算出最后prefixsum。
②处理机上有多个值时,每个处理机先对自身数据求前缀和,然后再对和求diminished前缀和,最后再将Localprefixes(自身及自身的和)同前面的diminished前缀和求和,即为相应元素的前缀和。
4.Odd-evensortonlineararray(27)(在线性数组上的奇偶排序)
当所有的关键值已经存储在各个处理机上,且一个处理机存一个数据时,可用Odd-evenSort。
以升序排列为例,在奇数步骤,标号为奇数的处理器同其右侧的处理器进行比较,如果大于于其右侧处理器的数据,则进行交换,否则不做处理;
在偶数步骤,标号为偶数的处理器同其右侧的处理器进行比较,如果大于于其右侧处理器的数据,则进行交换,否则不做处理。
这样处理的结果就是将数据按升序排列。
对这种排序,有如下性能度量指标:
最坏情况下,最大值在P0上,从而一直移动到最右边。
5.Findingtherankofeach1sinalistof0sand1s(29)(前缀和的应用)
利用求该序列的parallelprefixcomputation来实现。
每个1的并行前缀和就是他在该0-1序列中的序号。
6.Packetroutingonatree(30)
说明要路由的包的目的节点不在以self为根的子树上,所以应该向上路由,由其父节点来路由它。
依赖于处理机节点的编号模式。
以前序遍历为例:
按前序遍历的顺序对二叉树的节点进行编号,因此每个节点序号均小于其所有后代节点的序号,即根节点的序号是该子树中序号最小的。
假定每个节点知道自己的序号(记为self),其做子树的最大序号为maxl,右子树的最大序号为maxr。
则将包(在节点self上)从节点i路由到节点dest的算法为:
7.Findmaximumvalue,computingprefixsumandshearsorton2dmesh(33)
(1)Findmaximumvalue:
首先对每一行求最大值(参考第3题),从而每行都存储了该行的最大值;
其次对每一列求最大值,从而每列都存储了该列的最大值。
这样,所有的处理机都存储了这些元素的最大值。
(2)computingprefixsum:
假定处理机按行主序排列。
①在每行中computingprefixsum;
②在最右边一列computingdiminishedprefixsum;
③将最右边的结果值在相应行中向左广播,并且与先前求出的该位置处的rowprefixsum求和。
(3)shearsort:
该算法在r行的2Dmesh上需要
阶段。
除了最后一个阶段的所有阶段,先是所有行都独立地进行蛇形排序,即偶数行从左到右排序,奇数行从右到左排序,然后所有列都分别从上到下排序。
最后一个阶段只将每行从左到右排序,或者所有行再进行一次蛇形排序,得到结果即为以行序为主的排序序列。
8.SIMDvs.MIMDArchitecture(45-52)(答案来自XX百科)
(1)SIMD:
单指令多数据流(SingleInstructionMultipleData)能够复制多个操作数,并把它们打包在大型寄存器的一组指令集以,异步方式,在同一时间内执行同一条指令。
SIMD在性能上的优势:
以加法指令为例,单指令单数据(SISD)的CPU对加法指令译码后,执行部件先访问内存,取得第一个操作数;
之后再一次访问内存,取得第二个操作数;
随后才能进行求和运算。
而在SIMD型的CPU中,指令译码后几个执行部件同时访问内存,一次性获得所有操作数进行运算。
这个特点使SIMD特别适合于多媒体应用等数据密集型运算。
(2)MIMD:
多指令流多数据流(MultipleInstructionMultipleData),它使用多个控制器来异步地控制多个处理器,从而实现空间上的并行性。
传统的顺序执行的计算机在同一时刻只能执行一条指令(即只有一个控制流)、处理一个数据(即只有一个数据流),因此被称为单指令流单数据流计算机。
而对于大多数并行计算机而言,多个处理单元都是根据不同的控制流程执行不同的操作,处理不同的数据,因此,它们被称作是多指令流多数据流计算机,即MIMD计算机。
9.PRAMcycle(53)
一个PRAMcycle包含以下三个阶段:
1各个处理器访问存储器,通常不同处理器对应存储器的不同地址;
2各个处理器执行计算步骤;
3各个处理器将运算结果保存到存储器中。
在实际应用中,存储器被分成不同的模块,并且对一个模块的同时访问是不允许的。
处理机i在一个cycle内可以完成以下3个工作:
①在共享存储器si处取出操作指令;
②在本地寄存器中对数据执行计算操作;
③将结果存在共享内存的地址di处。
10.PRAMsubmodel(61-62)
根据是否允许同时读写一个地址,PRAM模型被定义为四种子模型:
①EREW,排他读,排他写;
②ERCW,排他读,同时写;
③CREW,同时读,排他写;
④CRCW,同时读,同时写。
其中,EREW是最现实的一种子模型。
各个子模型根据其计算能力有如下排序:
EREW<
CREW<
CRCW
EREW<
CREW<
CRCW-D<
CRCW-C<
CRCW-R<
CRCW-P
11.DatabroadcastinginEREWPRAM(63-65)
(1)EREW广播的最简单形式是定义一个长度为p(处理机的个数)的广播向量B,然后令每个处理机访问相应的元素B[i]来得到属于它自己的复制值。
初始时,处理机i将其值写入B[0],再按下面的算法将其值写入B的所有元素中,最后由各个处理机来读出相应的值即可。
(2)上述算法中有很多无效的数据传输,因此可以改进为如下的one-to-all广播算法,只使有数据的处理机通信,从而减少通信次数。
(3)all-to-all广播:
令处理机j将其值写入B[j],从而在一个存储器访问步中,所有要广播的值都写入广播向量B。
接着在p-1存储器访问步中每个处理机读入其他p-1个值。
为了保证排他读,处理机j从B[j+1]开始读入数据,读到B[p-1]后返回读B[0]。
(4)用all-to-all广播来进行排序的方法:
对长度为p(p为处理机的个数)的向量S排序,令处理机j计算数据S[j]的大小序号R[j],然后将S[j]存到S[R[j]]。
R[j]定义为比S[j]小的数据元素的个数,它由各个处理机来检查所有其他元素中比S[j]小的元素个数得到。
12.SemigroupcomputationinCRCWEREWPRAM(66)
EREWPRAM模型上的semigroup计算,除了最后的一步广播外,与所有的其他PRAM模型都是一样的。
在该算法中,某一内存地址处的数u:
v表示该地址存储了X[u]到X[v]的所有输入值的半群计算结果。
初始时,S[i]存储了输入X[i],记为i:
i。
第一步,将邻接的元素做semigroup计算,从而除了S[0]以外,其他地址都存储了(i-1):
i;
第二步,s=2,计算结果进行存储….如此依次进行,最后结果在S[p-1]得到,再广播即可。
13.ParallelPrefixcomputation(68,69)
(1)可以利用EREWPRAM模型上Semigroup方法来进行ParallelPrefixComputation,如下图,所有部分prefix在S的前面各个元素中得到,阴影表示每步中前缀和是成对得到的。
(2)利用分治法求前缀和:
将问题看做两个子问题,分别计算奇数序号和偶数序号的结果。
①先将输入序列中两个连续的元素(x0和x1,x2和x3)求和,得到一个长为原序列一半的序列;
②该序列求前缀和得到所有奇数序号的元素的前缀和;
③再将每个偶数序号的元素和刚刚得到的它前面的那个奇数序号元素的前缀和求和即得到该偶数序号元素的前缀和。
时间复杂性为
。
(3)利用另一种分治法求前缀和:
将输入序列看做两个子序列,偶数序号的子列和奇数序号的子列。
在两个子列上单独进行前缀和运算,从而得到两部分前缀和。
在再将两部分前缀和中相邻的元素求和就得到了该位置元素的前缀和。
14.MatrixmultiplicationinPRAM(72,73)
(1)对有m2个处理机的PRAM模型,每个处理机计算结果矩阵的一个元素,即第(i,j)个处理机计算C中的第(i,j)个元素。
用m2个处理机的PRAM矩阵乘的算法(在CREW模型上):
(2)对于有m2个处理机的PRAM模型,每个处理机计算结果矩阵的一个行元素,即第i个处理机计算C的第i行,其算法为:
15.SequentialRank-basedselection(77-79)
在n个元素中找第k个大或第k个小的元素。
把n个数分为n/q段(q为常量),在每一小段中取其中间数,共有n/q个,再取这n/q个中间数的中间数(记为m),则将原序列分为3段。
例子:
Examplesforsequentialselectionfromaninputlistofsizen=25usingq=5
←−−−−−−−−−−−n/qsublistsofqelements−−−−−−−−−−−→
S6456715382103456217145495
---------------------------------------------
T63325
m3
1210211336456758456745495
-----------------------------------------------
LEG
|L|=7|E|=2|G|=16
Tofindthe5thsmallestelementinS,selectthe5thsmallestelementinL
S1210211
------------
T11
m1
0111122
-----------
LEGAnswer:
1
The9thsmallestelementofSis3
The13thsmallestelementofSisfoundbyselectingthe4th
smallestelementinG
S6456758456745495
----------------------------
T6555
m5
4444555556678679
-----------------------------
LEGAnswer:
4
16.Aparallelselectalgorithmandaselection-basedsortingalgorithm(80-82)
Example:
S:
6456715382103456217045495
Thresholdvalues:
m0=–∞
n/k=25/4≈6m1=PRAMselect(S,6,5)=2
2n/k=50/4≈13m2=PRAMselect(S,13,5)=4
3n/k=75/4≈19m3=PRAMselect(S,19,5)=6
m4=+∞
T:
-----2|------4|-----6|------
001112|2334444|555556|667789
17.Parallelradixsort(84)(进行基数排序)
(1)从LSB开始,轮流检查k位关键字。
第i步,检查第i位(
)。
关键字是0的所有记录都移到开头,是1的都移到序列的末尾,而与该位置具有相同值的记录的相对位置保持不变。
(2)每个记录的新位置可以由两个前缀和来得到。
第0位的反的diminishedprefixsum是第0位是0的记录的位置,而第0位正常的prefixsum用来计算第0位是1的每个记录相对于所输入的原始序列的最后一条记录的位置。
18.Somelow-castsortingnetwork(94)
Sortingnetwork的评价参数:
①Cost:
设计中用到的2-sorter的总个数;
②Delay:
关键路径上,从输入到输出所用到的2-sorter的个数。
19.Batchersortingnetworks(97-99)
Batchersortingnetworks可以基于(m,m’)merge,用even-oddmerge方法得到。
①(m,m’)是将两个长度分别为m与m’的已排序的序列合并成一个长为m+m’的排序的序列;
②odd-evenmerge:
若m=0或m’=0,不必做任何动作;
若m=m’=1,只需比较一次即可完成合并;
若m>
1,m’>
1,分别单独合并偶数序号的子列和奇数序号的子列即可得到。
再对w0:
v1,w1:
v2,…,进行比较并交换即可得到完全排序的结果序列。
20.SearchingandDictionaryOperations(108-109)
用p个处理机的PRAM在n个keys中寻找y。
假定输入序列x按升序排序。
Keyy和位于序列中间或近似中间的Keyx[n/2]比较。
若y=x[n/2],则搜索结束;
否则,若y<
x[n/2],在x0到x[n/2]-1上搜索;
若y>
x[n/2],在x[n/2]+1到xn-1上搜索。
该算法是优化的,没有另外基于搜索的算法更快。
其加速比:
Speed-up≈log2(p+1)
21.Mesh-ConnectedComputer(125-126)
Mesh结构的连接度是常数4,下图是2Dmesh处理机的一些线性排序模式。
22.Shearsortalgorithm(128-130)
(1)假定每个处理机有一个数据项,在行主序排列的2Dmesh上的Shearsort算法:
①将下面的两个操作重复
次:
蛇形排序各行,然后由上到下排序各列;
②根据结果要求,蛇形排序各行或者行主序排序各行。
(2)通过0-1原则证明Shearsortalgorithm的正确性:
假定进行列排序时,先对列中的元素成对排序,再进行整列的排序,则证明过程如下图:
23.Recursive(递归)Sortingalgorithm(132-133)
算法步骤:
①在四个小块上分别进行蛇形排序;
②分别按蛇形排序各行(合并一行);
③分别从上到下排列每一列;
④整体上按蛇形进行奇偶交换排序,用4
步。
具体的,如下图所示:
x≥b+c+(a–b)/2+(d–c)/2
Asimilarinequalityforx'
leadsto:
x+x'
≥b+c+(a–b)/2+(d–c)/2
+a'
+d'
+(b'
–a'
)/2+(c'
–d'
)/2
≥b+c+a'
+(a–b)/2+(d–c)/2
+(b'
)/2–4×
1/2
=(a+a'
)/2+(b+b'
)/2+(c+c'
)/2+(d+d'
)/2–2
≥
–4
ThenumberofdirtyrowsafterPhase3:
–x–x'
≤4
Thus,atmost4
ofthepelementsareoutoforderalongtheoverallsnake
24.RoutingOperation(140)
(1)点对点通信:
(2)聚合通信:
(3)一些特殊的datarouting操作:
(步骤a)
25.Routingmultiplepacketonalineararray(142)
每个包包含信息部分和目的地址部分,将其中的目的地址部分转化为一个有符号的偏移量,正号表示向右移动其绝对值个处理机,负号表示向左移动其绝对值个处理机。
当处理机接收到数据包时的处理算法如下:
ifoffset=0
thenremovethepacket
elseifoffset>
thenoffset:
=offset-1;
sendtorightneighbor
elseoffset:
=offset+1;
sendtoleftneighbor
endif
在线性数组上路由多个包时,需要根据同时在同一处理机上存在的包数来设置每个处理机的缓冲区的数目。
26.Dataroutingona2-Darray(143)
(1)如图所示,2Dmesh上数据的路由按如下方式进行:
①按照目标列号的顺序以列主序排列各包,…(?
);
②向右移动包,使得每条记录都在正确的列上,由于每行最多有一条记录向相应的列移动,所以不会有冲突;
③在每一列中路由各包。
(2)该算法并非最短路径路由算法。
27.GreedyRoutingalgorithm(144-145)
Greedy是指每步中都沿着向目标地址前进了最大距离的方向移动。
2Dmesh上以行主序的贪婪路由算法:
if包不是在目的列上
then沿着行向目标列路由该包(处理机有足够的缓冲区容纳输入的信息数据)
else沿着列向目的节点路由该包
(在需要用到向上或向下的连接信息中,路由需要移动最大距离的包优先使用这些连接)
时间复杂度:
T=2P1/2-2(但是需要最大的缓冲区)
Routingalgorithmsthusfar(迄今为止)
Slow6p1/2,butwithnoconflict(noadditionalbuffer)
Fast2p1/2,butwithlargenodebuffers
28.sortingona3Dmesh(p172)
在m*m*mmesh中,处理机(i,j,k)表示是在第i行,第j列和第k层的处理机,并且先按层(z)排序,同一层再按列(y)为主排序,即按照zyx的顺序排序(最小的m2个元素在Layer0上,且按列序为主排序,次小的m2个元素在Layer1上,且按列序为主排序),下面是排序算法:
29.Meshwithaglobalbusandsemigroupcomputation(p179,180)
带有一个全局总线的
(
)mesh能在
时间内完成semigroupcomputation,而不是用O(
)steps.假定半群操作时可交换的,
把
的mesh分为
的小mesh,共
个,一行一列均有
个
Phase1.求出各个
submeshes的部分结果,结果存在每个子mesh的左上角的处理机上
Phase2.在一个处理机上用串行算法对部分结果做结合运算,用全局总线传输数据
Phase3.用全局总线广播结果
30.embeddingconcept(195)
Fig.13.2.Embeddingaseven-nodebinarytreeinto2Dmeshesofvarioussizes.
31.Embedingofarrayandtree(196)
32.Bitonicsortingonahypercube(211)
Sortlower(xq–1=0)andupper(xq–1=1)subcubesinoppositedirections;
yieldsa