2

mpi4py.MPI.COMM_SELF.SpawnAnaconda の Python ディストリビューションを使用するとエラーが発生するようです。私の質問はmpi4py、何らかの方法で Anaconda のインストールで間違ったバージョンの MPI (mpich v openmpi) に対してビルドされている可能性があるかどうかです。

問題は、次のコード

# spawn.py
import mpi4py.MPI as MPI
import sys
print 'mpi4py:',MPI.__file__
comm = MPI.COMM_SELF.Spawn(sys.executable,
                           args=['hello.py'],
                           maxprocs=1)

次のエラーが発生します

$ /home/wd15/anaconda/bin/python spawn.py
mpi4py: /home/wd15/anaconda/lib/python2.7/site-packages/mpi4py/MPI.so
[mpiexec@loki] match_arg (./utils/args/args.c:122): unrecognized argument pmi_args
[mpiexec@loki] HYDU_parse_array (./utils/args/args.c:140): argument matching returned error
[mpiexec@loki] parse_args (./ui/mpich/utils.c:1387): error parsing input array
[mpiexec@loki] HYD_uii_mpx_get_parameters (./ui/mpich/utils.c:1438): unable to parse user arguments
...

Anaconda'smpi4pyは mpich を使用していると思います。システムpythonを使用すると動作します。

$ /usr/bin/python spawn.py
mpi4py: /usr/lib/python2.7/dist-packages/mpi4py/MPI.so
hello

システムmpi4pyは openmpi を使用します。mpi4pyAnaconda で競合する MPI バージョンを使用してビルドすると、問題が発生する可能性はありますか?

また、呼び出しmpi4pyの下で実行すると、パッケージは Anaconda で正しく機能するようです。mpirun例えば

# test_mpi4py.py
import mpi4py.MPI as MPI
print MPI.COMM_WORLD.Get_rank()

あげる

$ mpirun -n 2 /home/wd15/anaconda/bin/python test_mpi4py.py
0
1
4

2 に答える 2

1

私は同じ問題に遭遇し、1 つの解決策は、mpich の代わりに openmpi を使用して mpi4py をコンパイルすることでした (mpi4py ドキュメントの「Compute Pi」の例を参照してください)。

この未解決の問題を参照してください。

テスト対象: Ubuntu 16.04 Anaconda 4.0.0 python 3.5.0 mpich 3.2.0 openmpi 1.10.2 mpi4py 2.0.0

于 2016-05-31T15:18:58.627 に答える
0

Anaconda は MPICH にバンドルされています。anaconda の mpi4py を使用するのではなく、システム MPI インストールに対して明示的にリンクして、ソースから独自のインストールをビルドする必要があります。

于 2014-03-24T20:23:39.350 に答える