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

下载本文档

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

文档简介

1、目录一 . 系统安装21. 下载地址2.2. 安装步骤2.3. Visual Stdi o 设置2.二. 实验程序31. 简单的MPI 编程示例 3.2. 消息传递MPI编程示例1 4.3. 消息传递MPI编程示例2 6.4. Monte Carlo 方法计算圆周率 9.5. 计算积分 1.2.三. 心得体会 1.4.编辑版一.系统安装1. 下载地址FTP 匿名登陆 在 pub/mpi/nt 文件夹中2. 安装步骤1)在安装有MPI的计算机上要建立一个有管理员权限的账户,不可以没有密码;2)双击exe文件,按默认设置安装MPI ;3)注册MPI账户,调用 MPI

2、Register.exe用户名和密码即为第一步中的账户3. Visual Stdio 设置为避免每新建一个项目都要设置一次,可以对它进行通用设置。打开视图-其他窗口 -属性管理器,点击Debug|Wi n32目录下的Microsoft.Cpp.Wi n32.use,在 VC+ 目录下的包含目录中添加 MPICH 的 In elude路径,库目录中添加MPICH的Lib路径;在链接器-输入目录下的附加依赖项中添力卩 mpich.lib、mpe.lib、mped.lib、mpichd.lib。npich.lib亠mpeJib mpcdJib mpichd.lib魅承的值:kerncl32Jibus

3、erSZlibgdi2.lib winspocljib comcllg32.lib閱从空谢或血冃戢认IS维礙确走取消实验程序1.简单的MPI编程示例 1)源代码#in elude #i nclude int main (i nt argc, char* argv)int nu m, rk;MPI_Init(&argc, &argv);MPI_Comm_size(MPI_COMM_WORLD, &n um);MPI_Comm_ra nk(MPI_COMM_WORLD, & rk);prin tf(Hello world from Process %d of %dn, rk, nu m);MPI_

4、Fi nalize();return 0;2)运行截图2.消息传递MPI编程示例11)源代码#in elude #include int main (i nt argc, char* argv)int myid, nu mprocs,source;MPI_Status status;char messages100;MPI_Ini t(&argc, &argv);MPI_Comm_size(MPI_COMM_WORLD, &n umprocs);MPI_Comm_ra nk(MPI_COMM_WORLD, &m yid);if (myid != 0)strcpy(messages, Hello

5、 World!);MPI_Se nd(messages, strle n( messages) + 1, MPI_CHAR, 0, 99, MPI_COMM_WORLD);elsefor (source = 1; source nu mprocs; source+)MPI_Recv(messages, 100, MPI_CHAR, source, 99, MPI_COMM_WORLD,&status);prin tf(I am process %d I recv stri ng %s fromprocess %dn, myid, messages, source);MPI_Fi nalize(

6、);return 0;2)运行截图列 yu MPIRun3. 消息传递MPI编程示例21)源代码#i nclude #in clude #in clude#define N 1002int main (i nt argc, char* argv)int myid, nu mprocs, C = 0;double dataN, SqrtSum=0.0;_double d;for (int i = 0; i N; i+)datai = i;MPI_Status status;MPI_I nit(&argc, & argv);_MPI_Comm_ra nk(MPI_COMM_WORLD, &m yi

7、d);MPI_Comm_size(MPI_COMM_WORLD, &n umprocs);-nu mprocs;if (myid = 0)for (i nt i = 0; i N; +i)+ 1,1,MPI_Se nd(&datai, 1, MPI_DOUBLE, i% nu mprocs MPI_COMM_WORLD);for (int source = 1; source = nu mprocs; +source)MPI_Recv(&d, 1, MPI_DOUBLE, source, 99, MPI_COMM_WORLD, & status);SqrtSum += d;elsefor (i

8、nt i = myid; i N; i = i + nu mprocs)MPI_Recv(&d, 1, MPI_DOUBLE, 0, 1,MPI_COMM_WORLD, & status);SqrtSum += sqrt(d);+C;MPI_Se nd(&SqrtSum, 1, MPI_DOUBLE, 0, 99,MPI_COMM_WORLD);prin tf(I am process %d. I recv total %d from process 0, andSqrtSum=%f.n, myid, C, SqrtSum);_MPI_Fi nalize();_return 0;2)运行截图回

9、File EditNiiiiter ofqn MPIRjnAUDlicati E:Workspacev520lGWILjblVPcbulWILabl. exe:QJlprecess4+JtQ-tal250f r:3 JIprocessNIreevtotal和cess:3 JIprocessNIcessIcmPF0CC350,1T亡亡V*ofnl0 froTi proc亡耳呂 OBJlpro匚i旨吕!.ITECVtol a 1251frorprocrs需 ad Squt9m=52!7g.旷田陆+ 口 and SqiSun-53TCi.G 步日Eq

10、rtSUa-5262.時疋目瓦 anrl 5qr-tSun=ZL05rr. 455S3?.nd SartSjn-=52S5, !- fi3&5S,4. Mon te Carlo方法计算圆周率1)源代码#i nclude mpi.h#include #include int main (i nt argc, char *argv)int myid, nu mprocs;int source;long count = 1000000;MPI_Status status;MPIni t(&argc, & argv);MPI_Comm_ra nk(MPI_COMM_WORLD, &m yid);MPI

11、_Comm_size(MPI_COMM_WORLD, &n umprocs);sran d(myid);double y, x, pi = 0.0, n = count;long m = 0, m1 = 0, i = 0, p = 0;for (i = 0; ico unt; i+)x = (double)ra nd() / (double)RAND_MAX;y = (double)ra nd() / (double)RAND_MAX;if (x - 0.5)*(x - 0.5) + (y - 0.5)*(y - 0.5)0.25)+m;pi = 4.0*m / n;prin tf(Proce

12、ss %d of % pi = %fn, myid, nu mprocs, pi);if (myid != 0)MPI_Se nd(&m, 1, MPI_DOUBLE, 0, 1, MPI_COMM_WORLD);elsep = m;for (source = 1; source nu mprocs; source+)MPI_Recv(&m1, 1, MPI_DOUBLE, source, 1,MPI_COMM_WORLD, & status);p = p + m1;prin tf(pi = %fn, 4.0*p / (n*nu mprocs);MPI_Fi nalize();return 0

13、;2)运行截图NJibr olI3 1 LEtmOutput轩*itAtid H:WcrkSniceUS20i3fl?fLabiDebUJEPILab 1. ezs lie Ldit Vnew Help?roc&ss 2 泣= 3, K&sEE?rcese 1 of ODWQ0031 - 3, H144EProcess 0 of QOQOQQQSI = 3. H357ELi = 3, J43636,1Readv5. 计算积分1)源代码#defi ne N 100000000#defi ne a 0#defi ne b 10#include #include #in clude #include

14、 mpi.hint main (i nt argc, char* argv)int myid, nu mprocs;int i; _double local = 0.0, dx = (double)b - (double)a) / (double)N;double in te, x;MPI_I nit(&argc, & argv);_MPI_Comm_ra nk(MPI_COMM_WORLD, &m yid);_MPI_Comm_size(MPI_COMM_WORLD, &n umprocs);for (i = myid; iN; i = i + nu mprocs)x = a + i*dx + dx / 2;(乙:0 ujn;8jlOaziieuij-idlAI3屮!lq 乜,.1UV9L9L%= P%lP% uoi68j ui xx)o |e68iui aqi.uud(O = PlAiu) jj(cnBO/VT

温馨提示

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

评论

0/150

提交评论