New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
chk_wrk_alloc.sh in branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/TOOLS/MISCELLANEOUS – NEMO

source: branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/TOOLS/MISCELLANEOUS/chk_wrk_alloc.sh @ 8415

Last change on this file since 8415 was 5514, checked in by smasson, 9 years ago

improve tools for memory check

  • Property svn:executable set to *
File size: 2.1 KB
Line 
1#!/bin/bash
2#
3# purpose:
4#   small script to check in all *90 files of the current directory and subdirectories
5#   if all lines with wrk_alloc have their corresponding lines with wrk_dealloc
6#
7# use:
8#   call chk_wrk_alloc.sh from the directory you want to check
9#
10# example:
11#   cd ~/dev_NEMO_MERGE_2011/NEMOGCM/NEMO
12#   ../TOOLS/MISCELLANEOUS/chk_wrk_alloc.sh
13#
14set -u
15#
16echo "check for all *90 files contained in "$( pwd )" and its subdirectories"
17#
18for ff in $( grep -il "^ *use  *wrk_nemo" $( find . -name "*90" )  $( find . -name "*h90" ) )
19do
20    ierr=0
21   
22    # number of lines with wrk_alloc
23    n1=$( grep -ic "call *wrk_alloc *(" $ff )
24    # number of lines with wrk_dealloc
25    nn1=$( grep -ic "call *wrk_dealloc *(" $ff ) 
26   
27    if [ $(( $n1 + $nn1 )) -ne 0 ]
28    then
29   # replace wrk_alloc with wrk_dealloc and count the lines
30   n2=$( sed -e "s/wrk_alloc/wrk_dealloc/" $ff | grep -ic "call *wrk_dealloc *(" )
31   # we should get n2 = 2 * n1...
32   if [ $(( 2 * $n1 )) -ne $n2 ]
33   then
34       ierr=1
35       echo "problem with wrk_alloc in $ff" 
36   fi
37   # same story but for wrk_dealloc
38   nn2=$( sed -e "s/wrk_dealloc/wrk_alloc/" $ff | grep -ic "call *wrk_alloc *(" )
39   if [ $(( 2 * $nn1 )) -ne $nn2 ]
40   then
41       ierr=1
42       echo "problem with wrk_dealloc in $ff" 
43   fi
44
45   if [ $ierr -eq 0 ] # check that wrk_alloc block is the same as wrk_dealloc block
46   then
47       grep -i "call *wrk_alloc *("   $ff | sed -e "s/ //g" | sed -e "s/!.*//g" > txt1$$
48       grep -i "call *wrk_dealloc *(" $ff | sed -e "s/wrk_dealloc/wrk_alloc/"  | sed -e "s/ //g" | sed -e "s/!.*//g" > txt2$$
49       cmp txt1$$ txt2$$
50       if [ $? -ne 0 ]
51       then
52      echo "different syntax in wrk_alloc and wrk_dealloc in $ff"
53      echo
54      for ll in $( seq 1 $n1 )  # compare each line
55      do
56          sed -n ${ll}p txt1$$ > ll1$$
57          sed -n ${ll}p txt2$$ > ll2$$
58          cmp ll1$$ ll2$$ > /dev/null
59          if [ $? -ne 0 ]
60          then
61         grep -i "call *wrk_alloc *("   $ff | sed -n ${ll}p
62         grep -i "call *wrk_dealloc *(" $ff | sed -n ${ll}p
63         echo
64          fi
65          rm -f ll1$$ ll2$$
66      done
67       fi
68       rm -f txt1$$ txt2$$
69   else
70       grep -i "call *wrk_alloc *(" $ff
71       echo
72       grep -i "call *wrk_dealloc *(" $ff 
73       echo
74   fi
75   
76    fi
77   
78done
Note: See TracBrowser for help on using the repository browser.