2024年2月19日发(作者:)

VS2012下配置MPI开发环境

MPI简介

多线程是一种便捷的模型,其中每个线程都可以访问其它线程的存储空间。因此,这种模型只能在共享存储系统之间移植。一般来讲,并行机不一定在各处理器之间共享存储,当面向非共享存储系统开发并行程序时,程序的各部分之间通过来回传递消息的方式通信。要使得消息传递方式可移植,就需要采用标准的消息传递库。这就促成的消息传递接口(Message

Passing Interface, MPI)的面世,MPI是一种被广泛采用的消息传递标准[1]。

与OpenMP并行程序不同,MPI是一种基于消息传递的并行编程技术。消息传递接口是一种编程接口标准,而不是一种具体的编程语言。简而言之,MPI标准定义了一组具有可移植性的编程接口。各个厂商或组织遵循这些标准实现自己的MPI软件包,典型的实现包括开放源代码的MPICH、LAM MPI以及不开放源代码的Intel MPI。由于MPI提供了统一的编程接口,程序员只需要设计好并行算法,使用相应的MPI库就可以实现基于消息传递的并行计算。MPI支持多种操作系统,包括大多数的类UNIX和Windows系统。

如何实现MPI

MPI是一个标准。它不属于任何一个厂商,不依赖于某个操作系统,也不是一种并行编程语言。不同的厂商和组织遵循着这个标准推出各自的实现,而不同的实现也会有其不同的特点。MPICH是影响最大、用户最多的MPI实现。目前可下载的最新的MPICH软件包为MPICH1.2.7pl和2008年2月15日发布的MPICH 2-1.0.7测试版(我使用的是MPICH

2-1.0.6pl),在/research/projects/mpich2/可以下载到,分别有支持UNIX和Windows的32位和64位版本。

MPI程序的特点

MPI程序是基于消息传递的并行程序。消息传递指的是并行执行的各个进程具有自己独立的堆栈和代码段,作为互不相关的多个程序独立执行,进程之间的信息交互完全通过显示地调用通信函数来完成。

1.下载安装

首先从/downloads/下载并安装对应自己电脑系统的版本的MPICH2。。我的电脑是win7 64位的系统,下载的是x86-64。

2.配置

1) 安装完成后,打开“开始-所有程序-MPICH-” ,在Account中输入本机用户名,在password中输入本机密码,点击Register按钮注册并按OK按钮退出。

2) 在VS2012中建立一个项目(我用的是Win32项目),在项目名称上右键选择Properties(属性),即进入Property Pages(属性页)窗口。

3) 展开左边Configuration Properties(配置属性),选中其中的VC++ Directories(VC++目录),在右边Include Directories(包含目录)加入“D:Program FilesMPICH2include;”(自己的安装路径)

4) 展开左边Configuration Properties,选中其中的VC++ Directories,在右边Library

Directories(库目录)加入“D:Program FilesMPICH2lib;”

5) 展开左边Configuration Properties中的C/C++,选中其中的Preprocessor,在右边的Preprocessor Definitions(预处理器)中加入“MPICH_SKIP_MPICXX;”。

6) 同样展开C/C++,选中Code Generation,把右边的Runtime Library更改为“Multi-threaded Debug (/MTd)”(此外有下拉菜单可选到它)。

7) 展开左边的Linker,选中Input,在右边Additional Dependencies中加入“;”。

至此,配置完成。

然后编译如下实例代码:

#include "stdafx.h"

#include "mpi.h"

#include

int main(int argc, char* argv[])

{

MPI_Init(&argc,&argv);

MPI_Comm_rank(MPI_COMM_WORLD,&rank);

MPI_Comm_size(MPI_COMM_WORLD,&size);

printf("hello world! from thread %d of %dn",rank,size);

MPI_Finalize();

//system("pause");

return 0;

}

int rank,size;

此时使用win32编译可能会出现如下错误。

原因是因为我的系统是64位的,而且下载的mpi也是64位的,所以在编译的时候需要把环境改为x64

有的电脑可能默认没有x64,需要自己配置。

新建后在“新建平台”选项卡中选x64,在“从此处复制设置”中选win32.。

然后就可以编译运行你的实例程序了。运行情况如下

3.如何调整MPI程序的参数传递?

打开“开始-所有程序-MPICH-”,在Applicationd右边浏览找到你在VS2012中生成的exe文件,设置Number of processes(即进程数目,用来模拟并行计算的CPU数目)。再按Execute按钮运行。

设置进程数为4,运行结果如下:

至此,我们已经在vs2012下配置好了mpi的开发环境了!