我在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终端,我调用了follow函数,导致错误:
> 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中,我作为安装参数之一提供。
答案 0 :(得分:2)
[免责声明:我不是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()没有完成 - 它从未返回,终端被挂起。
答案 1 :(得分:0)
我遇到了类似的挑战。我找到了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)