source: trunk/libIGCM/libIGCM_sys/IGCM_add_out.awk @ 58

Last change on this file since 58 was 57, checked in by brocksce, 15 years ago

PB: - Reformat run.card

  • Add monitoring card analysis feature
  • Rename Script_Output
  • Remove obsolete comments in run.card.init
  • Property licence set to
    The following licence information concerns ONLY the libIGCM tools
    ==================================================================

    Copyright © Centre National de la Recherche Scientifique CNRS
    Commissariat à l'Énergie Atomique CEA

    libIGCM : Library for Portable Models Computation of IGCM Group.

    IGCM Group is the french IPSL Global Climate Model Group.

    This library is a set of shell scripts and functions whose purpose is
    the management of the initialization, the launch, the transfer of
    output files, the post-processing and the monitoring of datas produce
    by any numerical program on any plateforme.

    This software is governed by the CeCILL license under French law and
    abiding by the rules of distribution of free software. You can use,
    modify and/ or redistribute the software under the terms of the CeCILL
    license as circulated by CEA, CNRS and INRIA at the following URL
    "http://www.cecill.info".

    As a counterpart to the access to the source code and rights to copy,
    modify and redistribute granted by the license, users are provided only
    with a limited warranty and the software's author, the holder of the
    economic rights, and the successive licensors have only limited
    liability.

    In this respect, the user's attention is drawn to the risks associated
    with loading, using, modifying and/or developing or reproducing the
    software by the user in light of its specific status of free software,
    that may mean that it is complicated to manipulate, and that also
    therefore means that it is reserved for developers and experienced
    professionals having in-depth computer knowledge. Users are therefore
    encouraged to load and test the software's suitability as regards their
    requirements in conditions enabling the security of their systems and/or
    data to be ensured and, more generally, to use and operate it in the
    same conditions as regards security.

    The fact that you are presently reading this means that you have had
    knowledge of the CeCILL license and that you accept its terms.
  • Property svn:keywords set to Date Author Revision
