Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R MPI远程节点不执行_R_Parallel Processing_Mpi_Openmpi_Snow - Fatal编程技术网

R MPI远程节点不执行

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

我正在尝试构建一个集群来并行化R函数。我在Ubuntu和R包(Rmpi和Snow)中使用OpenMPI。我正在运行的测试代码是:

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