Dear members,
I'm using mpi4py to speed up some computations in my cluster. In these computations I have to deal with very dense matrices.
I have a script that, in some point, tries to gather some matrices using MPI_GATHER
In this script, when I used more than 5 process, thrown the following error message:
Traceback (most recent call last):
File "example.py", line 10, in <module>
gather_m1 = comm.gather(x,root=0)
File "Comm.pyx", line 869, in mpi4py.MPI.Comm.gather (src/mpi4py.MPI.c:67905)
File "pickled.pxi", line 612, in mpi4py.MPI.PyMPI_gather (src/mpi4py.MPI.c:31966)
File "pickled.pxi", line 144, in mpi4py.MPI._p_Pickle.allocv (src/mpi4py.MPI.c:27005)
File "pickled.pxi", line 93, in mpi4py.MPI._p_Pickle.alloc (src/mpi4py.MPI.c:26327)
SystemError: Negative size passed to PyString_FromStringAndSize
#####
My cluster has two hosts with Ubuntu Server 12.04 LTS 64bits, each one with 24 processors and 64GB of RAM memory
Follow below an example that reproduces the aforementioned error:
import numpy
from mpi4py import MPI
comm = MPI.COMM_WORLD
rank = comm.Get_rank()
x = numpy.random.rand(400,400,400) * 1000
x = numpy.array(x,dtype='double')
gather_m1 = comm.gather(x,root=0)
if(rank == 0):
print(len(gather_m1))
########
Whats is wrong?
Is some kind of overflow? If yes, the problem is in the mpi bind or in the mpi itself?
Thanks in advance
Tiago