- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
并行迭代算法的设计与实现
仲恺农业工程学院实验报告纸
计算机科学与工程学院(院、系)网络工程 专业 083 班 并行计算运用与实践 课
学号 200810224311 姓名 李志冬 实验日期 2011/6/9 教师评定
实验六 并行迭代算法的设计与实现
实验目的
了解并行迭代算法的原理以及掌握并行迭代算法的编程方法。
实验内容
编写并运行高斯-塞德尔迭代并行算法
实验步骤
1 了解算法原理
在并行计算中,高斯-塞德尔迭代采用与雅可比迭代相同的数据划分。对于高斯-塞德尔迭代,计算xi的新值时,使用xi+1, …,xn-1的旧值和x0, …,xi-1的新值。计算过程中xi与x0, …,xi-1及xi+1, …,xn-1的新值会在不同的处理器中产生,因此可以考虑采用时间偏移的方法,使各个处理器对新值计算的开始和结束时间产生一定的偏差。编号为my_rank的处理器一旦计算出xi(my_rank×m ≤ i (my_rank+1)×m)的新值,就立即广播给其余处理器,以供各处理器对x的其它分量计算有关xi的乘积项并求和。当它计算完x的所有分量后,它还要接收其它处理器发送的新的x分量,并对这些分量进行求和计算,为计算下一轮的xi作准备。计算开始时,所有处理器并行地对主对角元素右边的数据项进行求和,此时编号为0的处理器(简称为P0)计算出x0,然后广播给其余处理器,其余所有的处理器用x0的新值和其对应项进行求和计算,接着P0计算出x1,x2, …,当P0完成对xm-1的计算和广播后,P1计算出xm,并广播给其余处理器,其余所有的处理器用xm的新值求其对应项的乘积并作求和计算。然后P1计算出xm+1,xm+2, …,当P1完成对x2*m-1 的计算和广播后,P2计算出x2*m …,如此重复下去,直至xn-1在Pp-1中被计算出并广播至其余的处理器之后,P0计算出下一轮的新的x0,这样逐次迭代下去,直至收敛为止。具体算法框架描述如下:
算法 求解线性方程组的高斯-塞德尔迭代并行算法
输入:系数矩阵An×n,常数向量b n×1,ε,初始解向量xn×1
输出:解向量xn×1
Begin
对所有处理器my_rank(my_rank=0,…, p-1)同时执行如下的算法:
(1)for i=my-rank* m to (my-rank+1)*m-1 do
/*所有处理器并行地对主对角元素右边的数据求和*/
(1.1)sum[i]=0.0
(1.2)for j=i+1 to n-1 do
sum[i]=sum[i]+a[i,j]*x[j]
end for
end for
(2)while (totaln) do /*total为新旧值之差小于ε的x的分量个数*/
(2.1) iteration=0
/* iteration 为本处理器中新旧值之差小于ε的x的分量个数*/
(2.2)for j=0 to n-1 do /*依次以第0,1, …, n-1行为主行*/
(i) q=j/m
(ii)if (my_rank=q) then /*主行所在的处理器*/
temp= x[j], x[j]= (b[j]- sum[j])/a[j,j] /* 产生x(j)的新的值*/
if (│x[j]-temp│ε) then iteration= iteration +1 end if
将x[j]的新值广播到其它所有处理器中
/*对其余行计算x[j]所对于的内积项并累加*/
sum[j]=0
for i=my-rank* m to (my-rank+1)*m-1 do
if (j ≠ i) then
sum[i]=sum[i]+a[i,j]*x[j]
end if
end for
else /*其它处理器*/
接收广播来的x[j]的新值
/*对所存各行计算x[j]所对于的内积项并累加*/
for i=my-rank* m to (my-rank+1)* m-1 do
sum[i]=sum[i]+a[i,j]*x[j]
end for
end if
end for
(2.3)用Allreduce操作求出所有处理器中iteration值的和total并广播到所有处理器中
end while
End
若取一次乘法和加法运算时间或一次比较运算时间为一个单位时间。在算法开始阶段,各处理器并行计算主对角线右边元素相应的乘积项并求和,所需时间mn-(1+m)m/2,进入迭代计算后,虽然各个处理器所负责的x的分量在每一轮计算中的开始时间是不一样的,但一轮迭代中的计算量都是相等的,因此不妨取0号处理器为对象分析一
您可能关注的文档
最近下载
- 高校企业产学研合作协议范本.doc VIP
- 2024-2025学年河南省百师联盟高二年级上册10月联考数学试题(含答案).pdf VIP
- 企业与高校产学研合作协议(产学研合作协议范本).docx VIP
- 蟋蟀的住宅-课堂演示课件.ppt VIP
- 《环境化学导论》课件.ppt VIP
- 商务统计学第八章习题chap08-TIF-BSAFC5.pdf
- A级景区安全风险辨识评估标准清单.docx VIP
- 南方GPS静态测量及数据处理(实例).pdf VIP
- 新22J07 室外工程-标准图集.docx VIP
- DB32/T 3545.7-2024血液净化治疗技术管理 第7部分:血液透析用水卫生检测规范.pdf VIP
文档评论(0)