尝试发送大数据时mpi4py挂起

时间:2014-02-03 13:09:48

标签: send hang mpi4py

我最近遇到了一个问题,试图使用mpi4py-library中的'send'命令在多个处理器之间共享大数据。即使是1000x3的numpy浮点数也太大而无法发送。任何想法如何克服这个问题?

提前thx。

3 个答案:

答案 0 :(得分:2)

我找到了一个简单的解决方案。将数据划分为足够小的块......

答案 1 :(得分:1)

我在Isend遇到了同样的问题(不是Send)。似乎问题是由于发送过程在接收方收到数据之前终止。我通过在每个进程结束时包含comm.barrier()调用来修复此问题。

答案 2 :(得分:0)

大数据的点对点发送/恢复工作:

#!/usr/bin/env python
from mpi4py import MPI
import numpy

comm = MPI.COMM_WORLD
rank = comm.Get_rank()

if rank == 0:
    data = numpy.arange(300*100000, dtype='f')
    comm.Send([data, MPI.FLOAT], dest=1, tag=77)
elif rank == 1:
    data = numpy.empty(300*100000, dtype='f')
    comm.Recv([data, MPI.FLOAT], source=0, tag=77)
    print data

使用两个处理器运行它:

% ~/work/soft/mpich/bin/mpiexec -np 2 ./send-numpy.py
[  0.00000000e+00   1.00000000e+00   2.00000000e+00 ...,   2.99999960e+07
   2.99999980e+07   3.00000000e+07]