R MPI远程节点不执行
我正在尝试构建一个集群来并行化R函数。我在Ubuntu和R包(Rmpi和Snow)中使用OpenMPI。我正在运行的测试代码是:R MPI远程节点不执行,r,parallel-processing,mpi,openmpi,snow,R,Parallel Processing,Mpi,Openmpi,Snow,我正在尝试构建一个集群来并行化R函数。我在Ubuntu和R包(Rmpi和Snow)中使用OpenMPI。我正在运行的测试代码是: cl <- makeMPIcluster(8) fun <- function(){ Sys.info()[c("nodename")] } clusterCall(cl,fun) stopCluster(cl) mpi.quit() 问题是所有返回的都是本地主机名。我在localhost和node2中也观察到了这个过程,这个过程似乎开始了(lo
cl <- makeMPIcluster(8)
fun <- function(){
Sys.info()[c("nodename")]
}
clusterCall(cl,fun)
stopCluster(cl)
mpi.quit()
问题是所有返回的都是本地主机名。我在localhost和node2中也观察到了这个过程,这个过程似乎开始了(localhost中有4个,node2中有4个),但是node2的从属进程很快就停止了,所有的事情都在localhost中执行
我做了另一个测试,每个节点都有不同的脚本(testSnowMPI.R),当我将参数-n1更改为-n2时,我得到了预期的不同返回,但这两个脚本都是由本地主机执行的
另一个有趣的测试是,我在localhost中发出mpirun命令,但我只是为执行设置了node2host(-H node2)。我得到的答案是,分配给此作业的所有节点都已填充
我可以从node2 ping localhost,从localhost ping node2。我已经设置了没有密码的ssh连接
node2中的进程似乎正常启动,但它无法将返回写入主节点,然后localhost完成所有工作
我使用node2作为本地主机进行了相同的测试,其行为完全相同
你知道这些测试的奇怪行为吗
编辑
我只使用Rmpi函数(没有Snow函数)进行了一些测试。我写了这个剧本:
mpi.spawn.Rslaves()
mpi.close.Rslaves()
命令是:
mpirun -H localhost,node2,node2 -n 1 R --slave -f testSnowMPI.R
我得到了这个输出:
master (rank 0, comm 1) of size 3 is running on: node1
slave1 (rank 1, comm 1) of size 3 is running on: node1
slave2 (rank 2, comm 1) of size 3 is running on: node1
(node1是本地主机)该问题可能与生成的工作线程多于通过mpirun
-H
选项请求的插槽有关。如果使用-H node2、node2、node2、node2执行mpirun,并使用cl-Hi、@SteveWeston,会发生什么情况。当我只尝试-H node2,node2,node2,node2时,我会得到相同的错误“分配给此作业的所有节点都已填充”。当我尝试-H node2,node2,node2,node2时,所有进程都由localhost执行。例如,当我尝试-H node2,localhost,node2,node2
时,主节点在node2中启动,而所有从节点都在localhost中运行。似乎从机无法远程工作,本地主机开始执行所有操作。。。我已经尝试了很多东西,但我还没把它做好。非常感谢。很抱歉第二种情况是-H localhost,node2,node2,node2,node2
。我只使用Rmpi函数通过一些测试编辑了这个问题。由于某种原因,主人不会把工作交给奴隶。
master (rank 0, comm 1) of size 3 is running on: node1
slave1 (rank 1, comm 1) of size 3 is running on: node1
slave2 (rank 2, comm 1) of size 3 is running on: node1