- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
93SIMD互连网络模型的并行算法
9.3 SIMD互连网络模型的并行算法
(一) 网孔上的随机序列搜索算法
给定一整数序列S=(s1,…,sn)和一整数x,S不一定有序且各元素不一定相异,确定S中是否有数等于x。
在网孔连接的SIMD机器上,令si,j表示P(i,j)中保存的记录的s域,指定P(1,1)为输入和输出端口。
算法思想:
展开:
P(1,1)读取x (如x=s1,1则产生输出b1,1=1,否则为0),(b1,1,x)与P(1,2)通信 (如x=s1,2或b1,1=1则b1,2=1,否则为0),两个相邻行之间,P(1,1)和P(1,2)分别同时发送(b1,1,x)和(b1,2,x)给P(2,1)和P(2,2),一旦计算出b2,1和b2,2则两个相邻列之间P(1,2)和P(2,2)分别同时发送(b1,2,x)和(b2,2,x)给P(1,3)和P(2,3),…,这种行列交替的展开过程一直继续到x到达P(,)为止;
折叠:
展开结束后,每个处理器都有机会看到x,并将其与自己保存的s相比较,折叠式展开的逆过程,即输出响应位经逐行、逐列,以交替方式自右至左,自底至上回收到P(1,1)。
并行算法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 算法9.3.1 串行输入和输出的网孔上的搜索算法
输入:随机序列S=(s1,…,sn)和x
输出:若si,j=x,则bi,j=1,否则为0
MESH SEARCH(S,x,k)
{
/*P(1,1)读取输入*/
if(x==s1,1) {b1,1(1;}
else {b1,1(0;}
/*展开*/
for(i=1;i=;i++)
{
par for(j=1;j=i;j++)
{
P(j,i)发送(bj,i,x)给P(j,i+1);
if(x==sj,i+1 || bj,i==1) {bj,i+1(1;}
else {bj,i+1(0;}
}
}
par for(j=1;j=i+1;j++)
{
P(i,j)发送(bi,j,x)给P(i+1,j);
if(x==si+1,j || bi,j==1) {bi+1,j(1;}
else {bi+1,j(0;}
}
/*折叠*/
for(;i=2;i--)
{
par for(j=1;j=i;j++)
{
P(j,i)发送bi,i给P(j,i-1);
}
par for(j=1;j=i-1;j++)
{
bj,i-1(bj,i;
}
if(bi,i-1==1 || bi,i==1) {bi,i-1(1;}
else {bi,i-1(0;}
par for(j=1;j=i-1;j++)
{
P(i,j)发送bi,j给P(i-1,j);
}
par for(j=1;j=i-2;j++)
{
bi-1,j(bi,j;
}
if (bi-1,i-1==1 || bi,i-1==1) {bi-1,i-1(1;}
else {bi-1,i-1(0;}
}
/*P(1,1)产生输出*/
if(b1,1==1) {answer(yes;}
else {answer(no;}
} 在网孔上的随机序列搜索算法中,读取和输出各取常数时间,展开和折叠共迭代次,每次取常数时间,所以提问(即确定S中是否有数等于x)的时间为。因为展开的第一次迭代之后,P(1,1)已空闲,它就可接受新的提问;在相继迭代过程中,其它处理器也有类似情况,所以提问可以流水线方式处理。
例9_5 令一个16记录的文件已存在4×4网孔连接的SIMD机器中。图9_15(a)中每个方块代表一个处理器,其内的数字是有关记录的s域。现在欲决定是否存在一个s域等于15 (即x=15)的记录。图9_15(b)~(h)图示了在阵列中15的传播过程。图9_15(i)示出算法第(2)步结束时有关的b值。图9_15(j)到(o)图示了折叠过程。图9_15(p)示出第(4)步产生的结果。注意,图9_15(e)处理器P(1,1)已空,指明它已完成了传播15的工作且现在可接受新的提问了。
1
2
3
4
8
7
6
5
9
10
11
12
16
15
14
13
(a) 15
15
15
15
(b) 15
15
15
15
(c) 15
15
15
15
15
15
(d)
15
15
15
15
15
15
文档评论(0)