中科大并行程序实验报告.docVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
并行程序设计实验报告 公共部分 1.用MPI_Send、MPI_Recv实现MPI_Bcast、MPI_Alltoall、MPI_Gather、MPI_Scatter等MPI群及通信函数功能。 _MPI_Bcast: 程序运行结果如下 伪代码如下: _MPI_Bcast(sendbuf, sendcount, sendtype, root, comm) 对每个处理器执行以下算法 if my_rank = root then for i = 0 to p do //p为进程个数 MPI_Send(sendbuf, sendcount, sendtype, i, root, comm) //root向每个进程发送消息 end for end if //每个进程从root接收带有root标签的消息,接受信息存在各自的sendbuf中 MPI_Recv(sendbuf, sendcount, sendtype, root, root, comm., status) _MPI_Scatter: 将字符串”abcdefgh”以进程2为根散播出去,程序运行结果如下: 伪代码如下: _MPI_Scatter(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, root, comm) 各处理器执行以下算法 if my_rank = root then for i = 0 to sendcount do MPI_Send(sendbuf + i, 1, sendtype, i , root, comm) //将sendbuf中的信息按进程标识顺序发送给各个进程 end for end if //每个进程从root处接收各自的消息,并存在recvbuf中第root号位置 MPI_Recv(recvbuf + root, 1, recvtype, root, root, comm., status) _MPI_Alltoall: 进程0到进程5存储的数据分别为”000000”到”555555”,经全局交换之后运行结果如下: 伪代码如下: _MPI_Alltoall(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm) 对每个处理器执行以下代码: for i = 0 to p-1 _MPI_Scatter(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, i, comm) //_MPI_Scatter即为前一个程序的伪代码 //Alltoall就是每一个进程都以自己为root执行一次Scatter end for _MPI_Gather: 将四个进程的第3个字符汇聚到进程2,执行结果如下: 伪代码如下: _MPI_Gather(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, root, comm) 对每个进程执行以下代码 MPI_Send(sendbuf, sendcount, sendtype, root, root, comm) if my_rank = root then for i = 0 to p-1 do MPI_Recv(recvbuf + i, recvcount, recvtype, i, root, comm., status) end for end if 2. LU分解的MPI实现(顺序划分) 5个节点、处理9x9矩阵时运行结果如下: 伪代码如下: 输入:矩阵A(nxn) 输出:下三角矩阵L(nxn),上三角矩阵U(nxn) Begin 对所有处理器my_rank(0..p-1)同时执行如下算法: for i = 0 to m-1 do //对处理器的各行************** for j = 0 to p-1 do if(my_rank = j) then v = j * m + i; //当前主行************************ for k = v to n do f[k] = a[i, k] end for else v = j*m + i; //当前主行************************ 接收主行所在处理器广播来的主行元素 End if if(my_rank = j) then //编号为j的处理器对其i+1行以后各行进行变换 for k= i+1 to m-1 do a

文档评论(0)

youyang99 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档