(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
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(mp_file_type), | intent(in) | :: | fh | |||
integer(kind=file_offset), | intent(in) | :: | offset | |||
real(kind=real_4), | intent(out) | :: | msg(:) | |||
integer, | intent(in), | optional | :: | msglen |
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(:) 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_rv' INTEGER :: ierr ierr = 0 CALL MPI_FILE_READ_AT_ALL(fh%handle, 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%handle, POS=offset + 1) msg(1:msg_len) #endif END SUBROUTINE mp_file_read_at_all_rv