MPICH 在windows上安装与使用,其实很简单.
1.下载,安装,
在每台电脑上都安装,
每台电脑上建一个管理员级别的用户,每台电脑上的用户名及密码相同,
每台电脑IP不同,在同一网关下,掩码一样.
所有的电脑都具有相同的工作组.
所有电脑建议关闭防火墙(不关闭防火墙进行连接,我还想不到解决办法)
在进行并行计算时,其它从机可不进行登陆,或用哪个用户登陆都可以,不影响并行计算的连接.
确认在每台机器上都启动了RemoteShellServer。可以通过控制面板->服
务,来检查,推荐将这个服务设为自动,可以减少以后的维护。(搞不清,不放心就把remote的启动)
2.配置(可有可无)
(1)系统环境变量,添加MPICH的路径.
如你安装MPICH到C:\Program Files\MPICH,
则在系统环境变量的path中添加路径C:\Program Files\MPICH\mpd\bin (各项是用空格分开的).
(2)路径.
我个人建议在每台电脑上相同的路径上建一个目录(如:C:\mpitest\),使用主机电脑具有读写所有从机该目录的限权.
这样,就可在主机编程调试程序,直接把编译后的程序从网络上传到从机的共享目录上,不必用U盘拷来拷去的.(你也可用其它先进方法,如RSH......).
每台电脑的共享目录上都存放在相同的并行程序.(如mympi.exe).
(3)注册用户
用MPIRegister.exe(在cmd下,MPIRegister.exe在C:\Program Files\MPICH\mpd\bin 下)在每台电脑上注册在第一步你新建的用户,可看其命名用法,需要输入密码,(输入时不显示输入提示,这下linux相似).
(4)验证连接
用MPICH Configuration tool查找可用的机器.
在窗口上,应该已经正确显示出工作组名,点select,弹出窗口,点菜单action,scan host.程序开始搜索机器.
并列出工作组下的所有的机器名,搜索完毕,如果机器的MPI可用,则该机器的图标显示为蓝底图,黄底字,红字体的MPI三个字.否则说明该机器MPI不可用,就是其以上的配置有问题.
点OK返回.
(5)应用机器
在MPICH Configuration tool窗口中显示了可用的机器,可用contrl+点击多选择的机器,
不选的机器并不被使用于并行计算.
在右边的host显示已经选择的机器,点下方的apply即应用,
完毕.
这里是让MPICH自己分配每台机器上进程数,一般它是平均分配.
如需根据每台机器的情况手动分配进程数,应采用配置文件方式.
程序的运行,这里就不说了,网上多的是,这里我只说关键问题.
使用配置文件方法,可用MPIRun.exe来运行,也可在pmd下.
3. 运行MPI应用程序 (后面的没试)
对于已经编译好的MPI程序,若只启动一个进程,则可以直接键入程序名,回
车,即可运行。若启动多个进程则需要执行mpirun。具体用法可由命令提示符下直接执行
该命令获得。
对于只准备在单机上,进行调试的用户,相对容易。只需要键入mpirun -np
#numproc <程序名>,或者键入mpirun -localonly #numproc <程序名>,即可。(
#numproc指的是准备启动的进程数)
对于在多台机器上进行计算,需要进行下面的操作来建立环境:(这里假设用
户没有安装NFS)
(1) 确认在每台机器上都安装了这个程序包,最少是安装了远程调用的程序和
必须得动态库。
(2) 确认在每台机器上都启动了RemoteShellServer。可以通过控制面板->服
务,来检查,推荐将这个服务设为自动,可以减少以后的维护。
(3) 运行程序。这里分几种情况逐一说明。
I) 用mpirun -np #numproc <程序名> 的形式在多台机器上启动,方法
如下:
(这一方法只适合启动SPMD程序,并且可执行程序应在各台机器上放置在相同的目
录结构中)
i) 启动mpiconfig,选择准备运行的机器,并点击setup,再点击
OK按钮,结束配置。(注:选中机器后,必须按setup,才可以完成配置,否则在
后面的运行中会出现奇怪的错误)
ii) 键入mpirun -np #numproc <程序名> 即可启动程序,当
#numproc大于配置的机器数时,系统可以自动在机器列表中循环利用。
II) 用配置文件的方式在多台机器上启动,方法如下:
i) 编写纯文本的配置文件,格式如下:
exe <可执行文件的全路径及名称>
[可选参数]
hosts
<主机名1> #n1 [可执行文件的全路径及名称]
<主机名2> #n2 [可执行文件的全路径及名称]
<主机名3> #n3 [可执行文件的全路径及名称]
...
其中#n1,n2,n3...表示在对应机器上启动的进程数,每台主机上的进程数可以不同
;
若主机后的[可执行文件的全路径及名称]不填,则默认使用exe那一行所指定
的文件;
若每台主机都独立的列出[可执行文件的全路径及名称],则exe那一行的内容
也可空白;
若启动的是SPMD程序,每个主机所指向的必须是同一文件,或其复制文件;
若启动的是MPMD程序,给不同的机器上指定其上需要运行的程序;
同一台主机可以占用多行,每行给定不同或相同的启动进程数和[可执行文件
的全路径及名称];
全路径名包括两种,一种是以驱动器符号开始的,如:d:\temp\mpiprogram.
exe,另一种是以机器名为起始的,如:\\host1\share\temp\mpiprogram.exe;
每个[可执行文件的全路径及名称]都是以相应的主机为标准。
ii) 启动程序,这里仍然有两种情况:
a) 如果每台机器运行所需要的可执行文件都在其本地,则可以
简单
的使用 mpirun <配置文件> 的形式启动;
b) 如果在配置文件中包含的主机中,存在一台主机的所需的可
执行文件在其远程,则需要使用 mpirun <配置文件> -logon 来启动,这时会要求
输入一个帐号和密码,请输入一个已经存在的域用户名和其对应的密码即可。
(与每台机器登陆的帐号无关,不要使用administrator帐号)
特别需要指出下面几点:
(1) 推荐用mpirun -localonly #numproc <程序名> 的方式在单机上启动多个
进程,这样可以比较少的更改mpiconfig。
(2) 推荐用配置文件的形式在多台机器上运行,这样也可以比较少的更改
mpiconfig;
(3) 也可以使用配置文件的形式在单台机器上运行程序;
(4) 无论启动几个进程,在本地只有一个窗口,而远程主机上没有任何窗口启
动,若启动任务管理器,可以看到启动的程序在运行,并且优先级为低。
0 Comment(s):
Post a Comment