基于MPICH并行实验报告

上传人:豆浆 文档编号:4078684 上传时间:2017-08-15 格式:DOC 页数:27 大小:2.17MB
返回 下载 相关 举报
基于MPICH并行实验报告_第1页
第1页 / 共27页
基于MPICH并行实验报告_第2页
第2页 / 共27页
基于MPICH并行实验报告_第3页
第3页 / 共27页
基于MPICH并行实验报告_第4页
第4页 / 共27页
基于MPICH并行实验报告_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《基于MPICH并行实验报告》由会员分享,可在线阅读,更多相关《基于MPICH并行实验报告(27页珍藏版)》请在金锄头文库上搜索。

1、MPI 并行程序实验报告王琨 114712017MPI 并行程序实验报告王琨 114712017一、实验名称MPICH 并行程序实验二、实验环境Windows XP +MPICH+ CodeBlocks 10.5 实验室里的若干台 PC 机,分别为 SOFT-F3,SOFT-F3,SOFT-F3,SOFT-F3,SOFT-F3,SOFT-F3, SOFT-F3,SOFT-F3,SOFT-F3。下面着重说明如何搭建 MPICH 并行程序设计环境:1. 系统要求安装 MPICH for Microsoft Windows 对系统有如下要求: (1)Windows NT4/2000/XP 的 Pro

2、fessional 或 Server 版(不支持 Windows 95/98) (2)所有主机必须能够建立 TCP/IP 连接 MPICH 支持的编译器有:MS VC+ 6.x,MS VC+.NET, Compaq Visual Fortran 6.x, Intel Fortran,gcc,以及 g77。2. 创建账户安装 MPICH 必须以管理员的身份登录每台主机,在所有主机上建立一个同样的账户(当然也可以每个机器使用不同的用户名和账户,然后建立一个配置文件,使用命令行的方式运行程序) ,我们组统一创建管理员账户:215,如 1-1 图:MPI 并行程序实验报告王琨 1147120171-1

3、 创建账户 215点击下一步:1-2再点击创建账户,即可成功创建新账户:215最后,为新账户创建密码:215MPI 并行程序实验报告王琨 1147120171-33. 安装 MPICH运行下载的安装文件 mpich.nt.1.2.5.exe,将 MPICH 安装到每台主机上。 打开“任务管理器”中的“进程”选项卡,查看是否有一个 mpd.exe 的进程。如图 1-4 所示,如果有的话说明安装成功。以后每次启动系统,该进程将自动运行。1-4 mpd.exe 进程4. 注册与配置安装好 MPICH 之后还必须对每台计算机进行注册和配置才能使用。其中注册必须每台计算机都要进行,配置只要在主控的计算机

4、执行就行了。注册的目的是,将先前在每台计算机上申请的账号与密码注册到 MPICH 中去,这样 MPICH 才能在网络环境中访问每台主机。配置方法:运行“mpichmpdbinMPIRegister.exe”首先会提示输入用户账号,然后会提示输入两边密码,之后会问你是否保持上面的设定。如果选择是,则上面的信息将写入硬盘,否则保存在内存中,再重新启动之后就不存在了。如图 1-5 所示:MPI 并行程序实验报告王琨 1147120171-5 注册为了让程序在许多主机上执行,而不需建立配置文件来给出相应的各个主机的信息,主控机必须直到当前可用的主机的信息。这时就需要运行 MPICH 的配置程序来进行配

5、置了。我们选择 july 为主控计算机,配置过程如下:从“开始-程序-MPICH-mpd- MPICH Configuration tool”启动。启动之后的界面如 1-6 图所示:MPI 并行程序实验报告王琨 1147120171-6 配置整个界面分为三栏,在第一栏中点击 Select(1 号按钮) ,然后在跳出的对话框中选择安装了 MPICH 的主机名(SOFT-F8,SOFT-F7 ,SOFT-F33,SOFT-F9,SOFT-F10,SOFT-F3 ,SOFT-F4,SOFT-F2,SOFT-F6, ) 。之后在第一栏的编辑框中会显示出所有选择的主机。 检查无误后点击第二栏的 Appl

6、y(2 号按钮) ,这时下方的进度条会显示对各主机核查的情况,如果没问题整个进度条会变为蓝色。最后点击 OK(3 号按钮) 。整个配置就完成了。5. MPICH 与编译环境的整合MPICH 提供了 C 语言和 Fortran 语言的接口。要编译一个 MPI+C 或 MPI+Fortran 的程序必须对编译器进行设置。由于本人习惯使用 Code Block 软件进行编程,所以这里介绍在Code Block 中如何进行编译环境的整合。在 Code Block 中编译一个 MPI+C 的程序的步骤如下:(1) 打开 Code Block 10.5。MPI 并行程序实验报告王琨 114712017(2

7、)设置 settingscomplier and debugger setting。将 MPICH2 中 lib 目录下的文件都加到 link libraries 中。(3)将 MPICH2 中 include 目录分别添加到 Complier、Linker、Resource complier 选项卡中。MPI 并行程序实验报告王琨 114712017到此,Code Block 的 MPI 环境整合完毕,下面就可以编译 MPI 的源码了。可以看出,配置 Code Block 环境要比 VC+6.0 方便的多,我们也来看看如何配置VC+6.0 的。(1) 打开 VC+ 6.0。(2) 新建一个工

