Diego Avesani
2018-08-22 09:49:55 UTC
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
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