mp_file_read_at_all_rv Subroutine

private subroutine mp_file_read_at_all_rv(fh, offset, msg, msglen)

(parallel) Blocking collective file read using explicit offsets (serial) Unformatted stream read

MPI-I/O mapping mpi_file_read_at_all

STREAM-I/O mapping READ

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: fh
integer(kind=file_offset), intent(in) :: offset
real(kind=real_4), intent(out) :: msg(:)
integer, intent(in), optional :: msglen

Contents


Source Code

      SUBROUTINE mp_file_read_at_all_rv(fh, offset, msg, msglen)
      !! (parallel) Blocking collective file read using explicit offsets
      !! (serial) Unformatted stream read
      !!
      !! MPI-I/O mapping    mpi_file_read_at_all
      !!
      !! STREAM-I/O mapping   READ

         REAL(kind=real_4), INTENT(OUT)                     :: msg(:)
         INTEGER, INTENT(IN)                        :: fh
         INTEGER, INTENT(IN), OPTIONAL              :: msglen
         INTEGER(kind=file_offset), INTENT(IN)      :: offset

         INTEGER                                    :: msg_len

         msg_len = SIZE(msg)
         IF (PRESENT(msglen)) msg_len = msglen
#if defined(__parallel)
         BLOCK
            CHARACTER(LEN=*), PARAMETER :: routineN = 'mp_file_read_at_all_rv'
            INTEGER                                    :: ierr
            ierr = 0

            CALL MPI_FILE_READ_AT_ALL(fh, offset, msg, msg_len, MPI_REAL, MPI_STATUS_IGNORE, ierr)
            IF (ierr .NE. 0) &
               DBCSR_ABORT("mpi_file_read_at_all_rv @ "//routineN)
         END BLOCK
#else
         READ (UNIT=fh, POS=offset + 1) msg(1:msg_len)
#endif
      END SUBROUTINE mp_file_read_at_all_rv