8、程(工程名为:compute 如下图 1-7) ,通常为 Win32 Console Application。 1-7 新建工程(3) 在新的工程的编辑界面下,按 Alt+F7 打开工程设置对话框。(4) 切换到 C/C+选项卡。 (如图 1-8)首先选择“Win32 Debug”,再选择 “Code Generation”,再选择 “Debug Multithreaded”。这时在“工程选项”的文本框中显示“/MT”表示设置成功。MPI 并行程序实验报告王琨 1147120171-8 Visual C+设置然后选择“Win32Release”重复上述步骤,如下图 1-91-9 Visual

9、C+设置(5) 在 C/C+选项卡中,选择“所有配置” 。选择“预处理器” ,在“附加包含路径”的文本框中输入 MPICH 所附带的头文件的目录。如下图 1-10:MPI 并行程序实验报告王琨 1147120171-10 Visual C+设置(6) 在“连接 ”选项卡中,选择“所有配置” 。然后再选择“输入” ,在“附加库路径”的文本框中输入 MPICH 所附带的库文件的目录。如下图 1-11:1-11 Visual C+设置(7) 在“连接”选项卡中,选择“所有配置” 。然后再选择“常规” ,然后在 “对象/库模块” 的文本框中添加 “ws2_32.lib” 。点击“确定” 。这时在“Co

10、mmon 选项”中会出现“ws2_32.lib” 。如图 1-12:MPI 并行程序实验报告王琨 1147120171-12 Visual C+设置(8) 在“连接” 选项卡中,选择 “Win32 Debug” 。然后再选择 “常规” ,然后在“对象/库模块”的文本框中添加“ mpichd.lib” 。点击“确定 ” 。这时在“工程选项”中会出现“mpichd.lib ” 。如图 1-13:1-13 Visual C+设置(9) 在“ 连接” 选项卡中,选择“Win32 Release” 。然后再选择“常规” ,然后在“对象/库模块”的文本框中添加 “mpich.lib” 。点击“确定 ” 。

11、这时在“工程选项”中会出现“mpich.lib” 。如图 1-14:MPI 并行程序实验报告王琨 1147120171-14 Visual C+设置(10) 关闭工程设置对话框。至此,MPICH 与编译环境 Visual C+6.0 整合结束。同配置 Code Block 相比,VC+6.0 要复杂的多,因此推荐用 Code Block 软件进行编译程序以节省时间。6.设置环境变量将 MPICH 的 bin 所在文件目录 C:Program FilesMPICHmpdbin 加入到系统变量 path 中,如下图所示:7. 关闭 Windows 防火墙为了实验的顺利进行,实验之前先关闭 Wind

12、ows 防火墙。我们都以 bingxing 账户的身份登陆主机进行实验。MPI 并行程序实验报告王琨 114712017三、实验内容本人进行了两个并行实验:分别为 PI 的并行计算和矩阵相乘的并行计算。实验 1:MPICH 软件中自带的计算 PI 的程序。算法分析:设计求值并行算法的关键是构造一个合适的函数f ( x) ,使得它计算起来既简便,误差又小。即使 10()()Nbiaifxdhfx这里取 a = 0 , b = 1 , N 为子区间分割数,于是 h = 1 / N。由于: 1102rctn()|arct()rtan(0)rct(1)/4x 故我们选取的函数是 ,可以直接进行积分,即

13、24/fx1200fxdx比较方便。算式中的在计算各个子区间的小矩形面积时,按左边界计算取 ,按右边ih界计算为 ,按中间值计算为 ,按梯形计算时则要同时用到左、(1)ixh (.5)ixh右两个边界,如下图所示,则最后的计算式子为: 1 120.()()n ni iif fNN并行算法实现时,分配每一个进程或 CPU 计算其中的若干个子区间,然后通过归约,得到最终结果 。计算过程中,精度越高,要求 N 越大。对于足够大的 N ,要求在 p 个进程或处理机上尽量均衡分配计算任务,通过归约完成总的计算。下面是实现的代码:/* This is an interactive version of c

14、pi */#include mpi.h#include #include double f(double);double f(double a)MPI 并行程序实验报告王琨 114712017return (4.0 / (1.0 + a*a);int main(int argc,char *argv)int done = 0, n, myid, numprocs, i;double PI25DT = 3.141592653589793238462643;double mypi, pi, h, sum, x;double startwtime = 0.0, endwtime;int namele

15、n;char processor_nameMPI_MAX_PROCESSOR_NAME;MPI_Init(&argc,&argv);MPI_Comm_size(MPI_COMM_WORLD,&numprocs);MPI_Comm_rank(MPI_COMM_WORLD,&myid);MPI_Get_processor_name(processor_name,&namelen);/*fprintf(stdout,Process %d of %d is on %sn,myid, numprocs, processor_name);fflush(stdout);*/while (!done) if

16、(myid = 0) fprintf(stdout, Enter the number of intervals: (0 quits) );fflush(stdout);if (scanf(%d,&n) != 1) fprintf( stdout, No number entered; quittingn );n = 0;startwtime = MPI_Wtime();MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD);if (n = 0)done = 1;else h = 1.0 / (double) n;sum = 0.0;for (i = myid + 1; i 程序-MPICH-mpd-MPIR

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号