2016-10-29 3 views
0

を働いていないmpi4pyにMPI.MINLOCを削減し、Allreduce結果私はこのメッセージを受け取ります:MPIの集団は、私がmpi4pyでこのコードを実行しようとしている

Traceback (most recent call last): 
Traceback (most recent call last): 
    File "./reduce_minlock.py", line 11, in <module> 
Traceback (most recent call last): 
    File "./reduce_minlock.py", line 11, in <module> 
    recvdata=comm.reduce(senddata,None,root=0,op=MPI.MINLOC) 
    File "MPI/Comm.pyx", line 1298, in mpi4py.MPI.Comm.reduce (src/mpi4py.MPI.c:109386) 
TypeError: reduce() got multiple values for keyword argument 'op' 
    recvdata=comm.reduce(senddata,None,root=0,op=MPI.MINLOC) 
    File "MPI/Comm.pyx", line 1298, in mpi4py.MPI.Comm.reduce (src/mpi4py.MPI.c:109386) 
TypeError: reduce() got multiple values for keyword argument 'op' 
Traceback (most recent call last): 
    File "./reduce_minlock.py", line 11, in <module> 
    recvdata=comm.reduce(senddata,None,root=0,op=MPI.MINLOC) 
    File "MPI/Comm.pyx", line 1298, in mpi4py.MPI.Comm.reduce (src/mpi4py.MPI.c:109386) 
TypeError: reduce() got multiple values for keyword argument 'op' 
    File "./reduce_minlock.py", line 11, in <module> 
    recvdata=comm.reduce(senddata,None,root=0,op=MPI.MINLOC) 
    File "MPI/Comm.pyx", line 1298, in mpi4py.MPI.Comm.reduce (src/mpi4py.MPI.c:109386) 
TypeError: reduce() got multiple values for keyword argument 'op' 

私はこのコードをTutorialから受け取りました。私が理解していないのは、正確な数のパラメータを使用しているときに、reduceの型エラーが発生する理由です。私はMPI.MINLOCがmpi4pyによってサポートされているのだろうかと思います。私はこの操作に関する警告をドキュメンテーションで見つけられませんでした。これらは私のシステム構成です:

助けてください?

答えて

0

エラーメッセージをより注意深く読んで理解すると、多くの潜在的な問題を軽減できます。

これは純粋にPythonicランタイムエラーであり、MPI自体とは関係ありません。それは最初にMPI.Comm.reduce()の正しい署名を検索し、引数の数が正確であることを確認してから確認するように促すはずです。

def reduce(self, sendobj, op=SUM, int root=0): 

あなたは、位置と名前と値のペアとして2として二つの引数を提供している。そして実際、Comm.pyxに見てはreduce()self参照のほかに3つだけの引数(1つ必要と不履行2)をとることが明らかになりました。第2の位置引数Noneと第2の位置指定引数は両方ともopの値を提供します。したがって、タイプエラーです。同様に、allreduce()が3つではなく2つの引数しか取らないことを確認することができます。

結論は、チュートリアルでは、間違って、おそらくmpi4pyの以前のバージョンに基づいており、あなたがreduce()allreduce()に渡している引数の数が実際に正確ではないということです。両方の呼び出しからNone引数を削除する必要があります。

関連する問題