2017-03-29 23 views
1

私はVM VirtualBoxに新しいubuntu-16.04.2-desktop-amd64マシンを作成しましたが、RmpiでR環境を使用したいと考えています。UbuntuにRmpiをインストールする16.04 VirtualBox

以下の両方の方法で同様のエラーが発生します。

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’ 

私が試した代替アプローチludeはローカルのOpenMPIインストールを使用し、R関数install.packagesを使用してRmpiパッケージをインストールします(下記参照)。これらすべてが同じエラーを引き起こしました。

上記の手順(パッケージをインストールするためのR関数の使用を含む)の第2のコマンドを~$ sudo apt-get install mpichに置き換えてMPICHを使用してみました。これにより、さらに致命的なランタイムエラーが発生します。

このインストールエラーを解決するために何が間違っているのか、何ができますか?

また、任意のLinuxディストリビューションや事前にインストールされたコンポーネントを使用して、Rmpiを搭載したVirtualBoxマシンを正常にインストールできましたか?

オリジナルローカルインストールアプローチ:

私は、OpenMPIのバージョン2.1.0をダウンロードしてコンパイルし、それをインストールしてthis blogの指示に従っています。私は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/")) 

それは私が/「libmpi.so.20」ファイルは、/ homeの中にあることがわかります

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 

次のエラーになりますjormunr/openmpi/libをインストールのパラメータの1つとして提供しました。

+0

'sudo apt-get install r-cran-rmpi'は、Rmpiを事前ビルドされたバイナリとして持っているので、実行します。ローカルOpenMPIのインストールを使用する必要がある場合は、autoconfコードを確認してください。 –

+0

Rを起動する前に、 'export LD_LIBRARY_PATH =/home/jormunr/openmpi/lib:$ LD_LIBRARYP_PATH'を実行してください。これはあなたのシェルのスタートアップファイルにも入れられます。ランタイムリンクエディタは、MPIライブラリを見つけることができます。 –

+0

@DirkEddelbuettel - ご意見ありがとうございます。私はプレビルドバイナリを使用して非常に満足しています。私は 'sudo apt-get install r-cran-rmpi'を使用してバイナリを取得しようとしましたが、Rに入って「ライブラリ(Rmpi)」をロードしたときに同じエラーが発生しました: libmpi.so:できません開いている共有オブジェクトファイル:そのようなファイルやディレクトリはありません エラー: 'Rmpi'のloadNamespace()で.onLoadが失敗しました。詳細: 呼び出し:fun(libname、pkgname) エラー:MPI_Init()を開始できません。出口 エラー: 'Rmpi'のパッケージまたは名前空間の読み込みに失敗しました –

答えて

0

[免責事項:私はLinuxの専門家ではなく、単にユーザーレベルのスキルを持っています。専門家からの任意拠出金や修正が非常に高く評価されます。]

バイナリのアプローチを事前に構築

私は仕事には、このオプションを取得するために管理していませんでしたビルド済みのバイナリをインストールするためのさまざまな方法を試しますが。これには、r-cran-rmpi prebuiltパッケージをインストールするためのコマンド「sudo apt-get install r-cran-rmpi」をターミナルで実行し、リストされた前提条件であるlibopenmpi1.10パッケージを自動的にインストールします。しかし、ファイル 'libmpi.so'はlibopenmpi1.10パッケージには含まれていませんが、R環境ではこのファイルが見つからないというエラーが発生するRmpiライブラリが必要です。

ローカルインストールアプローチ

ローカルインストールは、最終的には、いくつかの改正で成功でした。私は2048MBのメモリと32GBのハードドライブスペースを除いて、デフォルトの設定で新しいubuntu-16.04.2-desktop-amd64 VirtualBoxイメージを作成しました。インストールされたら、ターミナルを開き、実行時リンクエディタのパスを修正し、Rのinstall.package()関数が 'libmpi.so'ファイルを見つけることを可能にする最後のコマンドを含む、the Jovinge Lab websiteのコマンドを実行しました。 (これはバージョン1の最新バージョンのリリースであるとしても1.10.6にバージョンを変更 - バージョン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/")) 

> 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のバージョンが正常に完了し、インストールが、ABOを2.1.0で、私はこのプロセスをしようとしたとき:今すぐエラーなしで実行され、私は、次のR文でそれをテストすることができ

このveテストに問題があった。 mpi.spawn.Rslaves()関数は完了しましたが、mpi.close.Rslaves()は完了しませんでした。返されることはなく、端末はハングアップしていました。

関連する問題