MPI编程环境配置与示例_第1页
MPI编程环境配置与示例_第2页
MPI编程环境配置与示例_第3页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录一. 系统安装2.1. 下载地址2.2. 安装步骤2.3. VisualStdio设置2.二. 实验程序3.1. 简单的MPI编程示例3.2. 消息传递MPI编程示例14.3. 消息传递MPI编程示例25.4. MonteCarlo方法计算圆周率7.5. 计算积分.9.三. 心得体会1.0一.系统安装1. 下载地址FTP匿名登陆,在pub/mpi/nt文件夹中安装步骤1)在安装有MPI的计算机上要建立一个有管理员权限的账户,不可以没有密码;2)双击exe文件,按默认设置安装MPI;3)注册MPI账户,调用MPIRegister.exe用户名和密码即为第一步中的账户。2. VisualStd

2、io设置为避免每新建一个项目都要设置一次,可以对它进行通用设置。打开视图-其他窗口-属性管理器,点击Debug|Win32目录下的,在VC+阳录下的包含目录中添加MPICF的Include路径,库目录中添加MPICH的Lib路径;在链接器-输入目录下的附加依赖项中添力卩mpich.lib、mpe.lib、mped.lib、mpichd.lib。二.实验程序1.简单的MPI编程示例1)源代码#inelude<mpi.h>#include<stdio.h>intmain(intargc,char*argv)intnum,rk;MPI_Init(&argc,&

3、argv);MPI_Comm_size(MPI_COMM_WORLD,&num);MPI_Comm_rank(MPI_COMM_WORLD,&rk);printf("HelloworldfromProcess%dof%dn",rk,num);MPI_Finalize();return0;2)运行截图伺guTvIPIRjn2.消息传递MPI编程示例11)源代码#inelude<mpi.h>#include<stdio.h>intmain(intargc,char*argv)intmyid,numprocs,source;MPI_Stat

4、usstatus;charmessages100;MPI_Init(&argc,&argv);MPI_Comm_size(MPI_COMM_WORLD,&numprocs);MPI_Comm_rank(MPI_COMM_WORLD,&myid);if(myid!=0)strcpy(messages,"HelloWorld!");MPI_Send(messages,strlen(messages)+1,MPI_CHAR,0,99,MPI_COMM_WORLD);elsefor(source=1;source<numprocs;source

5、+)MPI_Recv(messages,100,MPI_CHAR,source,99,MPI_COMM_WORLD,&status);printf("Iamprocess%dIrecvstring'%s'fromprocess%dn",myid,messages,source);MPI_Finalize();return0;2)运行截图3.消息传递MPI编程示例21)源代码#include<stdio.h>#include<mpi.h>#include<math.h>#defineN1002intmain(inta

6、rgc,char*argv)intmyid,numprocs,C=0;doubledataN,SqrtSum=0.0;_doubled;for(inti=0;i<N;i+)datai=i;MPI_Statusstatus;MPI_Init(&argc,&argv);_MPI_Comm_rank(MPI_COMM_WORLD,&myid);MPI_Comm_size(MPI_COMM_WORLD,&numprocs);-numprocs;if(myid=0)for(inti=0;i<N;+i)MPI_Send(&datai,1,MPI_DOUB

7、LE,i%numprocs+1,1,MPI_COMM_WORLD);for(intsource=1;source<=numprocs;+source)MPI_Recv(&d,1,MPI_DOUBLE,source,99,MPI_COMM_WORLD,&status);SqrtSum+=d;elsefor(inti=myid;i<N;i=i+numprocs)MPI_Recv(&d,1,MPI_DOUBLE,0,1,MPI_COMM_WORLD,&status);SqrtSum+=sqrt(d);+C;MPI_Send(&SqrtSum,1,M

8、PI_DOUBLE,0,99,MPI_COMM_WORLD);printf("Iamprocess%d.Irecvtotal%dfromprocess0,andSqrtSum=%f.n",myid,C,SqrtSum);_MPI_Finalize();_return0;2)运行截图QLiiM-IRLjn回Ell.AdvujCtdNlLlit«TOf25Cpr?cc?sOjardSqrtSun-5278-2T3265+衍fromprocess口andScirtSuii=53TO,581309,E5frrprocess0.ar:1WqrtSUn=F?&g.73

9、7055.0frmtxuke0;find5町廿1皿=21W斗囲FIFJF,1frotnrn.-JandSqi"tSmi=£265,日B3S5EFileEditViewHelpA»niicati<e:VorkSpaccgsdisxftriubivPcbnpiLabi.:dJIprpces=4+ItQtal:3JIprocess£Irecvtotal:日JIprocess2.Irecv丁cmprocca?0,177亡匸¥tctal-BJlpro匚i旨吕1.1TECVtotaluijtttii4.MonteCarlo方法计算圆周率1)源代码#i

10、nclude"mpi.h"#include<stdio.h>#include<stdlib.h>intmain(intargc,char*argv)intmyid,numprocs;intsource;longcount=1000000;MPI_Statusstatus;MPInit(&argc,&argv);MPI_Comm_rank(MPI_COMM_WORLD,&myid);MPI_Comm_size(MPI_COMM_WORLD,&numprocs);srand(myid);doubley,x,pi=0.0,n

11、=count;longm=0,m1=0,i=0,p=0;for(i=0;i<count;i+)x=(double)rand()/(double)RAND_MAX;y=(double)rand()/(double)RAND_MAX;if(x-0.5)*(x-0.5)+(y-0.5)*(y-0.5)<0.25)+m;pi=4.0*m/n;printf("Process%dof%pi=%fn",myid,numprocs,pi);if(myid!=0)MPI_Send(&m,1,MPI_DOUBLE,0,1,MPI_COMM_WORLD);elsep=m;fo

12、r(source=1;source<numprocs;source+)MPI_Recv(&m1,1,MPI_DOUBLE,source,1,MPI_COMM_WORLD,&status);p=p+m1;printf("pi=%fn",4.0*p/(n*numprocs);MPI_Finalize();return0;2)运行截图5.计算积分1)源代码#defineN100000000#definea0#defineb10#include<stdio.h>#include<stdlib.h>#include<time.h&g

13、t;#include"mpi.h"intmain(intargc,char*argv)intmyid,numprocs;inti;_doublelocal=0.0,dx=(double)b-(double)a)/(double)N;doubleinte,x;MPI_Init(&argc,&argv);_MPI_Comm_rank(MPI_COMM_WORLD,&myid);_MPI_Comm_size(MPI_COMM_WORLD,&numprocs);for(i=myid;i<N;i=i+numprocs)x=a+i*dx+dx/2;local+=x*x*dx;MPI_Reduce(&local,&inte,1,MPI_DOUBLE,MPI_SUM,0,MPI_COMM_WORLD);_if(myid=0)printf("Theintegalofx*xinregion%d,%d=%16.15fn",a,b,inte);MPI_Finalize();return0;2)运行截图理guiMPIRun*'=|旦JFileEditView.HelpAfP-liatitorkScaceVS201ILaD1DeJugTPZLL.ei-eMuibcr|3-?-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论