相信大家在做并行计算是如果要用到MPICH2的话总会遇到Error while connecting to host, 由于目标计算机积极拒绝,无法连接。 (10061)的问题。
很多人之前给过一种解决方法,就是在CMD中运行smpd.exe -install -phrase behappy这项命令外,也就是重新启动MPICH2 Process Manager, Argonne National Lab这项服务。
但是,我在安装的时候发现我安装后这项服务是始终自动启动的,问题并不在这里。而使用MPICH2\bin中的wmpiregister.exe程序注册用户以及密码之后问题依然存在。所以最终问题并不在此。
最后,我在CMD中直接运行mpiexec这个命令时发现了问题所在:
可以看到,我们这里运行mpiexec命令时,系统调用的并不是MPICH2\bin文件夹下的mpiexec.exe程序,而是windows系统自带的MPI并行计算的mpiexec,从它的Common options中也能看出来,它的options中是没有-localonly这项命令的,这也是与我们要用到的MPICH2中的mpiexec的一个区别之一。因此,我们需要修改系统的系统变量,注意!这里是系统变量,而不是用户变量:
如同,问题就在这里,由于系统变量中系统自带的Microsoft MPI\bin比我们MPICH2\bin的路径要偏上,所以在CMD中调用mpiexec这个命令时系统优先调用Microsoft MPI\bin。因此,我们只需要把MPICH2\bin和LAMMPS-...-MPI\bin这两个路径上移到Microsoft MPI\bin之上就没问题了。
可以看一下上移后CMD运行mpiexec命令的样子:
可以看到,系统所调用的mpiexec已经换成了MPICH2\bin路径中的,而我们所需要的-localonly命令也出现了。
至此,问题解决!
祝各位好运!