分类: WINDOWS
2008-09-25 16:05:02
WINDOWSXP下MPICH2并行环境的搭建
MPI开发包安装
下载完毕,开始安装MPICH2开发包,提示需要.NET 1.1 框架。可以到微软官方网站下载安装包。看清楚,可别装错了。安装.NET框架后便可以安装MPICH2开发包。安装后可以看到MPICH2目录层次:
环境配置
“我的电脑”path中设置MPICH2的bin目录(%MPICH2%\bin)以便运行mpiexec程序。我的具体设置如下:
VC6开发环境中包含MPICH2开发包的include目录和lib目录。具体步骤:打开VC6,选择”Tools->Options”,在弹出的“Options”对话框中选择Directories选项卡,分别设置如下图:
(设置Include目录%MPICH2%/include)
(设置Lib目录%MPICH2%/LIB)
MPICH2环境配置。运行%MPICH2%/BIN下wmpiregister.exe,在注册界面输入本机器用户名和密码以便mpiexec运行程序。
单机测试
首先需要注册一个用户,运行MPICH2的wmpiregister.exe,在开始->所有成程序-MPICH2中可以找到。将上一步中的用户名和密码在这里进行注册即可。后可以采用MPICH2提供的GUI界面进行测试,可以在在开始->所有成程序->MPICH2中到wmpiexec.exe;在MPICH2的examples下有个测试程序cpi.exe,选择后执行即可。可以到命令行方式执行命令:mpiexec -n 2 C:\Program Files\MPICH2examples\cpi.exe即可。命令中-n是参数,后面的2表示有两个节点并行计算。
开发第一个程序“Hello World”
经过上面的步骤,MPICH2开发环境已经建立好,下面便可以步入MPICH2的大殿了。开始最简单也是最经典程序“Hello World”,在过程中倒是遇到不少麻烦。
打开VC6,建立一个控制台应用程序,如下图:
依照课本,包含头文件且把代码敲入main函数中。
#include
#include
#include
int main(int argc, char *argv[])
{
int numprocs;
int procnum;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &procnum);
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
printf("Hello world! from processor %d out of %d\n", procnum, numprocs);
MPI_Finalize();
return 0;
}
编译程序,发现SEEK_SET is #defined but must not be for the C++ binding of MPI"Error executing cl.exe。继续搜索解决,问题是SEEK_SET在两个头文件里都有定义。尝试用#undef SEEK_SET,but error依然……。