【问题标题】:Rmpi: cannot use MPI_Comm_spawn APIRmpi:不能使用 MPI_Comm_spawn API
【发布时间】:2015-04-15 13:12:56
【问题描述】:

我在我的 linux 机器上安装了 Rmpi​​,它在 R 中成功加载。我的机器上有两个版本的 MPICH,我(相信)已经安装了最新版本的 Rmpi​​。我还必须更新我的LD_LIBRARY_PATH。我主要按照安装说明here.

在 R 中加载 Rmpi​​ 后,我运行 mpi.spawn.Rslaves(nslaves=4) 并收到以下错误消息:

Error in mpi.spawn.Rslaves(nslaves = 2) : 
You cannot use MPI_Comm_spawn API

有人知道我怎样才能让 Rmpi​​ 工作吗?

谢谢!

【问题讨论】:

    标签: linux r parallel-processing mpi


    【解决方案1】:

    您需要使用 MPICH2 来获得生成支持。如果您安装了 MPICH2,您可能仍需要在安装 Rmpi​​ 时指定--with-Rmpi-type=MPICH2。如果你改用--with-Rmpi-type=MPICH,它会禁用mpi.spawn.Rslaves等功能。

    另外请注意,MPICH2 显然不支持生成worker,除非程序是使用诸如mpiexec 之类的命令启动的。这基本上意味着您不能使用 MPICH2 从交互式 R 会话中执行mpi.spawn.Rslaves,尽管使用 Open MPI 可以做到这一点。需要明确的是,这不是您报告的问题,但在您使用 MPICH2 正确安装 Rmpi​​ 后,您可能会遇到此问题。

    我能够使用 MPICH 3.1.3 通过以下命令安装 Rmpi​​ 0.6-5:

    $ R CMD INSTALL Rmpi_0.6-5.tar.gz --configure-args='--with-mpi=$HOME/mpich-install --with-Rmpi-type=MPICH2'
    

    要调试配置问题,您应该从目录而不是 tar 文件安装 Rmpi​​。这将允许您在之后检查“config.log”文件,该文件将提供重要信息。以下是我在我的 Linux 机器上的做法:

    $ tar xzvf Rmpi_0.6-5.tar.gz 
    $ R CMD INSTALL Rmpi --configure-args='--with-mpi=$HOME/mpich-install --with-Rmpi-type=MPICH2'
    

    为了获得 spawn 支持,在 Rmpi​​ 中编译 C 代码时需要定义 MPI2 宏。您可以通过在 config.log 中搜索“PKG_CPPFLAGS”来检查是否发生这种情况:

    $ grep PKG_CPPFLAGS Rmpi/config.log
    PKG_CPPFLAGS='-I/home/steve/mpich-install/include  -DMPI2 -DMPICH2'
    

    我发现“config.log”对于调试配置和构建问题非常有用。

    请注意,您可以在没有 spawn 支持的情况下使用 Rmpi​​。您需要使用 mpirun(或 mpiexec 等)启动所有工作程序,使用 mpi.applympi.applyLB 等函数将更加困难,如果不是不可能的话。但如果您只需要要初始化 MPI,以便您可以从 C 或 Fortran 实现的函数中使用 MPI,您可能需要通过 mpirun 启动所有工作程序。

    【讨论】:

    • 我需要使用特定版本的 MPICH2 吗?我从 mpich.org 下载了 1.5 版,但在安装 Rmpi​​ 包时遇到了问题。
    • @Rich 要使用 mpi.spawn.Rslaves,您需要使用支持 MPI 2.0 的 MPI 版本。我一直使用 Open MPI,它支持在 Rmpi​​ 中生成没有问题。我的猜测是,您在使用 MPICH2 构建时遇到了 Rmpi​​ 配置问题,这导致生成支持被禁用,但如果不查看配置消息就很难解决。
    猜你喜欢
    • 2013-01-21
    • 2019-06-28
    • 2015-08-08
    • 1970-01-01
    • 2011-05-14
    • 2013-09-01
    • 2014-08-11
    • 2013-10-04
    • 1970-01-01
    相关资源
    最近更新 更多