网站大量收购独家精品文档,联系QQ:2885784924

9.4MIMD共享存储模型的并行算法讲述.doc

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
9.4MIMD共享存储模型的并行算法讲述

PAGE  PAGE 21 MIMD共享存储模型的并行算法 异步枚举排序算法 枚举排序(Enumeration Sort)是一种最简单的排序算法,通常也称为秩排序(Rank Sort)。对于基于枚举比较原理的异步排序算法,为了排序n个数的序列S= (x1,x2,…,xn) ,算法要生成n个进程。进程i (1≤i≤n)将xi与S中其余元素进行比较,并且使用局部变量k及下所有小于xi的元素的数目。当所有的比较都完成时,就将xi置入排序序列中的k+1的位置上,因此每个进程都可能彼此独立地执行,而无通信的要求。令X是存在共享存储器中长度为n的数组,开始时放入被排序的序列,当算法结束时,结果置于共享存储器中的T数组内,变量i,j,k是算法生成的每个进程的局部变量[1007]。该并行算法的描述如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20算法9.4.1 MIMD-CREW模型上的异步枚举排序算法 输入: S= (x1,x2,…,xn)置于共享存储器的X数组中 输出:已排序的序列置于共享存储器的T数组中 ENUER SORT { for(i=1;i=n;i++) { Create Process i; } Process i: k=0; for(j=1;j=n;j++) { if(X(i)X(j)) { k?k+1; } elseif((X(i)==X(j) ij)) { k?k+1; } } T(k+1)=X(i); }在该并行算法中有,由于每个处理器至多确定数组X中的个元素的位置,而每确定一个元素的位置需O(n)时间,因此对X进行排序需×O(n)时间。 例9_8设S=(8,6,6,9,7),p(n)=2。创建进程的过程中,假定由P1生成5个进程,此后所有的进程均等待开始。假定使用“先进先出”的调度策略。进程1和2分别由P1和P2执行,它们同时计算元素8和6的次第,然后将其分别置于T数组的相应位置上,如图9_19 (a)所示。欲知下一进程有哪一个处理器启动执行,需研究进程1和2的执行时间。假定比较操作和赋值操作大致用相同的时间,当执行X(i)X(j), X(i)=X(j) 和ij以及k=0 ,k=k+1和T(k+1)=X(i)时,进程1和2分别需要14和17各时间步,如图9_19 (b)所示。所以进程3应由P1启动执行,之后3个时间步P2启动执行进程4。这两个进程负责将元素6和9分别置于数组T的相应位置上,此时进程3需要18个时间步,进程4需要13个时间步,所以进程4比进程3早结束。下一进程5由P2启动。之后当进程3执行完后,因无等待的进程,所以P1变为空闲。当进程5执行15个时间步后,元素7便放到数组T的相应位置上。算法总共需要45个时间步。 (a) 数组T的变化过程 (b) 进度调度图9_19 异步枚举排序数组变化及进程调度 单源点最短路径并行算法 假设一有向图各边赋于非负整数,某条路径的长度就是沿该路径所有边权之和。最短路径问题,就是对每一点对i和j,丘照期间任何最短长度的路径。单源点最短路径,即在一个图中寻找从一个指定顶点到所有其他定点的最短路径。 (a) 单处理机上的Moore算法。 在Moore算法中,设源点为s∈V。从s到其他各顶点的最短路径长度用一维数组dist存储。首先置dist(s)=0,dist(v)=∞,其中v≠s,且v∈V。算法使用了一个队列queue。开始执行时队列中仅含有源点s;以后每次只要队列非空,就将排头顶点u从队列中移去,令其作为本次搜索的顶点,然后检查u的所有射出边(u,v)∈E:若dist(u)+w(u,v)dist(v),则此时就找到了一条从s到v的更短路径,置dist(v)=dist(u)+w(u,v);若v不再搜索队列中,则把v加到队尾。如此重复进行,直到整个待搜索队列空时,算法就终止。 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算法9.4.2_1 SISD机器上的单源点最短路径算法 输入:有向加权图G(V,E)的权矩阵 输出:从源s到其余顶点i (i≠s)的最短路径dist(i), i∈V SISD SHORTEST PATH { (1)for(i=1;i=n;i++) /*初始化*/ { INITIALIZE(i); } (2)将s插入队列queue中; (3)while(队列非空) {SEARCH;} } Status SEARCH { (3.1)dequeue vertex u; /*从队列中删去顶点u*/ (3.2)for(each edge(u,v)∈E) {

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档