万星星@豌豆荚 欢迎加入我们
一个吃软饭的男人!!!!!我只想写程序####
微博:http://weibo.com/wanlianwen
posts - 172,  comments - 1253,  trackbacks - 0
自从失恋以来,很久没有写随笔,多谢大家对我鼓励,总觉得要写一点什么的,苦于学校压力和外面工作需要,时间甚少。这里先发关于上学期一门课程开发入门文章,是我自己写的。随后将推出一系列软件设计的文章,因为目前跟孙辉老师学技术,将拿出来和大家分享,也算是技术推广吧!

系统环境配置

Win2K Adv Svr + VC6

MPI开发包下载

网上搜索下载MPICH2地址http://www-unix.mcs.anl.gov/mpi/mpich2/

MPI开发包安装

       下载完毕,开始安装MPICH2开发包,提示需要.NET 1.1 框架。鉴于本人对VS.NET 2003爱好,直接安装了整个开发环境,也可以只安装.NET框架。可以到微软官方网站下载安装包(http://msdn.microsoft.com/netframework/downloads/framework1_1/)。安装.NET框架后便可以安装MPICH2开发包。安装后可以看到MPICH2目录层次:

环境配置

       我的电脑”path中设置MPICH2bin目录(%MPICH2%\bin)以便运行mpiexec程序。我的具体设置如下:

       VC6开发环境中包含MPICH2开发包的include目录和lib目录。具体步骤:打开VC6,选择”Tools->Options”,在弹出的“Options”对话框中选择Directories选项卡,分别设置如下图:

(设置Include目录%MPICH2%/include

(设置Lib目录%MPICH2%/LIB

       MPICH2环境配置。运行%MPICH2%/LIBwmpiregister,在注册界面输入本机器用户名和密码以便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程序,下面的任务就是依据并行算法思想解决复杂问题,留带大家自己解决。

总结

       耗费一下午重新安装系统和各种软件,大约一个小时编制及调试“Hello World”程序,尽管简单,但是毕竟对于MPI编程入门,感觉良好。耗费一小时书写文档,总结问题,以便其他同学遇到麻烦好解决,希望互相学习进步。

 

万连文

2005/10/19晚于寝室

posted on 2006-06-12 17:50 万连文 阅读(18154) 评论(42)  编辑 收藏 引用 所属分类: 乱七八糟

FeedBack:
# re: 并行编程--MPI开发入门
2006-06-12 20:12 | 史传红
我现在也在搞这方面的研究,不过是在linux系统下,多多向你学习。  回复  更多评论
  
# re: 并行编程--MPI开发入门
2006-06-12 20:49 | 万连文
学习到不敢当,只是当时学习的时候了解了一下,为入门的朋友们方便。  回复  更多评论
  
# re: 并行编程--MPI开发入门
2006-06-23 10:16 | 祝乔
我现在想学习MPI,但是感觉它好难哦,我想问,MPI能在单机上运行,并验证程序的正确性吗?  回复  更多评论
  
# re: 并行编程--MPI开发入门
2006-06-23 12:17 | 万连文
可以在单机运行,我就是在单机测试的。
其实MPI主要是想法,就是如何分配任务以并行处理。  回复  更多评论
  
# re: 并行编程--MPI开发入门
2006-07-12 11:59 | 郭恒明
你好! 我也是刚开始学MPI,我装的是MPICH2,在vc下环境已经配置好了,运行c+mpi时没有问题,但是在运行mpi+c++时,总是出现下面的问题,请问一下怎么样解决,先谢谢了!
d:\program files\mpich2\include\mpicxx.h(1417) : error C2555: 'MPI::Nullcomm::Clone' : overriding virtual function differs from 'MPI::Comm::Clone' only by return type or calling convention
d:\program files\mpich2\include\mpicxx.h(1051) : see declaration of 'Comm'
d:\program files\mpich2\include\mpicxx.h(1483) : error C2555: 'MPI::Intercomm::Clone' : overriding virtual function differs from 'MPI::Comm::Clone' only by return type or calling convention
等,内容太长了,放不下,不过都是上面显示的这些问题。  回复  更多评论
  
# re: 并行编程--MPI开发入门
2006-07-12 12:15 | 万连文
由于时间隔太长,不太记得,确实存在问题,但是可以避开包含mpicxx.h文件:
在mpi.h中发现代码:

#if !defined(MPICH_SKIP_MPICXX)

#include "mpicxx.h"

#endif

#endif

这下有办法,在程序中定义宏MPICH_SKIP_MPICXX,然后重新编译程序(注意在包含mpi.h前定义)。
我写过几个程序都这样避开的,要真解决我倒没有做过。  回复  更多评论
  
# re: 并行编程--MPI开发入门
2006-07-12 14:06 | 郭恒明
谢谢了。我自己再看一下。  回复  更多评论
  
# re: 并行编程--MPI开发入门
2006-08-07 15:17 |
其实只要在#include所有头文件前,包含mpi.h即可
如果工程中包含stdafx.h那么就在stdafx.h的最初包含mpi.h即可  回复  更多评论
  
# re: 并行编程--MPI开发入门
2006-08-07 15:54 |
另外这里通过#define MPICH_SKIP_MPICXX的方法虽然可以解决当下的问题,但是你这里使用的是mpi的C语言方式,如果使用MPI::Init这样的C++方式,就行不通了。

所以依我看,把mpi.h的包含位置提前是根本的解决之道,而且mpich2的示例程序也是这样做的。  回复  更多评论
  
# re: 并行编程--MPI开发入门
2006-08-07 16:21 | 万连文
恩,谢谢拉。要是以前知道的话就可以试验一下,可惜放下很久了。  回复  更多评论
  
# re: 并行编程--MPI开发入门
2006-08-14 09:29 | zhongyuan
我运行MPI程序时出现如下问题(huangzhongyuan是我用wmpiregister.exe 注册的一个用户):
Credentials for huangzhongyuan rejected connecting to huangzhongyuan
Aborting: Unable to connect to huangzhongyuan
请问如何解决该问题
我的Email:zhongyuan2@hotmail.com  回复  更多评论
  
# re: 并行编程--MPI开发入门
2006-08-14 09:35 | zhongyuan
我刚才已经解决,多谢  回复  更多评论
  
# re: 并行编程--MPI开发入门
2006-09-12 17:02 | Dew
真是太好了,我也是刚在接触MPI,也在为上面所说的问题苦恼,谢谢大家!!!  回复  更多评论
  
# re: 并行编程--MPI开发入门
2006-11-20 11:15 | angel
谢谢哈:)  回复  更多评论
  
# re: 并行编程--MPI开发入门
2007-03-05 18:30 | Anoba
我使用VS2005+MPICH2 1.0.5+Winserver2003写了一个程序,编译没问题,wmpiexec运行该程序,报错:Aborting:unable to connect to master,smpd version mismatch
按CTRL+C出现
error encountered before initializing MPICH
如果不选复选框"run in an seperate window"则能运行,这是怎么回事啊?
  回复  更多评论
  
# re: 并行编程--MPI开发入门
2007-03-05 18:33 | Anoba
还有我运行的服务器是4CPU,将该EXE文件复制到一台单CPU的WINXP机器上则可以运行,不管选不选那个复选框.  回复  更多评论
  
# re: 并行编程--MPI开发入门
2007-03-05 22:38 | 万连文
不好意思,我已经很久没有这方面研究了,不敢误人子弟,请另处寻找答案。  回复  更多评论
  
# re: 并行编程--MPI开发入门
2007-03-08 20:33 | Anoba
@zhongyuan
你的问题是怎么解决的啊?我的邮箱是anoba@163.com  回复  更多评论
  
# re: 并行编程--MPI开发入门
2007-03-08 20:34 | Anoba
你的问题是怎么解决的啊?我的邮箱是anoba@163.com@zhongyuan
  回复  更多评论
  
# re: 并行编程--MPI开发入门
2007-03-08 21:01 | Anoba
@万连文
还是谢谢你的文章啊!这方面的材料太少了.  回复  更多评论
  
# re: 并行编程--MPI开发入门
2007-03-10 13:09 | 万连文
@Anoba
你可以通过邮件与zhongyuan 联系  回复  更多评论
  
# re: 并行编程--MPI开发入门
2007-05-10 16:40 | angus
为什么我用这个命令test.exe -np 4就不能输出四次呢?求助  回复  更多评论
  
# 请教MPICH2安装失败的原因
2007-05-21 16:12 | wangzr
我在windows XP操作系统下,按要求安装了.NET 1.1 框架,再安装MPICH2时,提示"there is a problem with this windows installer package.A problem runs a part of the setup did not finish as expected....."的信息,请帮我分析一下是什么原因啊  回复  更多评论
  
# re: 并行编程--MPI开发入门
2007-05-22 09:37 | 万连文
建议你安装一个虚拟机,然后多做几次安装试验。这个东西我已经1年多没有在玩了,所以.......  回复  更多评论
  
# re: 并行编程--MPI开发入门
2007-06-08 10:36 | jiaoyang
did you have some books about learning how to make procedure with mpi, I mean that MPI include some API and then can be used for realizing parallel caculation.  回复  更多评论
  
# re: 并行编程--MPI开发入门
2007-06-08 13:20 | 万连文
这里我再次声明下,这个东西是一年多前学习了一段时间,后来一直没有接触。所以没有什么深入研究,请大家原谅。  回复  更多评论
  
# re: 并行编程--MPI开发入门
2007-09-17 17:12 | jiajd
您好:我在用java做MPI开发,主要是项目需要,看了几天资料一时不知道怎样入手,还忘指点  回复  更多评论
  
# re: 并行编程--MPI开发入门
2007-11-19 21:35 | anqiongdy
请问 有没有人在多机环境下实现过啊,我在多机的配置上遇到问题了,有高手做过的话,还望指点下啊。(E_mail:anqiongdy@163.com)  回复  更多评论
  
# re: 并行编程--MPI开发入门
2007-11-20 12:11 | llmwm
我运行MPI程序时出现如下问题(huangzhongyuan是我用wmpiregister.exe 注册的一个用户):
Credentials for huangzhongyuan rejected connecting to huangzhongyuan
Aborting: Unable to connect to huangzhongyuan
请问如何解决该问题

这个问题怎么解决的啊,急求!  回复  更多评论
  
# re: 并行编程--MPI开发入门
2007-11-20 12:18 | 万连文
请使用administrator帐户注册试一下,有可能是权限问题。  回复  更多评论
  
# re: 并行编程--MPI开发入门
2008-03-29 21:20 | gjx
不知道有谁知道如何在vs2005下调试mpi程序,每次按msdn说明还是无法进入预设的断点,不知道为什么?  回复  更多评论
  
# re: 并行编程--MPI开发入门
2008-04-22 16:00 | cow
呵呵,居然还有在win32平台上做计算的?  回复  更多评论
  
# re: 并行编程--MPI开发入门[未登录]
2009-10-19 16:25 | 攀升
CuteFTP 8 Professional
SSH Secure Shell Client
SSH Secure File Transfer Client
集群的这三个软件怎么用啊?哪位能够提供一个使用文档~谢谢
如何在集群上运行程序啊?
邮箱:pstrueman@163.com.QQ:493231671  回复  更多评论
  
# re: 并行编程--MPI开发入门
2010-03-10 09:31 | YWT
楼主有QQ没,我也在做并行计算,想交流一下QQ:252601388  回复  更多评论
  
# re: 并行编程--MPI开发入门[未登录]
2010-04-23 11:05 | wang
@wangzr
装新版本的mpi
  回复  更多评论
  
# re: 并行编程--MPI开发入门[未登录]
2010-06-17 10:58 | paul
MPI初学者,大家一起交流一下 QQ:408474219   回复  更多评论
  
# re: 并行编程--MPI开发入门
2010-08-24 09:57 | Hmilyy
可以向你学习MPI吗?麻烦了 我的QQ是469082066  回复  更多评论
  
# re: 并行编程--MPI开发入门
2011-11-28 12:48 | izatgul
hi ,我在linux系统下用 c++ 编一个程序, 但是总是找不到我的头文件mpi.h这怎么会事? 明明有这个头文件。 在makefile文件里面写它的路径也试过
INCLUDE = -I/usr/locsl/mpich/include
你们看看这个mpi程序写makefile的时候有什么规则吗?  回复  更多评论
  
# re: 并行编程--MPI开发入门
2012-08-24 23:05 | overman
你是怎么解决的?@郭恒明
  回复  更多评论
  
# re: 并行编程--MPI开发入门
2013-03-14 10:38 | hcc
怎么从根本上解决mpicxx.h的问题?如果我要用到这个里边的函数的话。  回复  更多评论
  
# re: 并行编程--MPI开发入门
2014-05-27 19:35 | wangnann
@万连文
是的。就是权限问题。该帐号必须是系统当前使用帐号并拥有管理权限。用wmpiconfig 中的scan Hosts 下面用户显示绿色可以,不然就出现Aborting: Unable to connect to。。。。  回复  更多评论
  
# re: 并行编程--MPI开发入门
2015-10-15 20:53 | M琨M
我是用的vs+MPICH2,用wmpiexec运行我的exe的时候,不能连接到主机是什么鬼啊。。求回复  回复  更多评论
  

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


简历下载
联系我

<2019年9月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

常用链接

留言簿(66)

随笔分类

随笔档案

相册

搜索

  •  

最新评论

阅读排行榜

评论排行榜