-
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://mryang.blogbus.com/logs/17396382.html
这几日对并行计算有了大概的了解,其中关键的还是并行程序的设计,搞了一早上终于弄清楚了在Windows下的MPI并行程序运行环境的搭建。
什么是MPI?
MPI(Message Passing Interface),消息传递编程接口,是全球工业、科研和政府部联合建立的一个消息传递编程标准。是目前最为通用的并行编程方式。MPI标准中定了一组函数接口,用于进程间的消息传递。函数的具体实现由各计算机厂商来完成,然这些都是要付费的;也有一些免费的通用MPI系统,比较著名的就是MPICH(http://www.mcs.anl.gov/research/projects/mpich2/)和LAM MPI(http://www.lam-pi.org)。[1]单来说,要让你的单个PC机能运行并行程序的运行,就需要有MPI的运行环境。而PICH几乎支持所有的Linux/Unix和Windows,可以在单台PC或工作站上模拟MPI并行程,也可以在SMP系统或者机群环境上建立实用的并行计算环境。
这里将在一台双核的PC上,利用虚拟机及MPICH2建立一个由3台PC节点构成的一个机群行计算环境。
软硬件准备
硬件:一台普通PC,当然硬盘和内存越大越好,我是用的是160G的硬盘,1G的内存。
软件:- VMware Workstation 6.0,在VM上虚拟两个PC,与物理主机构成3个节点的机群可以安装一个虚拟PC,然后实用VM的克隆功能。
- Microsoft Windows XP Pro:每个节点的操作系统;
- Microsoft .NET Framework 2.0:每个节点必须的环境;
- vcredist_x86.exe(VC8运行库):在安装MPICH2时需要,安装时会提示Visual C++2005 sp1的提示,安装vcredist_x86.exe后,就可以正常安装MPICH2了;
- mpich2-1.0.6p1-win32-ia32.msi:MPICH2安装程序,可到http://www.mcs.anl.gov/research/projects/mpich2/的Downloads中下载。
环境搭建
在每台机器上均安装上Microsoft .NET Framework2.0和MPICH2。MPICH2的默认安装路在C:\Program Files\MPICH2,将MPICH2\bin加入系统环境变量的Path中。每个节点中新建一个用户,该用户应该具有管理员权限。我这里新建了用户mpi,密为111,隶属Administrators组。
在每个节点新建相同的目录,来存放并行程序,该目录都应该在相同的位置。我这里的C:\mpitest。
单机测试
首先需要注册一个用户,运行MPICH2的wmpiregister.exe,在开始->所有成程序-MPICH2中可以找到。将上一步中的用户名和密码在这里进行注册即可。后可以采用MPICH2提供的GUI界面进行测试,可以在在开始->所有成程序->MPICH2中到wmpiexec.exe;在MPICH2的examples下有个测试程序cpi.exe,选择后执行即可。
可以到命令行方式执行命令:mpiexec -n 2 C:\Program Files\MPICH2examples\cpi.exe即可。命令中-n是参数,后面的2表示有两个节点并行计算。

联机测试
这里将在具有3个节点的PC集群上测试。首先将cpi.exe程序拷贝到每个节点的C:\mpitest目录中,然后执行命令:
mpiexec -hosts 3 210.45.*.* 210.45.*.* 210.45.*.* C:\mpitest\cpi.exe
注意:在联机测试时将XP的防火墙关闭。
与VC++ 6.0集成开发环境
有了MPI的运行环境后,还需要一个MPI的开发环境。MPICH2可以和VC开发环境集成,集的方法很简单,将MPICH2的Include和lib添加到VC的Directories的Include files和ibary files中即可。同时在Project Settings中将mpi.lib添加到Object/library modules中,然后就可以采用VC++ 6.0开发MPI的并行程序了。[1] 张林波,尺学斌等.并行计算导论. 北京:清华大学出版社,2006年7月
[2] http://read.newbooks.com.cn/info/175818.html
随机文章:
准备离开USTC了 2008-07-04又回到USTC了 2008-04-14感受IBM BladeCenter刀片服务器 2008-03-19正式开始在USTC的学习 2008-03-18ITwiki 2007-04-11
收藏到:Del.icio.us引用地址:





评论
mpiexec -hosts 2 192.168.0.5 192.168.0.6 E:\cpi.exe
结果如下:
abort:Unable to connect to 192.168.0.6
PS:我的防火墙已经关掉了
mpiexec -hosts 2 192.168.0.5 192.168.0.6 E:\cpi.exe
结果如下:
abort:Unable to connect to 192.168.0.6
PS:我的防火墙已经关掉了
我先在一台机器上做实验
mpiexec -n 1 -host 6ff5073c93ba4ce E:\cpi.exe
注:6ff5073c93ba4ce是一台机器名
结果成功
在内网另外一台机器上做实验
mpiexec -n 1 -host 21c69670c4064f7 C:\cpi.exe
注:21c69670c4064f7 是另外一台机器名
结果成功
现在我在一台机器上(6ff5073c93ba4ce )运行命令
mpiexec -configfile E:\mpiconfig.txt
结果显示连接不上另一台机器(21c69670c4064f7 )
如下:
abort:Unable to connect to 21c69670c4064f7
换另一台机器21c69670c4064f7 ,进行上述操作,结果类似,显示连接不上机器6ff5073c93ba4ce
注:mpiconfig.txt内容为:
-n 1 -host 6ff5073c93ba4ce E:\cpi.exe
-n 1 -host 21c69670c4064f7 C:\cpi.exe
mpiexec -n 1 A C:\Program Files\MPICH2examples\cpi.exe
正常
mpiexec -n 1 B C:\Program Files\MPICH2examples\cpi.exe
也正常
但是
mpiexec -n 2 A B C:\Program Files\MPICH2examples\cpi.exe
就不会出现结果了,请问这是为什么?如果有时间的话能不能帮我解答一下?谢谢!
把windows防火墙关了就好了,原来只关了其他的防火墙
C:\Documents and Settings\zhenglei>mpiexec -n 3 sum
Unable to connect to 'csu-e71c70ed0c8:8676',
sock error: generic socket failure, error stack:
MPIDU_Sock_post_connect(1228): unable to connect to csu-e71c70ed0c8 on port 8676
, exhausted all endpoints (errno -1)
MPIDU_Sock_post_connect(1244): gethostbyname failed,不知道这样的主机。 (errno 10011)
博主有空帮我看一下,除了什么问题
谢谢
还有,我是VF6.5,编译环境如何整合啊?是不是只有编译环境整合后,才能测试例子cpi?
不过老弹出windows防火墙安全警报真是烦人。
麻烦你了:)
请问下这边的account和password要如何设置?
能不能稍微说一下这方面。。
谢谢了。
甚至单核的单机是否可模拟使用mpich?
可以的话烦稍微教一下。
谢谢!