2009-05-03 7 views
2

MPI4Py Pythonモジュールのスキャッタ機能に問題があります。 私はsendbufferのための単一のリストを渡すことができるはずです。私がいること、あるいは実際に行うときしかし、私は一貫性のエラーメッセージが出てい他の二つの引数、recvbufとルートを追加:ここでMPI4Pyスキャッタsendbuf引数タイプ?

File "code/step3.py", line 682, in subbox_grid 
    i = mpi_communicator.Scatter(station_range, station_data) 
    File "Comm.pyx", line 427, in mpi4py.MPI.Comm.Scatter (src/ 
mpi4py_MPI.c:44993) 
    File "message.pxi", line 321, in mpi4py.MPI._p_msg_cco.for_scatter 
(src/mpi4py_MPI.c:14497) 
    File "message.pxi", line 232, in mpi4py.MPI._p_msg_cco.for_cco_send 
(src/mpi4py_MPI.c:13630) 
    File "message.pxi", line 36, in mpi4py.MPI.message_simple (src/ 
mpi4py_MPI.c:11904) 
ValueError: message: expecting 2 or 3 items 

を上記の682 上記の数行を開始し、切り取ら関連するコードです。

for station in stations 
     #snip--do some stuff with station 
     station_data = [] 
     station_range = range(1,len(station)) 
     mpi_communicator = MPI.COMM_WORLD 
     i = mpi_communicator.Scatter(station_range, nsm) 
     #snip--do some stuff with station[i] 
     nsm = combine(avg, wt, dnew, nf1, nl1, wti[i], wtm, station[i].id) 
     station_data = mpi_communicator.Gather(station_range, nsm) 

私はstation_rangeを初期化する組み合わせの数を試みたが、私は適切に散布引数の型を理解してはいけません 。

Python/MPIの教祖はこれを明確にしていますか?

答えて

6

ローバッファを移動する場合は(Gatherのように)、トリプレット[buffer, size, type]を入力します。この例のデモをご覧ください。 Pythonオブジェクトを送信する場合は、より高いレベルのインターフェイスを使用し、を内部的に使用するgather(小文字の注記)を呼び出す必要があります。

+0

私はあなたの答えを確認するためにコードをプルする必要があります。 – Noel

関連する問題