2

OpenMPILinuxボックスに実行可能ファイルがあり、ライブラリまたはライブラリのいずれかでコンパイルされていることがわかっていMPICHます。

質問:どれを決定するのですか?

4

2 に答える 2

5

次の診断手順では、MPICH /MPICH2とOpenMPIが、リンクしている可能性のある唯一のMPI実装であると想定しています。他の(特に商用の)MPI実装は存在し、異なるライブラリ名やライブラリシンボルを持っている場合があります。

まず、動的にリンクしたかどうかを判断します。

% ldd my_executable
        linux-vdso.so.1 =>  (0x00007ffff972c000)
        libm.so.6 => /lib/libm.so.6 (0x00007f1f3c6cd000)
        librt.so.1 => /lib/librt.so.1 (0x00007f1f3c4c5000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00007f1f3c2a7000)
        libc.so.6 => /lib/libc.so.6 (0x00007f1f3bf21000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f1f3c969000)

そのリストに表示libmpich.soされている場合は、MPICH(またはMPICH2)に動的にリンクしています。表示されている場合はlibmpi.so、OpenMPIにリンクしています。

どちらも存在しない場合は、おそらく静的にリンクしているだけです。その場合、区別する記号を探すためにバイナリを調べる必要があります。

% ( nm my_executable | grep MPIR_Free_contextid >/dev/null ) && echo "MPICH"
% ( nm my_executable | grep ompi_comm_set_name >/dev/null ) && echo "Open MPI"
于 2013-03-26T13:56:30.227 に答える
1

Open MPIアプリケーションは、環境変数で渡すことができるMCAパラメーターに反応します。30に設定したようなシングルトンモード(つまりmpirun/なし)で実行可能ファイルを実行するだけです。mpiexecsysinfo_base_verbose

$ OMPI_MCA_sysinfo_base_verbose=30 ./program

次のような出力が得られた場合:

[hostname:pid] mca: base: components_open: Looking for sysinfo components

その場合、これは実行可能ファイルがOpenMPIを使用していることを示す強力な指標ではありません。

于 2013-03-26T15:01:45.217 に答える