2017-03-29 53 views
1

我在VM VirtualBox上创建了一个新的ubuntu-16.04.2-desktop-amd64机器,我希望能够在Rmpi中使用R环境。在Ubuntu 16.04上安装Rmpi VirtualBox

以下两种方法都会给出类似的错误。

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

当Ubuntu的已安装的I开了一个终端并执行以下命令:

~$ 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’ 

我尝试过的其他方法inc inc lude使用本地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,我将其作为安装的参数之一提供。

+0

''sudo apt-get install r-cran-rmpi',因为我们确实有Rmpi作为预构建二进制文件。如果您必须使用本地OpenMPI安装,请检查autoconf代码。 –

+0

在启动R之前执行'export LD_LIBRARY_PATH =/home/jormunr/openmpi/lib:$ LD_LIBRARYP_PATH'。您也可以将它放在shell的启动文件中。它将允许运行时链接编辑器查找MPI库。 –

+0

@DirkEddelbuettel - 感谢您的评论。我很高兴使用预建立二进制。我尝试使用'sudo apt-get install r-cran-rmpi'来获取二进制文件,但是当我进入R并加载了'library(Rmpi)'时,我得到了相同的错误: libmpi.so:can not打开共享目标文件:无此文件或目录 错误:.inLoad在'Rmpi'的loadNamespace()中失败,详细信息: 调用:fun(libname,pkgname) 错误:无法启动MPI_Init()。退出 错误:'Rmpi'包或命名空间加载失败 –

回答

0

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

预构建二进制方法

虽然尝试各种方法来安装预编译的二进制我没拿到这个选项奏效。这涉及在终端中执行命令'sudo apt-get install r-cran-rmpi'来安装r-cran-rmpi预编译软件包,该软件包也会自动安装列出的先决条件libopenmpi1.10软件包。但是,libmpn.l0文件中没有包含libmpi.so文件,但Rmpi库预期会在R环境中导致无法找到该文件的错误。

本地安装方法

本地安装并最终与一些修改成功。我使用默认设置创建了一个新的ubuntu-16.04.2-desktop-amd64 VirtualBox映像,除了2048MB的内存和32GB的硬盘空间。安装后,我打开一个终端并执行the Jovinge Lab website中的命令,其中包含修改运行时链接编辑器路径的penultimate命令,并使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安装成功完成,但ABO测试有问题; mpi.spawn.Rslaves()函数完成,但mpi.close.Rslaves()没有完成 - 它从未返回并且终端被挂起。