我将 open-mpi 更新为 3.0.0,重新加载 RmpidoMPI ,现在在 Ubuntu Linux R 3.4.2 上执行 startCluster 时出现此错误。

Error in mpi.comm.spawn(slave = rscript, slavearg = args, nslaves = count,  :
  MPI_ERR_SPAWN: could not spawn processes

如何诊断问题?

最佳答案

要测试您的 MPI 安装,请执行以下操作:

/* Put this text inside hello.c file */
#include <mpi.h>
#include <stdio.h>

int main(int argc, char** argv) {
    int rank;
    int world;

    MPI_Init(NULL, NULL);
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    MPI_Comm_size(MPI_COMM_WORLD, &world);
    printf("Hello: rank %d, world: %d\n",rank, world);
    MPI_Finalize();
}

然后编译
mpicc -o hello ./hello.c

然后,尝试运行它
mpirun -np 2 ./hello

如果你得到
Hello: rank 0, world: 2
Hello: rank 1, world: 2

这意味着您的 MPI 安装没有问题,您必须查看 R 内部,否则意味着 MPI 配置不正确,并且继续前进的机会很小。

更新

它看起来像 R3.4 + OpenMPI 3.0.0 + Rmpi​​ 错误行为 ;)

如果您尝试在 R 之外运行 slaves,它会起作用。所以,我猜 Rmpi​​ 的 native 代码内部存在一些问题。
> cp -r /Library/Frameworks/R.framework/Versions/3.4/Resources/library/Rmpi ~
> cd ~/Rmpi
> mpirun -np 2 ./Rslaves.sh `pwd`/slavedaemon.R tmp needlog /Library/Frameworks/R.framework/Versions/3.4/Resources/
# if you put
# localhost slots=25
# inside ~/.hostfile, you can acquire more resources
> mpirun --hostfile=~/.hostfile -np 4 ./Rslaves.sh `pwd`/slavedaemon.R tmp needlog /Library/Frameworks/R.framework/Versions/3.4/Resources/

更新并正确修复 R 3.4 和 OpenMPI 3.0.0

创建文件:~/.openmpi/mca-params.conf 并放入
orte_default_hostfile=YOUR_USER_HOME/default_host

创建文件:带有内容的 ~/default_host
localhost slots=25

运行 R,加载 RMpi 并运行代码
> library(Rmpi)
> mpi.spawn.Rslaves()
    4 slaves are spawned successfully. 0 failed.
master (rank 0, comm 1) of size 5 is running on: pi
slave1 (rank 1, comm 1) of size 5 is running on: pi
slave2 (rank 2, comm 1) of size 5 is running on: pi
slave3 (rank 3, comm 1) of size 5 is running on: pi
slave4 (rank 4, comm 1) of size 5 is running on: pi

有关完整故事,请看这里:R3.4 + OpenMPI 3.0.0 + Rmpi inside macOS - little bit of mess ;)

关于r - 新安装 doMPI 抛出 MPI_ERR_SPAWN 错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46541301/

10-11 04:17