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

下载本文档

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

文档简介

目录一.系统安装11.下载地址12.安装步骤13.Visual Stdio设置1二.实验程序21.简单的MPI编程示例22.消息传递MPI编程示例133.消息传递MPI编程示例244.Monte Carlo方法计算圆周率65.计算积分8三.心得体会9一. 系统安装1. 下载地址FTP匿名登陆,在pub/mpi/nt文件夹中2. 安装步骤1) 在安装有MPI的计算机上要建立一个有管理员权限的账户,不可以没有密码;2) 双击exe文件,按默认设置安装MPI;3) 注册MPI账户,调用MPIRegister.exe,用户名和密码即为第一步中的账户。3. Visual Stdio设置为避免每新建一个项目都要设置一次,可以对它进行通用设置。打开视图-其他窗口-属性管理器,点击Debug|Win32目录下的Microsoft.Cpp.Win32.user,在VC+目录下的包含目录中添加MPICH的Include路径,库目录中添加MPICH的Lib路径;在链接器-输入目录下的附加依赖项中添加mpich.lib、mpe.lib、mped.lib、mpichd.lib。二. 实验程序1. 简单的MPI编程示例1) 源代码#include #include int main(int argc, char* argv)int num, rk;MPI_Init(&argc, &argv);MPI_Comm_size(MPI_COMM_WORLD, &num);MPI_Comm_rank(MPI_COMM_WORLD, &rk);printf(Hello world from Process %d of %dn, rk, num);MPI_Finalize();return 0;2) 运行截图2. 消息传递MPI编程示例11) 源代码#include #include int main(int argc, char* argv)int myid, numprocs,source;MPI_Status status;char messages100;MPI_Init(&argc, &argv);MPI_Comm_size(MPI_COMM_WORLD, &numprocs);MPI_Comm_rank(MPI_COMM_WORLD, &myid);if (myid != 0)strcpy(messages, Hello World!);MPI_Send(messages, strlen(messages) + 1, MPI_CHAR, 0, 99, MPI_COMM_WORLD);elsefor (source = 1; source numprocs; source+)MPI_Recv(messages, 100, MPI_CHAR, source, 99, MPI_COMM_WORLD,&status);printf(I am process %d I recv string %s from process %dn, myid, messages, source);MPI_Finalize();return 0;2) 运行截图3. 消息传递MPI编程示例21) 源代码#include #include #include#define N 1002int main(int argc, char* argv)int myid, numprocs, C = 0;double dataN, SqrtSum=0.0;_double d;for (int i = 0; i N; i+)datai = i;MPI_Status status;MPI_Init(&argc, &argv);_MPI_Comm_rank(MPI_COMM_WORLD, &myid);MPI_Comm_size(MPI_COMM_WORLD, &numprocs); -numprocs;if (myid = 0)for (int i = 0; i N; +i) MPI_Send(&datai, 1, MPI_DOUBLE, i%numprocs + 1, 1, MPI_COMM_WORLD);for (int source = 1; source = numprocs; +source)MPI_Recv(&d, 1, MPI_DOUBLE, source, 99, MPI_COMM_WORLD, &status);SqrtSum += d;elsefor (int i = 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, MPI_DOUBLE, 0, 99, MPI_COMM_WORLD); printf(I am process %d. I recv total %d from process 0, and SqrtSum=%f.n, myid, C, SqrtSum);_MPI_Finalize();_return 0;2) 运行截图4. Monte Carlo方法计算圆周率1) 源代码#include mpi.h#include #include int main(int argc, char *argv)int myid, numprocs;int source;long count = 1000000;MPI_Status status;MPI_Init(&argc, &argv);MPI_Comm_rank(MPI_COMM_WORLD, &myid);MPI_Comm_size(MPI_COMM_WORLD, &numprocs);srand(myid);double y, x, pi = 0.0, n = count;long m = 0, m1 = 0, i = 0, p = 0;for (i = 0; icount; 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 %d of % pi = %fn, myid, numprocs, pi);if (myid != 0) MPI_Send(&m, 1, MPI_DOUBLE, 0, 1, MPI_COMM_WORLD); else p = m;for (source = 1; sourcenumprocs; 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();return 0;2) 运行截图5. 计算积分1) 源代码#define N 100000000#define a 0#define b 10#include #include #include #include mpi.hint main(int argc, char* argv)int myid, numprocs; int i; _ double local = 0.0, dx = (double)b - (double)a) / (double)N;double inte, x;MPI_Init(&argc, &argv);_ MPI_Comm_rank(MPI_COMM_WORLD, &myid);_ MPI_Comm_size(MPI_COMM_WORLD, &numprocs);for (i = myid; iN; 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(The integal of x*x in region %d,%d =%16.15fn, a, b, in

温馨提示

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

最新文档

评论

0/150

提交评论