I think Gilles is right: remember that datatypes like MPI_2DOUBLE_PRECISION are actually 2 values. So if you want to send 1 pair of double precision values with MPI_2DOUBLE_PRECISION, then your count is actually 1.
> On Aug 22, 2018, at 8:02 AM, Gilles Gouaillardet > <gilles.gouaillar...@gmail.com> wrote: > > Diego, > > Try calling allreduce with count=1 > > Cheers, > > Gilles > > On Wednesday, August 22, 2018, Diego Avesani <diego.aves...@gmail.com> wrote: > Dear all, > > I am going to start again the discussion about MPI_MAXLOC. We had one a > couple of week before with George, Ray, Nathan, Jeff S, Jeff S., Gus. > > This because I have a problem. I have two groups and two communicators. > The first one takes care of compute the maximum vale and to which processor > it belongs: > > nPart = 100 > > IF(MPI_COMM_NULL .NE. MPI_MASTER_COMM)THEN > > CALL MPI_ALLREDUCE( EFFMAX, EFFMAXW, 2, MPI_2DOUBLE_PRECISION, MPI_MAXLOC, > MPI_MASTER_COMM,MPImaster%iErr ) > whosend = INT(EFFMAXW(2)) > gpeff = EFFMAXW(1) > CALL MPI_BCAST(whosend,1,MPI_INTEGER,whosend,MPI_MASTER_COMM,MPImaster%iErr) > > ENDIF > > If I perform this, the program set to zero one variable, specifically nPart. > > if I print: > > IF(MPI_COMM_NULL .NE. MPI_MASTER_COMM)THEN > WRITE(*,*) MPImaster%rank,nPart > ELSE > WRITE(*,*) MPIlocal%rank,nPart > ENDIF > > I get; > > 1 2 > 1 2 > 3 2 > 3 2 > 2 2 > 2 2 > 1 2 > 1 2 > 3 2 > 3 2 > 2 2 > 2 2 > > > 1 0 > 1 0 > 0 0 > 0 0 > > This seems some typical memory allocation problem. > > What do you think? > > Thanks for any kind of help. > > > > > Diego > > _______________________________________________ > users mailing list > users@lists.open-mpi.org > https://lists.open-mpi.org/mailman/listinfo/users -- Jeff Squyres jsquy...@cisco.com _______________________________________________ users mailing list users@lists.open-mpi.org https://lists.open-mpi.org/mailman/listinfo/users