当我使用链接到OpenMPI 4.0.1的Rmpi时,我可以成功运行一个小的hello world脚本,该脚本在整个群集中分配计算结果。
但是,当链接到OpenMPI 2.1.5时,出现此错误:
Error in mpi.comm.spawn(slave = system.file("Rslaves.sh", package = "Rmpi"), :
MPI_ERR_SPAWN: could not spawn processes
Calls: mpi.spawn.Rslaves -> mpi.comm.spawn
Execution halted
-------------------------------------------------------
Primary job terminated normally, but 1 process returned
a non-zero exit code.. Per user-direction, the job has been aborted.
-------------------------------------------------------
--------------------------------------------------------------------------
mpirun detected that one or more processes exited with non-zero status, thus causing
the job to be terminated. The first process to do so was:
Process name: [[13712,1],0]
Exit code: 1
--------------------------------------------------------------------------
Rmpi软件包包含Rslaves.sh
,它实际上只是调用Rscript slavedaemon.R
,而后者反过来会评估从主节点(source)发送的代码。
我可以看到slavedaemon.R
在从属节点上开始,但是当它尝试加载Rmpi包时,从属只是消失。我的意思是:
library(Rmpi)
不返回。Rslaves.sh
之后slavedaemon.R
中的命令不会执行(即使+e
也是如此)我已经确认R库搜索路径在从属节点上是正确的,并且我成功地手动调用了slavedaemon.R
,没有从属节点,并且没有崩溃。
是否有明显的原因导致OpenMPI 2.1.5(而不是4.0.1)和手动加载时发生这种情况?
如果没有,是否有某种方法可以调试从属节点发生的情况,因为在它们尝试加载Rmpi之后我似乎无法检查状态?
根据strace
,似乎orted
先发送SIGCONT
,然后发送SIGTERM
,但我不知道为什么。