File: mem_analyse.py

package info (click to toggle)
espresso 6.7-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye
  • size: 311,040 kB
  • sloc: f90: 447,429; ansic: 52,566; sh: 40,631; xml: 37,561; tcl: 20,077; lisp: 5,923; makefile: 4,502; python: 4,379; perl: 1,219; cpp: 761; fortran: 618; java: 568; awk: 128
file content (59 lines) | stat: -rwxr-xr-x 1,780 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
from __future__ import print_function
import numpy as np

#1) Run dev-tools/mem_counter inside EPW/src
#2) compile UtilXlib/mem_counter.f90  with -D__DEBUG flag
#3) Run EPW
#4) grep ' allocating' epw1.out > alloc.txt
#5) grep 'deallocating' epw1.out > dealloc.txt
#6) Run this script after having changed the correct allocation lengths

alloc_len = 38817
dealloc_len = 38769

ii = 0
alloc_name = [None] * alloc_len
alloc_size = np.zeros((alloc_len))
alloc_sub = [None] * alloc_len

with open('alloc.txt','r') as R:
  for lines in R:
    tmp = lines.split()
    alloc_name[ii] = str(tmp[4])
    alloc_sub[ii] = str(tmp[5])
    alloc_size[ii] = np.float(tmp[1])
    ii+=1

ii = 0
dealloc_name = [None] * dealloc_len
dealloc_size = np.zeros((dealloc_len))
with open('dealloc.txt','r') as R:
  for lines in R:
    tmp = lines.split()
    dealloc_name[ii] = str(tmp[4])
    dealloc_size[ii] = np.float(tmp[1])
    ii+=1


deall_found = [ False ] * dealloc_len

for ii in np.arange(alloc_len):
  print(ii, ' / ', alloc_len)
  name = alloc_name[ii]

  found = False
  for jj in np.arange(dealloc_len):
    if name == dealloc_name[jj]:
      if alloc_size[ii] == dealloc_size[jj] and not deall_found[jj]:
        # We found the corresponding all/deall pair
        deall_found[jj] = True
        found = True
        break
  if not found:
    with open('mem_analyse.out','a') as O:
      O.write('We did not find a maching pair in '+str(alloc_sub[ii])+'\n')
      O.write('Allocate:   '+str(name)+' '+str(alloc_size[ii])+'\n')
      O.write('Deallocate: '+str(dealloc_name[jj])+' '+str(dealloc_size[jj])+ '\n')
#    print 'We did not find a maching pair in ', alloc_sub[ii]
#    print 'Allocate:   ',name,' ',alloc_size[ii]
#    print 'Deallocate: ',dealloc_name[jj],' ',dealloc_size[jj]