9 INTEGER(KIND=JPIM),
INTENT(IN) :: KOUT
10 CHARACTER(LEN=*),
INTENT(IN) :: CDLABEL
11 INTEGER(KIND=JPIM) :: I, IMYPROC, INPROC, IOFFSET
12 INTEGER(KIND=JPIM),
PARAMETER :: JP_MEMKEYS = 5
13 INTEGER(KIND=JPIM) IMEMKEYS(jp_memkeys)
14 INTEGER(KIND=JPIB) IMEMVALS(jp_memkeys)
15 REAL(KIND=JPRB),
ALLOCATABLE :: ZSEND(:), ZRECV(:)
16 INTEGER(KIND=JPIM),
ALLOCATABLE :: ICOUNTS(:)
17 CHARACTER(LEN=1) CLENV
19 CALL get_environment_variable(
"EC_PROFILE_MEM", clenv)
21 IF (kout >= 0 .AND. clenv /=
'0')
THEN 23 imyproc = mpl_myrank()
29 ALLOCATE(zsend(jp_memkeys))
30 ALLOCATE(zrecv(jp_memkeys * inproc))
31 ALLOCATE(icounts(inproc))
34 imemkeys(:) = (/1, 2, 3, 5, 6/)
35 CALL getmemvals(jp_memkeys, imemkeys, imemvals)
39 zsend(i) = imemvals(i)
43 icounts(:) = jp_memkeys
45 CALL mpl_gatherv(zsend(:), kroot=1, krecvcounts=icounts(:), &
46 &precvbuf=zrecv, cdstring=
'GETMEMSTAT:')
49 IF (imyproc == 1)
THEN 50 WRITE(kout,9000) trim(cdlabel)
51 9000
FORMAT(/,
"Memory Utilization Information (in bytes) : ",
a,/,79(
"="),//,&
52 &
"Node Max heapsize Max resident Current heap Max stack I/O-paging #",/,&
53 &
"==== ============ ============ ============ ============ ============",//)
56 imemvals(:) = zrecv(ioffset+1:ioffset+jp_memkeys)
57 WRITE(kout,
'(I4,5(3X,I12))') i,imemvals(:)
58 ioffset = ioffset + jp_memkeys
60 WRITE(kout,
'(/,a,/)')
'End of Memory Utilization Information'
subroutine getheapstat(KOUT, CDLABEL)
subroutine getmemstat(KOUT, CDLABEL)
subroutine getmemvals(N, KEY, KVAL)