Установка Rmpi ​​в Ubuntu 16.04 VirtualBox

Я создал новую машину ubuntu-16.04.2-desktop-amd64 на виртуальной машине VirtualBox и хочу использовать среду 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 для установки пакета), что приводит к еще более обременительной ошибке во время выполнения.

Кто-нибудь знает, что я сделал неправильно или что я могу сделать, чтобы устранить эту ошибку установки?

Или, альтернативно, кто-нибудь смог успешно установить машину VirtualBox с Rmpi, используя какой-либо дистрибутив Linux или образ с предустановленными компонентами?

Оригинальный локальный подход к установке:

Я следовал инструкциям в этом блоге, чтобы загрузить 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, который я указал в качестве одного из параметров установки.

2 ответа

[Отказ от ответственности: я не эксперт по Linux и просто обладаю навыками на уровне пользователя. Будем весьма благодарны за любые замечания или исправления эксперта.]

Предварительно построить бинарный подход

Хотя я пробовал разные способы установки готовых двоичных файлов, мне не удалось заставить эту опцию работать. Это включало выполнение в терминале команды "sudo apt-get install r-cran-rmpi" для установки предварительно скомпилированных пакетов r-cran-rmpi, которая также автоматически устанавливает пакет libopenmpi1.10, который является обязательным условием в списке. Однако, похоже, что файл libmpi.so не включен в пакет libopenmpi1.10, но ожидается, что библиотека Rmpi ​​вызывает ошибку в среде R, что он не может найти этот файл.

Локальный подход к установке

Локальная установка в конце концов прошла успешно с несколькими поправками. Я создал новый образ VirtualBox ubuntu-16.04.2-desktop-amd64 с настройками по умолчанию, за исключением 2048 МБ памяти и 32 ГБ на жестком диске. После установки я открыл терминал и выполнил команды с веб-сайта Jovinge Lab, включив предпоследнюю команду, которая исправляет путь редактора ссылок во время выполнения и позволяет функции install.package() в R найти "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() не завершена - она ​​никогда не возвращалась, а терминал оставался зависшим.

Я испытывал подобные проблемы. Я нашел это решение, где 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)
Другие вопросы по тегам