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|------
T:
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],则搜索结束;否则,若yx[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'+d'+(a–b)/2+(d–c)/2
+(b'–a')/2+(c'–d')/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>0
thenoffset:
=offset-1;sendtorightneighbor
elseoffset:
=offset+1;sendtoleftneighbor
endif
endif
在线性数组上路由多个包时,需要根据同时在同一处理机上存在的包数来设置每个处理机的缓冲区的数目。
26.Dataroutingona2-Darray(143)
(1)如图所示,2Dmesh上数据的路由按如下方式进行:
①按照目标列号的顺序以列主序排列各包,…(?
);②向右移动包,使得每条记录都在正确的列上,由于每行最多有一条记录向相应的列移动,所以不会有冲突;③在每一列中路由各包。
(2)该算法并非最短路径路由算法。
27.GreedyRoutingalgorithm(144-145)
Greedy是指每步中都沿着向目标地址前进了最大距离的方向移动。
2Dmesh上以行主序的贪婪路由算法:
if包不是在目的列上
then沿着行向目标列路由该包(处理机有足够的缓冲区容纳输入的信息数据)
else沿着列向目的节点路由该包
(在需要用到向上或向下的连接信息中,路由需要移动最大距离的包优先使用这些连接)
endif
时间复杂度:
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