mp_file_read_at_all_zv Subroutine

private subroutine mp_file_read_at_all_zv(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

Type IntentOptional Attributes Name
type(mp_file_type), intent(in) :: fh
integer(kind=file_offset), intent(in) :: offset
complex(kind=real_8), intent(out) :: msg(:)
integer, intent(in), optional :: msglen

Source Code

      SUBROUTINE mp_file_read_at_all_zv(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

         COMPLEX(kind=real_8), INTENT(OUT)                     :: msg(:)
         TYPE(mp_file_type), 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_zv'
            INTEGER                                    :: ierr
            ierr = 0

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