subroutine print_memusage (string) 18,2
!
! Purpose: interface function to C routine print_memusage
!
! Method: Handle all character strings locally to avoid machine-dependent
! inter-language communication of character variables.
! print_memusage will return variables in native types.
!
use spmd_utils
, only: iam, masterproc
use cam_logfile
, only: iulog
!
! Arguments
!
character(len=*), intent(in) :: string
!
! Local workspace
!
integer :: size ! process size
integer :: rss ! process resident set size
integer :: share ! process shared memory size
integer :: text ! process text size
integer :: datastack ! data + stack memory
integer :: ret ! return code from get_memusage
!
! Externals
!
integer, external :: get_memusage
#if defined(BGL)
ret = -1
#else
ret = get_memusage (size, rss, share, text, datastack)
#endif
if (masterproc) then
write(iulog,'(a,i3," ",a,a)')'print_memusage iam ', iam, string, '. -1 in the next line means unavailable'
endif
if (ret == 0) then
#ifndef DEBUG
if (masterproc) &
#endif
write(iulog,'(a,5i8)')'print_memusage: size, rss, share, text, datastack=', &
size, rss, share, text, datastack
else if (masterproc) then
write(iulog,*)'print_memusage: get_memusage returns -1'
end if
return
end subroutine print_memusage