【发布时间】: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