openmpi ライブラリへのリンクに関する問題 Ubuntu 14.04

openmpi ライブラリへのリンクに関する問題 Ubuntu 14.04

OpenSuse 13.2 で動作する実行ファイルがあります。共有ライブラリにリンクしています。一部のライブラリは実行ファイルに付属しており、その他のライブラリはシステムで検出されます。OpenSuse 13.2 でコンパイルされたバージョンを Ubuntu 14.04 で実行できるかどうかを確認しようとしています。実行ファイルで 'ldd' を使用すると、不足しているライブラリ (gfortran、libblas、liblapack など) をインストールしています。openmpi パッケージのライブラリがいくつか必要です。使用したのは、sudo apt-get install openmpi-bin libopenmpi-dev です。

ただし、実行可能ファイルは 2 つのライブラリを見つけることができないようです:

libmpi_usempi.so.1 を参照してください。

libmpi_mpifh.so.2

OpenSuse では、これらのライブラリに対して 'ldd' を使用すると、次のものが含まれます: libmpi_mpifh.so.2:

linux-vdso.so.1 (0x00007fff433d9000)
libmpi.so.1 => /usr/lib64/mpi/gcc/openmpi/lib64/libmpi.so.1 (0x00007f7b4ccf3000)
libopen-pal.so.5 => /usr/lib64/mpi/gcc/openmpi/lib64/libopen-pal.so.5 (0x00007f7b4ca32000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f7b4c7ea000)
libc.so.6 => /lib64/libc.so.6 (0x00007f7b4c442000)
libopen-rte.so.5 => /usr/lib64/mpi/gcc/openmpi/lib64/libopen-rte.so.5 (0x00007f7b4c1d2000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f7b4bfce000)
librt.so.1 => /lib64/librt.so.1 (0x00007f7b4bdc6000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f7b4bbc2000)
/lib64/ld-linux-x86-64.so.2 (0x00007f7b4d212000)

libmpi_usempi.so.1: を参照してください。

linux-vdso.so.1 (0x00007fff9adfc000)
libmpi_mpifh.so.2 => /usr/lib64/mpi/gcc/openmpi/lib64/libmpi_mpifh.so.2 (0x00007f13809a3000)
libmpi.so.1 => /usr/lib64/mpi/gcc/openmpi/lib64/libmpi.so.1 (0x00007f13806d2000)
libopen-pal.so.5 => /usr/lib64/mpi/gcc/openmpi/lib64/libopen-pal.so.5 (0x00007f1380412000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f13801ca000)
libc.so.6 => /lib64/libc.so.6 (0x00007f137fe21000)
libopen-rte.so.5 => /usr/lib64/mpi/gcc/openmpi/lib64/libopen-rte.so.5 (0x00007f137fbb2000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f137f9ae000)
librt.so.1 => /lib64/librt.so.1 (0x00007f137f7a5000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f137f5a2000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1380e8c000)

システム間でソフトウェアを移動し、利用可能な共有ライブラリにリンクするという概念は、私にとっては初めてのことです。Ubuntu 14.04 に openmpi パッケージをインストールした後、実行ファイルがこれら 2 つのライブラリを見つけられない場合、このプログラムは OpenSuse から Ubuntu に移植できないと結論付けるべきでしょうか?

答え1

実行可能ファイルまたはバイナリをあるディストリビューションから別のディストリビューションにコピーするだけでは不十分です。運が良ければ動作しますが、ほとんどの場合は失敗します。
ソース コードがある場合は、Ubuntu でソフトウェアを再コンパイルして動作させることができます。

また、どのディストリビューションでも動作するアプリケーションコンテナを構築する取り組みもあります。MPI関連のものについては、特異点この記事の執筆時点では、これが最善の選択かもしれません。ただし、あなたの場合は、Suse 13.2 システム上でアプリケーション コンテナーを構築する必要があります。

関連情報