【问题标题】:Installing Rmpi on Ubuntu 16.04 VirtualBox在 Ubuntu 16.04 VirtualBox 上安装 Rmpi
【发布时间】:2017-08-23 16:09:45
【问题描述】:

我在 VM VirtualBox 上创建了一个新的 ubuntu-16.04.2-desktop-amd64 机器,我希望能够将 R 环境与 Rmpi​​ 一起使用。

以下两种方法都会产生类似的错误。

更新了简化的预构建二进制方法:

安装 Ubuntu 后,我打开一个终端并执行以下命令:

~$ sudo apt-get update
~$ sudo apt-get install openmpi-bin
~$ sudo apt-get install r-base
~$ sudo apt-get install r-cran-rmpi
~$ R

这打开了 R 终端,我调用了以下导致错误的函数:

> library(Rmpi)
libmpi.so: cannot open shared object file: No such file or directory
Error : .onLoad failed in loadNamespace() for 'Rmpi', details:
call: fun(libname, pkgname)
error: Cannot start MPI_Init(). Exit
Error: package or namespace load failed for ‘Rmpi’

我尝试过的替代方法包括使用本地 OpenMPI 安装和使用 R 函数 install.packages 安装 Rmpi​​ 包(见下文)。这些都导致了相同的错误。

我还尝试使用 MPICH,将 ~$ sudo apt-get install mpich 替换为上述过程中的第二个命令(包括使用 R 函数安装包),这会导致更加繁重的运行时错误。

有谁知道我做错了什么或者我可以做些什么来解决这个安装错误?

或者,是否有人能够使用任何 Linux 发行版或带有预安装组件的映像成功地安装带有 Rmpi​​ 的 VirtualBox 机器?

原本地安装方式:

我已按照this blog 上的说明下载 OpenMPI 2.1.0 版,编译并安装它。但是,当我尝试在 R 中安装软件包时:

> install.packages("Rmpi", configure.args =
  c("--with-Rmpi-include=/home/jormunr/openmpi/include",
    "--with-Rmpi-libpath=/home/jormunr/openmpi/lib",
    "--with-Rmpi-type=OPENMPI",
    "--with-mpi=/home/jormunr/openmpi/"))

它给出了以下错误

Error: .onLoad failed in loadNamespace() for 'Rmpi', details:
  call: dyn.load(file, DLLpath = DLLpath, ...)
  error: unable to load shared object '/home/jormunr/R/x86_64-pc-linux-gnu-library/3.2/Rmpi/libs/Rmpi.so':
libmpi.so.20: cannot open shared object file: No such file or directory
Error: loading failed
Execution halted
ERROR: loading failed

我可以看到“libmpi.so.20”文件位于我作为安装参数之一提供的 /home/jormunr/openmpi/lib 中。

【问题讨论】:

  • 执行sudo apt-get install r-cran-rmpi,因为我们确实将 Rmpi​​ 作为预构建的二进制文件。如果您必须使用本地 OpenMPI 安装,请检查 autoconf 代码。
  • 在启动 R 之前执行export LD_LIBRARY_PATH=/home/jormunr/openmpi/lib:$LD_LIBRARYP_PATH。您也可以将其放入 shell 的启动文件中。它将允许运行时链接编辑器找到 MPI 库。
  • @DirkEddelbuettel - 感谢您的评论。我很高兴使用预构建二进制文件。我尝试使用 'sudo apt-get install r-cran-rmpi' 来获取二进制文件,但是当我进入 R 并使用 'library(Rmpi)' 加载它时,我得到了同样的错误:libmpi.so: 无法打开共享对象文件:没有这样的文件或目录错误:'Rmpi' 的 loadNamespace() 中的 .onLoad 失败,详细信息:调用:fun(libname, pkgname) 错误:无法启动 MPI_Init()。退出错误:“Rmpi”的包或命名空间加载失败
  • @HristoIliev - 感谢您的评论。在启动 R 并加载 Rmpi​​ 库之前,我尝试在终端中执行导出语句。这给出了一个看起来很可怕的错误:*** 捕获了段错误 *** 地址 0x1,导致“内存未映射”这之后是函数调用的长追溯。
  • 哈利路亚!!!终于找到解决办法了!!!现在已经花了整整一周的时间来寻找如何安装 Rmpi​​,我现在应该喝一杯——非常大的一杯!!!当我清醒时,我会更新答案!可能要到星期一!

标签: r parallel-processing mpi ubuntu-16.04 openmpi


【解决方案1】:

[免责声明:我不是 Linux 专家,仅具有用户级别的技能。任何专家的贡献或更正将不胜感激。]

预构建二进制方法

尽管尝试了各种方法来安装预构建的二进制文件,但我并没有设法让这个选项起作用。这涉及在终端中执行命令“sudo apt-get install r-cran-rmpi”以安装 r-cran-rmpi 预构建包,该包还会自动安装列出的先决条件 libopenmpi1.10 包。但是,似乎文件“libmpi.so”不包含在 libopenmpi1.10 包中,而是 Rmpi​​ 库所期望的,这会导致 R 环境中出现无法找到该文件的错误。

本地安装方式

经过一些修改,本地安装最终还是成功了。我使用默认设置创建了一个新的 ubuntu-16.04.2-desktop-amd64 VirtualBox 映像,除了 2048MB 内存和 32GB 硬盘空间。安装后,我打开一个终端并执行来自the Jovinge Lab website 的命令,其中包含修改运行时链接编辑器路径并启用 R 的 install.package() 函数以查找“libmpi.so”文件的倒数第二个命令. (也将版本更改为 1.10.6,因为这是版本 1 的最新版本 - 请参阅下面的版本 2)

~$ cd /home/jormunr
~$ wget https://www.open-mpi.org/software/ompi/v1.10/downloads/openmpi-1.10.2.tar.gz
~$ tar -zxvf openmpi-1.10.6.tar.gz
~$ cd openmpi-1.10.2
~$ ./configure --prefix=/home/jormunr
~$ make
~$ make install
~$ sudo apt-get install r-base
~$ export LD_LIBRARY_PATH=/home/jormunr/lib:$LD_LIBRARY_PATH
~$ R

这会打开一个 R 终端,我调用了函数:

> install.packages("Rmpi", configure.args =
+ c("--with-Rmpi-include=/home/jormunr/include/",
+   "--with-Rmpi-libpath=/home/jormunr/lib/",
+   "--with-Rmpi-type=OPENMPI",
+   "--with-mpi=/home/jormunr/"))

现在执行没有错误,我可以使用以下 R 语句对其进行测试:

> library("Rmpi")
> mpi.spawn.Rslaves()
master (rank 0, comm. 1) of size 2 is running on: Valhalla
slave1 (rank 1, comm. 1) of size 2 is running on: Valhalla
> mpi.close.Rslaves()
[1] 1
> mpi.quit()

当我使用 OpenMPI 版本 2.1.0 尝试此过程时,安装成功完成,但上述测试有问题; mpi.spawn.Rslaves() 函数已完成,但 mpi.close.Rslaves() 未完成 - 它从未返回并且终端处于挂起状态。

【讨论】:

    【解决方案2】:

    我也遇到过类似的挑战。我找到了这个解决方案,其中 libopenmpi-dev 是秘密。

    sudo apt-get install openmpi-common openmpi-bin libopenmpi-dev r-base
    sudo apt-get install r-cran-rmpi
    sudo su
    R
    install.packages("doMPI", dependencies=TRUE)
    

    【讨论】:

      猜你喜欢
      • 2017-04-12
      • 2018-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-11
      相关资源
      最近更新 更多