gpt4 book ai didi

python - 无法发送超过特定长度的 MPI 消息

转载 作者:太空宇宙 更新时间:2023-11-03 17:16:19 28 4
gpt4 key购买 nike

我正在使用 Python .7.10 的 Ubuntu 14.04.3 系统上运行针对 OpenMPI 1.10.1 构建的 mpi4py 2.0.0。由于某种原因,尝试发送大于 64 Kb 的消息会导致发送/接收挂起;但是,我能够使用完全相同的软件和 OpenMPI/mpi4py 软件包在其他 Ubuntu 14 系统上成功发送大消息。我还能够在使用 OpenMPI 的 C 程序中成功发送大消息。这表明环境中存在某些因素对 mpi4py 执行的 MPI 通信产生不利影响。关于什么可能干扰 mpi4py 有什么想法吗?

下面是一个代码示例,当 N 设置为 65537 或更大时,该代码在一个系统上运行,但在另一个系统上挂起。

import os
import sys

from mpi4py import MPI
import numpy as np

N = 65537

def worker():
comm = MPI.Comm.Get_parent()
size = comm.Get_size()
rank = comm.Get_rank()

buf = np.empty(N, np.byte)
comm.Recv(buf=buf)

if __name__ == '__main__':
script_file_name = os.path.basename(__file__)
if MPI.Comm.Get_parent() != MPI.COMM_NULL:
worker()
else:
comm = MPI.COMM_SELF.Spawn(sys.executable,
args=[script_file_name],
maxprocs=1)

comm.Send(np.random.randint(0, 256, N).astype(np.byte), 0)

我还尝试使用显式指定的固定长度缓冲区将 pickled send/recv 替换为非 pickled Send/Recv,但这对问题没有任何影响。

奇怪的是,该问题似乎并没有影响使用同一通信器的对等进程之间的传输。

最佳答案

问题已解决:OpenMPI 对 Docker 创建的虚拟网络接口(interface)的存在感到困惑。删除接口(interface)使奇怪的现象消失了,尽管我们也可以告诉 OpenMPI ignore the interface .

关于python - 无法发送超过特定长度的 MPI 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33644807/

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