C CLUSTERCOLORF.F (2006-08-22) C RETRIEVES #CLUSTERS AND #PROCS IN EACH CLUSTER. PROGRAM MAIN IMPLICIT NONE INCLUDE 'MPIF.H' INTEGER SELF, IERR INTEGER NNODES(32) INTEGER NCLUSTERS CALL MPI_INIT(IERR) CALL MPI_COMM_RANK(MPI_COMM_WORLD, SELF, IERR) CALL GETNNODES(NNODES, NCLUSTERS) IF (SELF .EQ. 0) THEN PRINT *, 'NCLUSTERS=', NCLUSTERS PRINT *, 'NNODES=', NNODES END IF CALL MPI_FINALIZE(IERR) END SUBROUTINE GETNNODES(NNODES, NCLUSTERS) IMPLICIT NONE INCLUDE 'MPIF.H' INTEGER NNODES(32) INTEGER NCLUSTERS INTEGER COLOR, ATTR, IERR, I LOGICAL FLAG CALL MPI_ATTR_GET(MPI_COMM_WORLD, IMPI_CLIENT_SIZE, & NCLUSTERS, FLAG, IERR) IF (.NOT. FLAG) THEN PRINT *, 'MPI_ATTR_GET FAILED' CALL EXIT(1) END IF CALL MPI_ATTR_GET(MPI_COMM_WORLD, IMPI_CLIENT_COLOR, & COLOR, FLAG, IERR) IF (.NOT. FLAG) THEN PRINT *, 'MPI_ATTR_GET FAILED' CALL EXIT(1) END IF DO I = 1, 32 NNODES(I) = 0 END DO NNODES(COLOR + 1) = 1 CALL MPI_ALLREDUCE(MPI_IN_PLACE, NNODES, NCLUSTERS, & MPI_INTEGER, MPI_SUM, MPI_COMM_WORLD, IERR) RETURN END