File size: 6.0 KB
Line 
1#!/usr/bin/awk -f
2# IGCM_add_out - filter of output of the job :
3# command :
4# IGCM_add_out.awk job_output.out REALTIME USERTIME SYSTIME
5
6#**************************************************************
7# Author: Martial.Mancip
8# Contact: Martial.Mancip@ipsl.jussieu.fr
9# $Date$
10# $Author$
11# $Revision$
12# IPSL (2006)
13#  This software is governed by the CeCILL licence see libIGCM/libIGCM_CeCILL.LIC
14# History:
15# Modification: Patrick.Brockmann@cea.fr
16#
17#**************************************************************
18
19#==========================
20function myprint(str) {
21  if (debug) {
22     print str
23  }
24}
25
26
27#==========================
28BEGIN {
29#  print "traitement de " ARGV[1]
30
31  nbarg=ARGC
32  if (match(ARGV[1],"-d")) {
33    debug=1
34    file=ARGV[2]
35    delete ARGV[1] 
36    nbarg--
37  } else {
38    debug=0
39    file=ARGV[1]
40  }
41
42# When exit statement, 'END' rule is always executed, so defined a exit_value to manage this
43  exit_value=0
44  if (nbarg != 2) {
45    print "Usage: IGCM_add_out.awk [-d] file.output" 
46    print 
47    print "Args:"
48    print "      file.output = output file of at Job to be parsed" 
49    print 
50    print "Options:" 
51    print "       -d = debug mode" 
52    print 
53    exit_value=1
54    exit
55  }
56
57  Information_found=0
58
59  RealTime=0.
60  UserTime=-1.
61  SysTime=0.
62  VectorTime=0.
63  InstCount=0.
64  VInstCount=0.
65  VElementCount=0.
66  FLOPCount=0.
67  MOPS=0.
68  MFLOPS=0.
69  AVLength=0.
70  VOpRatio=0.
71  MemorySize=0.
72  MIPS=0.
73  ICache=0.
74  OCache=0.
75  Bank=0.
76
77  counter=0
78
79}
80
81#==========================
82{
83  myprint($0) 
84
85# Get information with MPI Program Information output on NEC
86  if (match($0, "     \\*\\*\\*\\*\\*\\*  Program Information  \\*\\*\\*\\*\\*\\*")) 
87  {
88    Information_found=1
89    counter=counter+1
90#   print $0     
91#    print counter
92    next
93  }
94  else if (Information_found == 1 && (match($0, ".*:.*"))) 
95  {
96    where=(match($0,"[a-zA-Z]"))
97    Length=(match($0, " *:"))-where
98    whereDot=(match($0, ":"))
99    info=substr($0,where,Length)
100    whereNum=(match($0, "[0-9]"))
101    Res=substr($0,whereNum)
102#    print where "," Length "," whereDot "," whereNum " '" info "' :" Res
103
104    if( info=="Real Time (sec)" ) {
105#      print "|" Res "|"
106#      printf("RealTime = %10.5f\n",0.037600)
107#      printf("RealTime = %10.5f\n",Res)
108      if ( Res > RealTime ) {
109        RealTime=Res
110      }
111      next
112    }
113         
114    if( info=="User Time (sec)" ) {
115      UserTime=UserTime+Res
116      next
117    }
118
119    if( info=="Sys  Time (sec)" ) {
120      SysTime=SysTime+Res
121      next
122    }
123
124    if( info=="Vector Time (sec)" ) {
125      VectorTime=VectorTime+Res
126      next 
127    }
128
129    if( info=="Inst. Count" ) {
130      InstCount=InstCount+Res
131      next
132    }
133
134    if( info=="V. Element Count" ) {
135      VInstCount=VInstCount+Res
136      next 
137    }
138
139    if( info=="V. Element Count" ) {
140      VElementCount=VElementCount+Res
141      next
142    }
143
144    if( info=="FLOP Count" ) {
145      FLOPCount=FLOPCount+Res
146      next 
147    }
148
149    if( info=="MOPS" ) {
150      MOPS=MOPS+Res
151      next
152    }
153
154    if( info=="MFLOPS" ) {
155      MFLOPS=MFLOPS+Res
156      next 
157    }
158
159    if( info=="A.V. Length" ) {
160      AVLength=AVLength+Res
161      next
162    }
163
164    if( info=="V. Op. Ratio (%)" ) {
165      VOpRatio=VOpRatio+Res
166      next 
167    }
168
169    if( info=="Memory Size (MB)" ) {
170      MemorySize=MemorySize+Res
171      next
172    }
173
174    if( info=="MIPS" ) {
175      MIPS=MIPS+Res
176      next 
177    }
178
179    if( info=="I-Cache (sec)" ) {
180      ICache=ICache+Res
181      next
182    }
183
184    if( info=="O-Cache (sec)" ) {
185      OCache=OCache+Res
186      next 
187    }
188
189    if( info=="Bank (sec)" ) {
190      Bank=Bank+Res
191      next
192    }
193
194  }
195# Get information with time output on other hosts
196# ksh time
197  else if (match($0, ".*s real .*s user .*s system"))
198  {
199    myprint( "ksh" )
200    counter=counter+1
201
202    RealTime=(substr($1,1,match($1, "s")-1))
203    UserTime=(substr($3,1,match($3, "s")-1))
204    SysTime=(substr($5,1,match($5, "s")-1))
205
206  }
207# csh time
208  else if (match($0, "[0-9.]+u [0-9.]+s .+"))
209  {
210    myprint( "csh" )
211    counter=counter+1
212
213    UserTime=(substr($1,1,match($1, "u")-1))
214    SysTime=(substr($2,1,match($2, "s")-1))
215    RealTime=(substr($3,1,match($3, ":")-1)*60. + substr($3,match($3, ":")+1))
216
217  }
218# linux system time
219  else if (match($0, ".*user .*system .*elapsed .*CPU .*"))
220  {
221    myprint( "linux" )
222    counter=counter+1
223
224    UserTime=(substr($1,1,match($1, "user")-1))
225    SysTime=(substr($2,1,match($2, "system")-1))
226    RealTime=(substr($3,1,match($3, ":")-1)*60.+substr($3, match($3, ":")+1, match($3, "elapsed")))
227
228  }
229
230# RUN_DATE_BEGIN
231if ($0 ~ /RunDateBegin.*=/) {
232    myprint( "start date" )
233    split($0,a,"=")
234    RunDateBegin=a[2]
235}
236
237# RUN_DATE_END
238if ($0 ~ /RunDateEnd.*=/) {
239    myprint( "end date" )
240    split($0,a,"=")
241    RunDateEnd=a[2]
242  }
243
244}
245
246#==========================
247END {
248
249  if (! exit_value ) {
250    if (counter > 0) { 
251      myprint("=============================================")
252      myprint("Additionnal results on Program Informations for " ARGV[1])
253      myprint("Real Time (sec)        :" RealTime)
254      myprint("User Time (sec)        :" UserTime)
255      myprint("Sys  Time (sec)        :" SysTime)
256      myprint("Vector Time (sec)      :" VectorTime)
257      myprint("Inst. Count            :" InstCount)
258      myprint("V. Inst. Count         :" VInstCount)
259      myprint("V. Element Count       :" VElementCount)
260      myprint("FLOP Count             :" FLOPCount)
261      myprint("MOPS                   :" MOPS)
262      myprint("MFLOPS                 :" MFLOPS)
263      myprint("A.V. Length            :" AVLength)
264      myprint("V. Op. Ratio (%)       :" VOpRatio)
265      myprint("Memory Size (MB)       :" MemorySize)
266      myprint("MIPS                   :" MIPS)
267      myprint("I-Cache (sec)          :" ICache)
268      myprint("O-Cache (sec)          :" OCache)
269      myprint("Bank (sec)             :" Bank)
270
271      myprint("Date of executables :")
272      myprint("Start Time             :" RunDateBegin)
273      myprint("End   Time             :" RunDateEnd)
274
275      printf("%s %s %.5f %.5f %.5f", RunDateBegin, RunDateEnd, RealTime, UserTime, SysTime) 
276      exit(0)
277    }
278    else
279    { 
280      exit(1)
281    }
282  }
283  else
284  { 
285    exit(2)
286  }
287 
288}
Note: See TracBrowser for help on using the repository browser.