1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
C -*- Mode: Fortran; -*-
C
C
C (C) 2001 by Argonne National Laboratory.
C See COPYRIGHT in top-level directory.
C
program main
implicit none
include 'mpif.h'
integer ierr, errs
logical flag
integer value, commsize, commrank
errs = 0
call mpi_init( ierr )
call mpi_comm_size( MPI_COMM_WORLD, commsize, ierr )
call mpi_comm_rank( MPI_COMM_WORLD, commrank, ierr )
call mpi_attr_get( MPI_COMM_WORLD, MPI_TAG_UB, value, flag, ierr
$ )
if (.not. flag) then
errs = errs + 1
print *, "Could not get TAG_UB"
else
if (value .lt. 32767) then
errs = errs + 1
print *, "Got too-small value (", value, ") for TAG_UB"
endif
endif
call mpi_attr_get( MPI_COMM_WORLD, MPI_HOST, value, flag, ierr )
if (.not. flag) then
errs = errs + 1
print *, "Could not get HOST"
else
if ((value .lt. 0 .or. value .ge. commsize) .and. value .ne.
$ MPI_PROC_NULL) then
errs = errs + 1
print *, "Got invalid value ", value, " for HOST"
endif
endif
call mpi_attr_get( MPI_COMM_WORLD, MPI_IO, value, flag, ierr )
if (.not. flag) then
errs = errs + 1
print *, "Could not get IO"
else
if ((value .lt. 0 .or. value .ge. commsize) .and. value .ne.
$ MPI_ANY_SOURCE .and. value .ne. MPI_PROC_NULL) then
errs = errs + 1
print *, "Got invalid value ", value, " for IO"
endif
endif
call mpi_attr_get( MPI_COMM_WORLD, MPI_WTIME_IS_GLOBAL, value,
$ flag, ierr )
if (flag) then
C Wtime need not be set
if (value .lt. 0 .or. value .gt. 1) then
errs = errs + 1
print *, "Invalid value for WTIME_IS_GLOBAL (got ", value,
$ ")"
endif
endif
call mpi_attr_get( MPI_COMM_WORLD, MPI_APPNUM, value, flag, ierr
$ )
C appnum need not be set
if (flag) then
if (value .lt. 0) then
errs = errs + 1
print *, "MPI_APPNUM is defined as ", value,
$ " but must be nonnegative"
endif
endif
call mpi_attr_get( MPI_COMM_WORLD, MPI_UNIVERSE_SIZE, value,
$ flag, ierr )
C MPI_UNIVERSE_SIZE need not be set
if (flag) then
if (value .lt. commsize) then
errs = errs + 1
print *, "MPI_UNIVERSE_SIZE = ", value,
$ ", less than comm world (", commsize, ")"
endif
endif
call mpi_attr_get( MPI_COMM_WORLD, MPI_LASTUSEDCODE, value, flag
$ , ierr )
C Last used code must be defined and >= MPI_ERR_LASTCODE
if (flag) then
if (value .lt. MPI_ERR_LASTCODE) then
errs = errs + 1
print *, "MPI_LASTUSEDCODE points to an integer (",
$ MPI_ERR_LASTCODE, ") smaller than MPI_ERR_LASTCODE (",
$ value, ")"
endif
else
errs = errs + 1
print *, "MPI_LASTUSECODE is not defined"
endif
C Check for errors
if (errs .eq. 0) then
print *, " No Errors"
else
print *, " Found ", errs, " errors"
endif
call MPI_Finalize( ierr )
end
|