天天看点

Windows7+VS2012下配置MPI环境一、安装MPICH2二、一劳永逸修改Include和lib的方法三、First MPI Program四、MPI并行计算五、可能的错误及其他资料

MPI(MessagePassing Interface)标准消息传递界面,主要是用于并行计算,或者用现在很流行的名词,大数据计算、分布式计算系统,其具体实现方式一般是使用MPICH。新瓶装旧酒而已,下面主要说说在Win7系统下VS2012中搭建MPI环境和编写MPI程序。

一、安装MPICH2

mpich2-1.4.1p1-win-ia32.msi下载地址

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

安装好了后需注册一个用户,我猜测因为是分布式计算,肯定会涉及到很多台主机,故需要一个标志来识别,注册完了之后可以自行测试一下。(可参见http://blog.csdn.net/morewindows/article/details/6823436的1.1部分)

二、一劳永逸修改Include和lib的方法

参考http://www.cnblogs.com/hwangbae/archive/2012/06/24/2560463.html,个人觉得方法二比较好,因为方案一只能对新建的程序有效,但是该博主使用了两个版本的VS,所以需要新建两个文件夹(不过为了保险起见,还是给这种文件做个备份比较好,或者记录为了什么而修改过什么,不然重装个vs也挺蛋疼的)。针对只有VS2012的同学可以使用解决方案一中编辑default.vcxproj的方法编辑Microsoft.Cpp.Win32.user.props即可。这里我使用了方案一,至于为什么,因为最开始看的它照着弄的,之后就懒得改了。。。

三、First MPI Program

这里我使用的是http://blog.csdn.net/morewindows/article/details/6823436的代码,比较懒。。。(打了这么多广告,是不是该收点广告费呢,哈哈哈哈)。在VS中成功Build,Run了一下会一闪而过,在return 0前面加上getchar()之后发现只有一行,当然是因为你只有一台机子,没法并行。所以需要多台电脑协同运行MPI,具体方法我没事,也可以查看本小节提及网址里的第三部分。这里我想在一台机子上用多线程模拟出多个主机,毕竟写个代码要好几台电脑也很麻烦,更别说怎么去弄那第二台了。

四、MPI并行计算

想要多线程运行写出来的程序,有两种办法,一种是找到安装目录下的wmpiexec.exe,然后跟第一步中所说的测试程序一样运行,这样。。。太弱智了,而且明显不符合Coder的逼格,当然是要用敲命令才更好了!!可以在C盘新建一个sbin(名字和地址随意),然后把mpiexec.exe拷到这个文件夹,再新增path环境变量,后面加上C:\sbin,注意要跟前面的有分号隔开。照理说应该可以直接将mpiexec.exe的原始路径新增到path中,不过在我这儿试了很多次都不行。

照上面说的做完了之后,打开cmd,直接敲mpiexec就会出现一些类似于帮助菜单的东西。我所知道的运行你所写代码的exe程序的命令是:

mpiexec -n 4“exe文件路径”(这里路径要包括你所想run程序的名字+.exe,那个4是你想开的线程数),暂时就写这么多了,一晚上两个小时就是折腾这东西然后写篇日志了,也不知道传说中的写技术博客可以增长姿势是真的了。

第一次写博客,第一次写MPI,哎,不归路啊不归路。

五、可能的错误及其他资料

查资料的过程中看到一个博主出现了下面的错误:

ERROR:unable to read the cmd header on the pmi context, Error = -1

所幸我没出现过这么蛋疼的事情,这里贴出他的网站,也给自己备用。接下来就是一些比较好的资料网站,留一下。

1. MPICH2简单的安装配置总结(Linux环境下)

http://blog.csdn.net/cleverysm/article/details/1638651

2.mpich2用户手册

http://www.tuicool.com/articles/U3YfM3

3. 分布式并行库MPICH2安装(VMware10, ubuntu14.04)

http://jacoxu.com/?p=936

继续阅读