Python MPI4Py Scatter sendbuf参数类型?

Python MPI4Py Scatter sendbuf参数类型?,python,parallel-processing,mpi,Python,Parallel Processing,Mpi,我在MPI4Py Python模块中的散布函数方面遇到了问题。 我的假设是,我应该能够为sendbuffer传递一个列表。但是,当我这样做时,或者确实添加了另外两个参数recvbuf和root时,会收到一条一致的错误消息: File "code/step3.py", line 682, in subbox_grid i = mpi_communicator.Scatter(station_range, station_data) File "Comm.pyx", line 427

我在MPI4Py Python模块中的散布函数方面遇到了问题。 我的假设是,我应该能够为sendbuffer传递一个列表。但是,当我这样做时,或者确实添加了另外两个参数recvbuf和root时,会收到一条一致的错误消息:

  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_范围,但我 不能正确理解分散参数类型


Python/MPI大师对此有什么解释吗?

如果您想移动原始缓冲区(与
聚集
一样),可以提供三元组
[缓冲区、大小、类型]
。请看演示以了解这方面的示例。如果你想发送Python对象,你应该使用更高级别的接口并调用
gather
(注意小写),它在内部使用
pickle

Dude,这个问题的答案=)我将不得不把代码从后备包中取出以检查你的答案…