【应该了解的背景知识】
1、MPI知识--[比较熟悉]
2、VC/Visual Studio知识--[一般了解]
3、C++知识--[熟悉]
MPI全称消息传递接口,是Message Passing Interface的缩写,MPI是一个库,而不是一门语言。它是一种标准或规范的代表,而不特指某一个对它的具体实现。
本次实验过程中,使用的MPI实现是MPICH,MPICH是一种最重要的MPI实现,它可以免费从http://www-unix.mcs.anl.gov/mpi/mpich 取得,更为重要的是,MPICH是一个与MPI-1规范同步发展的版本,每当MPI推出新的版本,就会有相应的MPICH的实现版本。
MPICH的下载安装
可以从http://www-unix.mcs.anl.gov/mpi/mpich 免费下载得到MPICH的最新版本。本次实验使用的是MPICH2 for Microsoft Windows 版本是 1.0.3 ,下载后直接运行,安装即可。
MPICH的配置
本次实验使用的开发语言是C/C++,运行环境为Microsoft Windows XP Professional,开发工具为Microsoft Visual Studio 2005。安装完MPICH2后,要将MPI库添加到Visual Studio的库目录中,将inculde文件添加到Visual Studio的include目录中。具体步骤如下:
1. 单击“工具”菜单,选择“选项”,在弹出对话框中双击树型目录中的“项目和解决方案”,打开之。在其子目录里面选中“VC++目录”一项,此时右侧显示相应属性。
2. 在“显示以下内容的目录”下拉菜单中选择“库目录”,单击“新行”按钮(快捷键Ctrl+Insert),在新添加的行中单击最右侧浏览按钮,选择MPICH2的安装目录,然后选择lib子目录,选择“打开”,加入完成,如图:
3. 使用与第二步相同的方法,将“引用文件”添加上,如图:
4. 新建一个空白“Windows控制台应用程序”项目,假设命名为FFT,在“项目”菜单中选择“FFT属性”,在弹出对话框中依次开左侧树型列表的“配置属性”、“链接器”、“输入”,在“附加依赖项”一栏输入:mpi.lib,如图:
选择“配置”下拉列表中的release选项,同样将mpi.lib添加上去。(也可以使用#pragma预处理指令:#pragma comment(lib,"mpi.lib"))
程序运行与测试:
VC下将程序直接编译链接为exe文件,然后使用MPICH2附带的运行工具即可模拟运行并行程序。
在运行程序前,要对MPICH2的运行环境进行设置,本次实验仅使用一台计算机来进行模拟,所以,设置比较简单,使用开发包提供的wmpiregister即可。如果要同时使用多太计算机来运行,就要用到wmpiconfig工具来进行配置。两个工具都位于mpi安装目录下的bin目录中。这里,我们只介绍wmpiregister。wmpiregister运行界面如下:
程序的设置很简单,只要在Account中输入你当前登录Windows所使用的用户名,在password中输入该用户名对应的密码即可。MPICH2不能使用没有密码的用户,如果当前用户没有密码,则应该为其创建一个,然后再运行wmpiregister进行配置。输入完成后,单击Register进行注册即可。显示Password encrypted into the Registry,即表示注册成功。
MPICH2带有两个运行工具,第一个为mpiexec.exe,第二个为wmpiexec.exe,均位于mpi安装目录下的bin目录中。第一个为命令行工具,使用方法如下:
第2个参数为处理器个数,第4个参数为将要运行的程序。
第二个为Win32窗口程序,运行后界面如下:
其实这个程序仅仅是一个界面,最终程序仍然要调用mpiexec.exe来运行,所以两种方式本质上是相同的。这里更建议使用命令行方式,或在使用窗口方式时将“run in a separate window”勾中,因为经过多次实验,发现窗口方式运行时,输出显示是没有问题的,但是如果要向程序输入数据,在窗口模式下似乎行不通,估计mpiexec这个程序有问题。