windows下MPI环境配置(VC6.0)

MPI的全称是Message Passing Interface即标准消息传递界面,可以用于并行计算。MPI的具体实现一般采用MPICH。下面介绍如何在Windows XP系统下VC6中搭建MPI环境来编写MPI程序。

本文结合网上的一些教程做了一些修改和常见问题。

一.准备工作
1.1   安装MPI的SDK——MPICH2。
mpich2-1.4.1p1-win-ia32安装程序的下载地址:

http://www.mcs.anl.gov/research/projects/mpich2/downloads/tarballs/1.4.1p1/mpich2-1.4.1p1-win-ia32.msi

本文以设置安装在C:\Program Files\MPICH2目录下为例。

测试所安装的MPICH2

测试前首先需要注册一个用户,具体操作如下:“开始”按钮-->所有程序-->MPICH2-->wmpiregister.exe。输入用户名、密码。有一点需要说明:该用户名须为有效的操作系统管理员账户,密码对应为系统登录密码。如图所示:

 windows下MPI环境配置(VC6.0)_第1张图片

接下来选择开始-->所有程序-->MPICH2-->wmpiexec.exe;

选择Application为 c:\program files\mpich2\examples\cpi.exe (就是自带的一个计算圆周率的例子程序)。在Number of processes的数量选择2表示用二个进程来协同完成。选中“run in separate windw”选项。再点击Excute就可以执行了。

然后在控制台窗口下提示输入number of intervals ,随便输入个大点的数字(50000,5000000)就可以看到求的的圆周率值。如下图:

 windows下MPI环境配置(VC6.0)_第2张图片

注意到上图中的Show Comman中的字符串,可以在控制台下输入应该字符串得到类似结果,这里就不再介绍了。

二.第一个MPI程序
加入之后,新建Win32 Console Application工程,加入如下代码:

注意要把库文件 mpi.lib添加进去或者

#pragma comment (lib, "mpi.lib") 


#include 
#include 
#include 
#include 
#define MPICH_SKIP_MPICXX
#include 
using namespace std;

int main() {
	MPI_Status status;
	char str[] = "abcdef\n";
	int myid;
//	printf( "%s\n", str );

//	str = ( char * )malloc( 100 * sizeof( char ) );
//	str[5] = '\0';

	MPI_Init( NULL, NULL );
	MPI_Comm_rank( MPI_COMM_WORLD, &myid );
	if( myid == 2 ) {
		MPI_Send( "HELLO", 5, MPI_CHAR, 7, 1234, MPI_COMM_WORLD );
	}
	if( myid == 7 ) {
		MPI_Recv( str, 5, MPI_CHAR, 2, 1234, MPI_COMM_WORLD, &status );
		printf( "Got %s from P%d, tag %d\n", str, status.MPI_SOURCE, status.MPI_TAG );
	}
	MPI_Finalize();
	return 0;
}


 
  

编译运行,第一个MPI程序就诞生了。注意要用mpi自带的wmpiexec运行生成的.exe程序


你可能感兴趣的:(windows下MPI环境配置(VC6.0))