热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

MPI的全称是MessagePassingInterface即标准消息传递界面,可以用于并行计算。MPI的具体实现一般采用MPICH。下面介绍如何在WindowsXP系统下VC6中搭建MPI环境

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。输入用户名、密码。有一点需要说明:该用户名须为有效的操作系统管理员账户,密码对应为系统登录密码。如图所示:

 \

接下来选择开始-->所有程序-->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)就可以看到求的的圆周率值。如下图:

 \

注意到上图中的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程序



推荐阅读
author-avatar
dasgsdfsddsadas_501
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有