Dear all, Dear Jeff, I am very sorry, but I do not know how to do this kind of comparison.
this is my peace of code: CALL MPI_GROUP_INCL(GROUP_WORLD, nPSObranch, MRANKS, MASTER_GROUP,ierr) CALL MPI_COMM_CREATE_GROUP(MPI_COMM_WORLD,MASTER_GROUP,0,MASTER_COMM,iErr) ! IF(MPI_COMM_NULL .NE. MASTER_COMM)THEN CALL MPI_COMM_RANK(MASTER_COMM, MPImaster%rank,MPIlocal%iErr) CALL MPI_COMM_SIZE(MASTER_COMM, MPImaster%nCPU,MPIlocal%iErr) ELSE MPImaster%rank = MPI_PROC_NULL ENDIF and then IF(MPImaster%rank.GE.0)THEN CALL MPI_SCATTER(PP, 10, MPI_DOUBLE, PPL, 10,MPI_DOUBLE, 0, MASTER_COMM, iErr) ENDIF What I should compare? Thanks again Diego On 1 August 2017 at 16:18, Jeff Squyres (jsquyres) <jsquy...@cisco.com> wrote: > On Aug 1, 2017, at 5:56 AM, Diego Avesani <diego.aves...@gmail.com> wrote: > > > > If I do this: > > > > CALL MPI_SCATTER(PP, npart, MPI_DOUBLE, PPL, 10,MPI_DOUBLE, 0, > MASTER_COMM, iErr) > > > > I get an error. This because some CPU does not belong to MATER_COMM. The > alternative should be: > > > > IF(rank.LT.0)THEN > > CALL MPI_SCATTER(PP, npart, MPI_DOUBLE, PPL, 10,MPI_DOUBLE, 0, > MASTER_COMM, iErr) > > ENDIF > > MPI_PROC_NULL is a sentinel value; I don't think you can make any > assumptions about its value (i.e., that it's negative). In practice, it > probably always is, but if you want to check the rank, you should compare > it to MPI_PROC_NULL. > > That being said, comparing MASTER_COMM to MPI_COMM_NULL is no more > expensive than comparing an integer. So that might be a bit more expressive > to read / easier to maintain over time, and it won't cost you any > performance. > > -- > Jeff Squyres > jsquy...@cisco.com > > _______________________________________________ > users mailing list > users@lists.open-mpi.org > https://lists.open-mpi.org/mailman/listinfo/users >
_______________________________________________ users mailing list users@lists.open-mpi.org https://lists.open-mpi.org/mailman/listinfo/users