- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
图 10.16 不同算法影响树高的例子 首先从算术表达式的最直接形式出发,利用交换律把相同的运算集中在一起。再利用结合律把参加这些运算的操作数(称原子)配对,尽可能并行运算,从而组成树高最小的子树。最后,再把这些子树结合起来。例如,给定表达式 E2=a+b(c+def+g)+h 需 7 级运算,如图 7.17(a)所示。利用交换律和结合律改写为 E2=(a+h)+b((c+g)+def) 图 10.17 利用交换律和结合律降低树高 利用分配律进一步降低树高,在恰当平衡各子树的级数的情况下, 往往能收到较好的效果。例如上式,计算(c+g)的子树时只用一级,而计算def的子树要用 2 级,相加乘b需再增加 2 级。如果把b写进括号内,则计算bdef仍用 2 级已够,却省去了后来的一次乘b,使总级数由 5 减为 4。因此,将上式改写成 E2=(a+h)+(bc+bg)+bdef 图 10.18 利用交换律、结合律和分配律降低树高 表达式运算并行性的识别,除了依靠算法以外,还可以依靠编译程序。有一些编译算法可以经过或不经过逆波兰后缀表达式直接从给定的算术表达式产生能并行执行的机器指令。 例如, 给定算术表达式 Z=E+A*B*C/D+F 利用普通的串行编译算法, 产生三元指令组为 1 * A B 2 * 1 C 3 / 2 D 4 + 3 E 5 + 4 F 6 = 5 Z 指令之间都是相关的,需 5 级运算。如采用并行编译算法,则可得到能并行执行的三元指令组为 1 * A B 2 / C D 3 * 1 2 4 + E F 5 + 3 4 6 = 5 Z 分配给两个处理机, 只需 3 级运算。 2. 递归程序的并行性 (1) 给定向量 A=(a1, a2, …, an) B=(b1, b2, …, bn) 求欧几里得内积 A·B=a1b1+a2b2+…+anbn 这可归结为下列递归关系: (2) 计算多项式 pn=a0xn+a1xn-1+…+an-1x+an 写成霍纳法则形式,归结为下列递归关系: (3) 计算菲波纳西(Fibonacci)数列,可用下列递归关系: (4) 计算n位二进制数a=an…a1和b=bn…b1相加时的进位,可利用下列递归关系: c0=0 ci=ai∧bi∨(ai∨bi)∧ci-1, 1≤i≤n 以上这些线性递归的例子,可以归纳为下列线性递归普遍式: xi=0, i≤0 也可用矩阵形式表示为 或 X=C+AX 式中,C=(c1…cn)t称为常数向量;A是一个严格下三角矩阵, 称为系数矩阵;X=(x1…xn)t,称为结果向量;t表示向量转置。 在多处理机上求解这个线性递归普遍式,可以采取下面的方法。 第一种方法称为列扫算法,步骤如下: 第一步,先算x1=c1, 并将x1播送到其余各式,用(n-1)个处理机计算a21x1, a31x1, …,an1x1; 第二步,用(n-1)个处理机计算x2=c2+a21x1, c3+a31x1, …,cn+an1x1; 第三步,把x2播送到其余各式,用(n-2)个处理机计算a32x2,a42x2, …, an2x2; 第四步,用(n-2)个处理机计算x3=c3+a31x1+a32x2, …, cn+an1x1+an2x2; …… 第二种较快的并行算法称为乘积形式递归算法,它是根据严格下三角系数矩阵A的性质把线性递归普遍式X=C+AX写成下列形式: 例如,当n=4 时,式中右边括号内的值只有 4 种是不同的,需用 4 个处理机经 2 步同时算出,再用 2 个处理机经 3 步算出x3、x4的最后结果。总计起来,比上一算法少用了一步的时间,但多用了一个处理机。当n较大时,这个算法与上面的算法相比,快速性会更为明显,但处理机的数目也会增加较多。 给定程序段 DO 4 I=1, N 1 E(I)=3*F(I)+SIN(P(I)) 2 B(I)=D(I-1)+Q(I) 3 D(I)=E(I)+B(I) 4 CONTIUE 这个程序段的数据相关图示于图 7.19 中。实际上,语句 1 只是为语句 3 提供数据E(I),而且
原创力文档


文档评论(0)