gpt4 book ai didi

python - MPI4Py 分散 sendbuf 参数类型?

转载 作者:行者123 更新时间:2023-11-28 21:30:56 29 4
gpt4 key购买 nike

我在使用 MPI4Py Python 模块中的 Scatter 函数时遇到问题。我的假设是我应该能够向它传递发送缓冲区的单个列表。但是,当我这样做时,或者确实添加其他两个参数,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_range 的组合,但我一定不能正确理解 Scatter 参数类型。

Python/MPI 专家对此有澄清吗?

最佳答案

如果您想移动原始缓冲区(与Gather 一样),您可以提供一个三元组[buffer, size, type]。查看演示以获取相关示例。如果您想发送Python对象,您应该使用更高级别的接口(interface)并调用内部使用picklegather(注意小写)。

关于python - MPI4Py 分散 sendbuf 参数类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/818362/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com