source: tags/libIGCM_v1_3/libIGCM_sys/IGCM_add_out.awk @ 803

Last change on this file since 803 was 137, checked in by mmaipsl, 15 years ago

Add ksh time command for SX.
Add some debug informations.

  • 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: 7.9 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  Information_ksh_SX_found=0
59  vargas_found=0
60
61  RealTime=0.
62  UserTime=-1.
63  SysTime=0.
64  VectorTime=0.
65  InstCount=0.
66  VInstCount=0.
67  VElementCount=0.
68  FLOPCount=0.
69  MOPS=0.
70  MFLOPS=0.
71  AVLength=0.
72  VOpRatio=0.
73  MemorySize=0.
74  MIPS=0.
75  ICache=0.
76  OCache=0.
77  Bank=0.
78
79  counter=0
80
81  RunDateBegin="2000-01-01T00:00:00"
82  RunDateEnd="2000-01-01T00:00:00"
83
84}
85
86#==========================
87{
88  myprint($0) 
89
90# Get information with MPI Program Information output on NEC
91  if (match($0, "     \\*\\*\\*\\*\\*\\*  Program Information  \\*\\*\\*\\*\\*\\*")) 
92  {
93    Information_found=1
94    counter=counter+1
95#   print $0     
96#    print counter
97    next
98  }
99  else if (Information_found == 1 && (match($0, ".*:.*"))) 
100  {
101    where=(match($0,"[a-zA-Z]"))
102    Length=(match($0, " *:"))-where
103    whereDot=(match($0, ":"))
104    info=substr($0,where,Length)
105    whereNum=(match($0, "[0-9]"))
106    Res=substr($0,whereNum)
107#    print where "," Length "," whereDot "," whereNum " '" info "' :" Res
108
109    if( info=="Real Time (sec)" ) {
110#      print "|" Res "|"
111#      printf("RealTime = %10.5f\n",0.037600)
112#      printf("RealTime = %10.5f\n",Res)
113      if ( Res > RealTime ) {
114        RealTime=Res
115      }
116      next
117    }
118         
119    if( info=="User Time (sec)" ) {
120      UserTime=UserTime+Res
121      next
122    }
123
124    if( info=="Sys  Time (sec)" ) {
125      SysTime=SysTime+Res
126      next
127    }
128
129    if( info=="Vector Time (sec)" ) {
130      VectorTime=VectorTime+Res
131      next 
132    }
133
134    if( info=="Inst. Count" ) {
135      InstCount=InstCount+Res
136      next
137    }
138
139    if( info=="V. Element Count" ) {
140      VInstCount=VInstCount+Res
141      next 
142    }
143
144    if( info=="V. Element Count" ) {
145      VElementCount=VElementCount+Res
146      next
147    }
148
149    if( info=="FLOP Count" ) {
150      FLOPCount=FLOPCount+Res
151      next 
152    }
153
154    if( info=="MOPS" ) {
155      MOPS=MOPS+Res
156      next
157    }
158
159    if( info=="MFLOPS" ) {
160      MFLOPS=MFLOPS+Res
161      next 
162    }
163
164    if( info=="A.V. Length" ) {
165      AVLength=AVLength+Res
166      next
167    }
168
169    if( info=="V. Op. Ratio (%)" ) {
170      VOpRatio=VOpRatio+Res
171      next 
172    }
173
174    if( info=="Memory Size (MB)" ) {
175      MemorySize=MemorySize+Res
176      next
177    }
178
179    if( info=="MIPS" ) {
180      MIPS=MIPS+Res
181      next 
182    }
183
184    if( info=="I-Cache (sec)" ) {
185      ICache=ICache+Res
186      next
187    }
188
189    if( info=="O-Cache (sec)" ) {
190      OCache=OCache+Res
191      next 
192    }
193
194    if( info=="Bank (sec)" ) {
195      Bank=Bank+Res
196      next
197    }
198
199  }
200# Get information with time output on other hosts
201# ksh time
202  else if (match($0, ".*s real .*s user .*s system"))
203  {
204    myprint( "ksh" )
205    counter=counter+1
206
207    RealTime=(substr($1,1,match($1, "s")-1))
208    UserTime=(substr($3,1,match($3, "s")-1))
209    SysTime=(substr($5,1,match($5, "s")-1))
210
211  }
212# Get information with time output on SX hosts
213# ksh time
214  else if (match($0, "real *[0-9:.]*"))
215  {
216    myprint("ksh SX")
217    Information_ksh_SX_found=1
218    counter=counter+1
219
220    RealTime=0
221    if (match($2, "[0-9]*:[0-9]*:[0-9]*\\.[0-9]*"))
222    {
223        sub1=(match($2, ":")-1)
224        sub2=sub1+2
225        fin=(substr($2,sub2))
226        sub3=(match(fin, ":")-1)+sub2
227        RealTime=(substr($2,1,sub1))*60+(substr($2,sub2,sub3))
228    }
229    else if (match($2, "[0-9]*:[0-9]*\\.[0-9]*"))
230    {
231        RealTime=(substr($2,1,match($2, ":")-1))
232    }
233  }
234  else if (Information_ksh_SX_found == 1 && match($0, "user *[0-9:.]*"))
235  {
236    myprint("ksh SX ")
237
238    UserTime=0
239    if (match($2, "[0-9]*:[0-9]*:[0-9]*\\.[0-9]*"))
240    {
241        sub1=(match($2, ":")-1)
242        sub2=sub1+2
243        fin=(substr($2,sub2))
244        sub3=(match(fin, ":")-1)+sub2
245        UserTime=(substr($2,1,sub1))*60+(substr($2,sub2,sub3))
246    }
247    else if (match($2, "[0-9]*:[0-9]*\\.[0-9]*"))
248    {
249        UserTime=(substr($2,1,match($2, ":")-1))
250    }
251  }
252  else if (Information_ksh_SX_found == 1 && match($0, "sys *[0-9:.]*"))
253  {
254    myprint("ksh SX ")
255
256    SysTime=0
257    if (match($2, "[0-9]*:[0-9]*:[0-9]*\\.[0-9]*"))
258    {
259        sub1=(match($2, ":")-1)
260        sub2=sub1+2
261        fin=(substr($2,sub2))
262        sub3=(match(fin, ":")-1)+sub2
263        SysTime=(substr($2,1,sub1))*60+(substr($2,sub2,sub3))
264    }
265    else if (match($2, "[0-9]*:[0-9]*\\.[0-9]*"))
266    {
267        SysTime=(substr($2,1,match($2, ":")-1))
268    }
269  }
270# csh time
271  else if (match($0, "[0-9.]+u [0-9.]+s .+"))
272  {
273    myprint( "csh" )
274    counter=counter+1
275
276    UserTime=(substr($1,1,match($1, "u")-1))
277    SysTime=(substr($2,1,match($2, "s")-1))
278    RealTime=(substr($3,1,match($3, ":")-1)*60. + substr($3,match($3, ":")+1))
279
280  }
281# linux system time
282  else if (match($0, ".*user .*system .*elapsed .*CPU .*"))
283  {
284    myprint( "linux" )
285    counter=counter+1
286
287    UserTime=(substr($1,1,match($1, "user")-1))
288    SysTime=(substr($2,1,match($2, "system")-1))
289    RealTime=(substr($3,1,match($3, ":")-1)*60.+substr($3, match($3, ":")+1, match($3, "elapsed")))
290
291  }
292# AIX vargas system time
293  else if (match($0, "real\ \ \ [0-9]*"))
294  {
295    myprint( "vargas" )
296    vargas_found=1 
297    counter=counter+1
298
299    RealTime=substr($0,8)
300    next
301  }
302  else if (vargas_found=1 )
303  {
304    if (match($0, "user\ \ \ [0-9]*"))
305      {
306        UserTime=substr($0,8)
307        next
308      }
309    if (match($0, "sys\ \ \ \ [0-9]*"))
310      {
311        SysTime=substr($0,7)
312        next
313      }
314  }
315
316# RUN_DATE_BEGIN
317if ($0 ~ /RunDateBegin.*=/) {
318    myprint( "start date" )
319    split($0,a,"=")
320    RunDateBegin=a[2]
321}
322
323# RUN_DATE_END
324if ($0 ~ /RunDateEnd.*=/) {
325    myprint( "end date" )
326    split($0,a,"=")
327    RunDateEnd=a[2]
328  }
329
330}
331
332#==========================
333END {
334
335    myprint("exit_value : " exit_value)
336    myprint("counter    : " counter)
337
338  if (! exit_value ) {
339    if (counter > 0) { 
340      myprint("=============================================")
341      myprint("Additionnal results on Program Informations for " ARGV[1])
342      myprint("Real Time (sec)        :" RealTime)
343      myprint("User Time (sec)        :" UserTime)
344      myprint("Sys  Time (sec)        :" SysTime)
345      myprint("Vector Time (sec)      :" VectorTime)
346      myprint("Inst. Count            :" InstCount)
347      myprint("V. Inst. Count         :" VInstCount)
348      myprint("V. Element Count       :" VElementCount)
349      myprint("FLOP Count             :" FLOPCount)
350      myprint("MOPS                   :" MOPS)
351      myprint("MFLOPS                 :" MFLOPS)
352      myprint("A.V. Length            :" AVLength)
353      myprint("V. Op. Ratio (%)       :" VOpRatio)
354      myprint("Memory Size (MB)       :" MemorySize)
355      myprint("MIPS                   :" MIPS)
356      myprint("I-Cache (sec)          :" ICache)
357      myprint("O-Cache (sec)          :" OCache)
358      myprint("Bank (sec)             :" Bank)
359
360      myprint("Date of executables :")
361      myprint("Start Time             :" RunDateBegin)
362      myprint("End   Time             :" RunDateEnd)
363
364      printf("%s %s %.5f %.5f %.5f", RunDateBegin, RunDateEnd, RealTime, UserTime, SysTime) 
365      exit(0)
366    }
367    else
368    { 
369      exit(1)
370    }
371  }
372  else
373  { 
374    exit(2)
375  }
376 
377}
Note: See TracBrowser for help on using the repository browser.