您的位置:首页 > 其它

VC6环境下的MPI配置

2011-11-13 23:38 204 查看

MPI开发包安装

下载完毕,开始安装MPICH2开发包,提示需要.NET 1.1 框架。鉴于本人对VS.NET 2003爱好,直接安装了整个开发环境,也可以只安装.NET框架。可以到微软官方网站下载安装包(http://msdn.microsoft.com/netframework/downloads/framework1_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%/LIB下wmpiregister,在注册界面输入本机器用户名和密码以便mpiexec运行程序。



开发第一个程序“Hello World”

经过上面的步骤,MPICH2开发环境已经建立好,下面便可以步入MPICH2的大殿了。开始最简单也是最经典程序“Hello World”,在过程中倒是遇到不少麻烦。

打开VC6,建立一个控制台应用程序,如下图:





依照课本,包含头文件且把代码敲入main函数中。

#include "mpi.h"

#include <cstdio>

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

{

MPI_Init(&argc, &argv);

printf("Hello World!\n");

MPI_Finalize();

return 0;

}

编译程序,发现出现很多编译错误,一时间不知道怎么办好。在细看错误,都是一些函数重载错误。原本想修改代码,但是没有全部源代码。再进一步,发现全部是mpicxx.h文件导致的错误,于是想是否MPI_Init等函数与此文件有关。通过搜索包含文字,发现MPI_Init等函数只在mpi.h中定义,于是想办法不包含mpicxx.h文件以避开问题。在mpi.h中发现代码:

#if !defined(MPICH_SKIP_MPICXX)

#include "mpicxx.h"

#endif

#endif

这下有办法,在程序中定义宏MPICH_SKIP_MPICXX,然后重新编译程序(注意在包含mpi.h前定义)。哈哈,果然避开了mpicxx.h文件,有出现几个为定义错误,包含Lib文件就OK!如下图:



有个建议,既然包含头文件必须连接库的话,可以在头文件中指定库。本人在开发过程中一直这样做,感觉很好。这样可以避免入门者不会设定库。

下面是运行。运行命令行,输入:

E:\MyProject\MPIPractice\HelloWorld\Debug>mpiexec -np 4 helloworld

输出结果:

Hello World!

Hello World!

Hello World!

Hello World!

这样便完成第一个MPI程序,下面的任务就是依据并行算法思想解决复杂问题,留带大家自己解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: