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

下载本文档

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

文档简介

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

2、户名和密码即为第一步中的账户。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 #inc

3、lude 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)

4、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

5、= 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, ch

6、ar* argv).int myid, numprocs, C = 0;doubledataN, 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_DOUB

7、LE, 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(&

8、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 c

9、ount = 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() /

10、 (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);elsep = m;for (source = 1; sourcenumprocs; source+)MPI_Recv(&m1, 1, MPI_DOUBLE, source, 1,MPI_COMM

11、_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)

12、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,inte);M

温馨提示

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

评论

0/150

提交评论