SUBROUTINE mp_perf_env_describe(perf_env, iw)
TYPE(mp_perf_env_type), POINTER :: perf_env
INTEGER, INTENT(IN) :: iw
#if defined(__parallel)
INTEGER :: i
REAL(KIND=dp) :: vol
#endif
IF (.NOT. ASSOCIATED(perf_env)) THEN
DBCSR_ABORT("unassociated perf_env : mpiwrap @ mp_perf_env_describe")
END IF
IF (perf_env%ref_count < 1) THEN
DBCSR_ABORT("invalid perf_env%ref_count : mpiwrap @ mp_perf_env_describe")
END IF
#if defined(__parallel)
IF (iw > 0) THEN
WRITE (iw, '( " -", 77X, "-" )')
WRITE (iw, '( " -", 21X, A, 21X, "-" )') ' DBCSR MESSAGE PASSING PERFORMANCE '
WRITE (iw, '( " -", 77X, "-" )')
WRITE (iw, '( 1X, 79("-"))')
WRITE (iw, '( A, A, A )') ' ROUTINE', ' CALLS ', &
' AVE VOLUME [Bytes]'
DO i = 1, MAX_PERF
IF (perf_env%mp_perfs(i)%count > 0) THEN
vol = perf_env%mp_perfs(i)%msg_size/REAL(perf_env%mp_perfs(i)%count, KIND=dp)
IF (vol < 1.0_dp) THEN
WRITE (iw, '(1X,A15,T17,I10)') &
ADJUSTL(perf_env%mp_perfs(i)%name), perf_env%mp_perfs(i)%count
ELSE
WRITE (iw, '(1X,A15,T17,I10,T40,F11.0)') &
ADJUSTL(perf_env%mp_perfs(i)%name), perf_env%mp_perfs(i)%count, &
vol
END IF
END IF
END DO
WRITE (iw, '( 1X, 79("-"))')
END IF
#else
MARK_USED(iw)
#endif
END SUBROUTINE mp_perf_env_describe