• 2008-03-21

    Windows下MPI并行程序运行环境的搭建 - [开发手记]

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://www.mryang.org/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


    收藏到:Del.icio.us

    评论

  • 安装mpich2完毕,运行后输出为:"enter the number of intervals", 我随机输入非零值,然后输出pi 和error, 并没有给出processor 状态,请问如何解决。
    MrYang回复apple说:
    这是mpi程序里面输出的,如果你的mpi程序中没有输出处理器的状态的代码的话,运行后的结果肯定是不会有输出的。
    2008-07-03 13:51:51
  • 请教下,MPI中,单机双核运行,是否可以共享内存?如何访问同一块内存?是否可以传递内存地址?
    MrYang回复syc说:
    MPI主要用在分布式并行系统中,如果要共享内存,那是SMP,需要使用OpenMP。如果是单CPU双核中的核与核之间的内存共享的话,我想这应该是操作系统的任务,或者要看CPU厂家的编译器是否支持,具体没有用过,需要查阅资料。
    2008-05-08 22:26:17
  • 原来账户不能空密码……
    不过老弹出windows防火墙安全警报真是烦人。

    麻烦你了:)
    MrYang回复syc说:
    把防火墙关了,账号给个密码就可以了。
    2008-03-28 22:09:48
  • 单机多进程的话,用wmpiexec.exe运行,提示无权/无法连接。
    请问下这边的account和password要如何设置?
    MrYang回复syc说:
    随便设个用户和密码即可。
    2008-03-28 22:10:16
  • 呃。。VMware没用过。。
    能不能稍微说一下这方面。。
    谢谢了。
    MrYang回复syc说:
    单机不需要VMware,直接安装了MPICH测试就可以了。
    2008-03-28 17:05:32
  • 能不能麻烦稍微说下单击双核(甚至单核)的话,MPICH应该如何设置?最近毕业设计搞到这个题目,,一头雾水。。
    MrYang回复syc说:
    兄弟,上面的文章中已经写得很清楚了啊。文章就是杂单机双核的情况做的。
    2008-03-28 09:43:59
  • 请问单击双核的话是否可以使用mpich?
    甚至单核的单机是否可模拟使用mpich?
    可以的话烦稍微教一下。
    谢谢!
    MrYang回复syc说:
    单机双核当然可以,我上面做过测试,文章中有提到。单击单核没有做过测试,不过我想应该可以,因为MPI是在进程间进行消息传递,只要有多个进程同时运行就可以了。我在双核上测试了4个进程的,也可以运行。
    2008-03-27 16:40:45

发表评论

您将收到博主的回复邮件
记住我