On 30 April 2012 17:29, Jeremy Bejarano <
jmbe...@gmail.com> wrote:
> import numpy
> from mpi4py import MPI
> comm = MPI.COMM_WORLD
> rank = comm.Get_rank()
> x = numpy.linspace(0,100,11)
> xlocal = numpy.zeros(1)
> comm.Scatterv([x,(1,1,9),(0,1,2),MPI.DOUBLE],xlocal)
The receive buffer at process 2 is too small, it should have 9 entries
(but xlocal has 1 entry at all processes). The code below is the
correct one:
import numpy
from mpi4py import MPI
comm = MPI.COMM_WORLD
rank = comm.Get_rank()
if rank == 0:
x = numpy.linspace(0,100,11)
else:
x = None
if rank == 2:
xlocal = numpy.zeros(9)
else:
xlocal = numpy.zeros(1)
comm.Scatterv([x,(1,1,9),(0,1,2),MPI.DOUBLE],xlocal)
print xlocal
$ mpiexec -n 3 parallel.py
[ 0.]
[ 10.]
[ 20. 30. 40. 50. 60. 70. 80. 90. 100.]
--
Lisandro Dalcin
---------------
CIMEC (INTEC/CONICET-UNL)
Predio CONICET-Santa Fe
Colectora RN 168 Km 472, Paraje El Pozo
3000 Santa Fe, Argentina
Tel:
+54-342-4511594 (ext 1011)
Tel/Fax:
+54-342-4511169