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.
CPU_time_sx8brodie.ksh in tags/nemo_v3_2/nemo_v3_2/NVTK/INSTALL/JOBS – NEMO

source: tags/nemo_v3_2/nemo_v3_2/NVTK/INSTALL/JOBS/CPU_time_sx8brodie.ksh @ 1878

Last change on this file since 1878 was 1878, checked in by flavoni, 14 years ago

initial test for nemogcm

File size: 11.7 KB
Line 
1#!/bin/ksh
2# $Id: CPU_time_sx8brodie.ksh 1591 2009-08-06 15:33:14Z ctlod $
3##############################################################
4# Original : C. Talandier for NEMO team
5# Contact  : nemo_st@locean-ipsl.upmc.fr
6#
7# It is called by the assessment.ksh script for a
8# given configuration
9#
10# INPUT ARGS: 6
11#     - zrunt  : run type to treat
12#     - zfile1 : mon run timing input file name
13#     - zfile2 : mpi run timing input file name
14#     - zout   : output file name
15#     - ztag   : tag name to which are compared files
16#     - zxis   : (0/1) reference timing files (do/do not) exist
17#
18# WORK: It aims to :
19#
20#      - Treat output timing from the sx8brodie target for
21#        mon, mpi & omp runs
22#     *- compare it to a reference version
23#
24# * this step is performed only if a reference tag
25#   is specified with the -t option and if files exist.
26#   See the Makefile under ./config/NVTK directory
27#
28##############################################################
29#set -xv
30##############################################################
31
32# Get the name of the present script
33nscript=$( (basename $0) )
34
35#
36# help_CPU_time() To print help
37#
38function help_CPU_time
39{
40  echo "Usage: $nscript [-r] [-a] [-b] [-o] [-t] [-x]"
41  echo "Options: These are optional argument"
42  echo " -r : run type to treat"
43  echo " -a : current version timing input file name"
44  echo " -b : reference version timing input file name"
45  echo " -o : output file name"
46  echo " -t : tag name to which are compared files"
47  echo " -x : (0/1) reference timing files (do/do not) exist"
48  echo " their values are not taken)"
49  exit 1
50}
51
52# Initialization
53zrunt=
54zfile1=
55zfile2=
56zout=
57ztag=
58zxis=1
59
60# Get arguments
61while getopts r:a:b:o:t:x: opt
62do
63  case "$opt" in
64    r) zrunt="$OPTARG";;
65    a) zfile1="$OPTARG";;
66    b) zfile2="$OPTARG";;
67    o) zout="$OPTARG";;
68    t) ztag="$OPTARG";;
69    x) zxis="$OPTARG";;
70    *) help_CPU_time;;
71  esac
72done
73
74# Check if results must be compare to the reference version
75test -n "${ztag}"
76evaltag=$?
77
78case "${zrunt}" in
79
80     'mon' | 'omp' )
81
82           # OUTPUT TIMING OF THE MON/OMP RUN
83           ###################################
84           
85           if [ ${evaltag} == 0 -a ${zxis} == 0 ] ; then
86               # Get values from the reference tag
87               zreal=$( (awk '/Real/        {print $NF}' ${zfile2} ) )
88               zuser=$( (awk '/User/        {print $NF}' ${zfile2} ) )
89               zmflo=$( (awk '/MFLOPS/ && ! /concurrent/      {print $NF}' ${zfile2} ) )
90               [ ${zrunt} = 'omp' ] && zmfli=$( (awk '/MFLOPS/ &&   /concurrent/      {print $NF}' ${zfile2} ) )
91               [ ${zrunt} = 'omp' ] && zmprc=$( (awk '/Max Concurrent Proc/           {print $NF}' ${zfile2} ) )
92               zvlen=$( (awk '/VLEN/        {print $NF}' ${zfile2} ) )
93               zmemo=$( (awk '/Memory Size/ {print $NF}' ${zfile2} ) )
94               # Print: Variable long name | current version values | reference version values | variations
95               echo "                                Current version    ${ztag} version    Variation " >> ${zout}
96               awk '/Real/         { creal=$5 ; printf("%-5s %.25s  %10.2f      | %10.2f    |   %7.2f % \n", " ", $0, $NF, invar, ((creal-invar)/invar)*100 ) }' invar=${zreal} ${zfile1} >> ${zout}
97               awk '/User/         { cuser=$5 ; printf("%-5s %.25s  %10.2f      | %10.2f    |   %7.2f % \n", " ", $0, $NF, invar, ((cuser-invar)/invar)*100 ) }' invar=${zuser} ${zfile1} >> ${zout}
98               awk '/MFLOPS/ && ! /concurrent/      { cmflo=$3 ; printf("%-5s %.25s  %10.2f      | %10.2f    |   %7.2f % \n", " ", $0, $NF, invar, ((cmflo-invar)/invar)*100 ) }' invar=${zmflo} ${zfile1} >> ${zout}
99               [ ${zrunt} = 'omp' ] && awk '/MFLOPS/ &&   /concurrent/      { cmfli=$4 ; printf("%-5s %.25s  %10.2f      | %10.2f    |   %7.2f % \n", " ", $0, $NF, invar, ((cmfli-invar)/invar)*100 ) }' invar=${zmfli} ${zfile1} >> ${zout}
100               awk '/VLEN/         { cvlen=$3 ; printf("%-5s %.25s  %10.2f      | %10.2f    |   %7.2f % \n", " ", $0, $NF, invar, ((cvlen-invar)/invar)*100 ) }' invar=${zvlen} ${zfile1} >> ${zout}
101               awk '/Memory Size/  { cmemo=$5 ; printf("%-5s %.25s  %10.2f      | %10.2f    |   %7.2f % \n", " ", $0, $NF, invar, ((cmemo-invar)/invar)*100 ) }' invar=${zmemo} ${zfile1} >> ${zout} 
102               [ ${zrunt} = 'omp' ] && awk '/Max Concurrent Proc/  { cmprc=$5 ; printf("%-5s %.25s  %10i      | %10i    |   %7i \n", " ", $0, $NF, invar, (cmprc-invar) ) }' invar=${zmprc} ${zfile1} >> ${zout} 
103           else
104               # Print: Variable long name | current version values
105               echo "                                 Current version " >> ${zout}
106               awk '/Real/        {printf("%-5s %.25s  %10.2f\n", " ", $0, $NF ) }' ${zfile1} >> ${zout}
107               awk '/User/        {printf("%-5s %.25s  %10.2f\n", " ", $0, $NF ) }' ${zfile1} >> ${zout}
108               awk '/MFLOPS/ && ! /concurrent/     {printf("%-5s %.25s  %10.2f\n", " ", $0, $NF ) }' ${zfile1} >> ${zout}
109               [ ${zrunt} = 'omp' ] && awk '/MFLOPS/ &&   /concurrent/     {printf("%-5s %.25s  %10.2f\n", " ", $0, $NF ) }' ${zfile1} >> ${zout}
110               awk '/VLEN/        {printf("%-5s %.25s  %10.2f\n", " ", $0, $NF ) }' ${zfile1} >> ${zout}
111               awk '/Memory Size/ {printf("%-5s %.25s  %10.2f\n", " ", $0, $NF ) }' ${zfile1} >> ${zout}
112               [ ${zrunt} = 'omp' ] && awk '/Max Concurrent Proc/  { cmprc=$5 ; printf("%-5s %.25s  %10i\n", " ", $0, $NF ) }' ${zfile1} >> ${zout} 
113           fi 
114
115           ;;
116
117     'mpi' )
118           # OUTPUT TIMING OF THE MPI RUN
119           ##############################
120           
121           if [ ${evaltag} == 0 -a ${zxis} == 0 ] ; then
122               # Get reference tag information
123               # Syntax: 1) search pattern between // symbol, 2) print text of the last column (identified by $NF)
124               zreal=$( (awk '( /\[/ && /\]/ ) && /Real/                           {print $NF}' ${zfile2} ) )
125               zuser=$( (awk '( /\[/ && /\]/ ) && /User/                           {print $NF}' ${zfile2} ) )
126               zmflo=$( (awk '( /\[/ && /\]/ ) && /MFLOPS/                         {print $NF}' ${zfile2} ) )
127               zvlen=$( (awk '( /\[/ && /\]/ ) && /Average Vector Length/          {print $NF}' ${zfile2} ) )
128               zmemo=$( (awk '( /\[/ && /\]/ ) && ! /Global/ && /Memory size used/ {print $NF}' ${zfile2} ) )
129           
130               # Print: Variable long name | current version values | reference version values | variations
131               # Syntax: 1) search pattern between // symbol, 2) print text & values following a format (printf) explicited between "" symbol
132               awk '/Global Data/ { printf( "        %.29s  Current version   %s version      Variation \n", $0, tag) }' tag=${ztag} ${zfile1} >> ${zout}
133               awk '/==========================/ { printf("        %s \n", $0) }' ${zfile1} >> ${zout}
134               awk '( /\[/ && /\]/ ) && /Real/                  { printf( "%-7s %.29s  %10.2f     |   %10.2f    |    %7.2f %\n", " ", $0 , $NF, invar, (($NF-invar)/invar)*100 ) }' invar=${zreal} ${zfile1} >> ${zout}
135               awk '( /\[/ && /\]/ ) && /User/                  { printf( "%-7s %.29s  %10.2f     |   %10.2f    |    %7.2f %\n", " ", $0 , $NF, invar, (($NF-invar)/invar)*100 ) }' invar=${zuser} ${zfile1} >> ${zout}
136               awk '( /\[/ && /\]/ ) && /MFLOPS/                { printf( "%-7s %.29s  %10.2f     |   %10.2f    |    %7.2f %\n", " ", $0 , $NF, invar, (($NF-invar)/invar)*100 ) }' invar=${zmflo} ${zfile1} >> ${zout}
137               awk '( /\[/ && /\]/ ) && /Average Vector Length/ { printf( "%-7s %.29s  %10.2f     |   %10.2f    |    %7.2f %\n", " ", $0 , $NF, invar, (($NF-invar)/invar)*100 ) }' invar=${zvlen} ${zfile1} >> ${zout}
138               awk '( /\[/ && /\]/ ) && /Memory size used/ && !/Global/ { printf( "%-7s %.29s  %10.2f     |   %10.2f    |    %7.2f %\n", " ", $0 , $NF, invar, (($NF-invar)/invar)*100 ) }' invar=${zmemo} ${zfile1} >> ${zout}
139               echo " " >> ${zout} 
140           
141               # Get reference tag information (Overall data)
142               # Syntax: 1) search pattern between // symbol, 2) print text of the last column (identified by $NF)
143               zreal=$( (awk '!( /\[/ && /\]/ ) && /Real/                           {print $NF}' ${zfile2} ) )
144               zuser=$( (awk '!( /\[/ && /\]/ ) && ! /OPS/ && /User/                {print $NF}' ${zfile2} ) )
145               zgflo=$( (awk '!( /\[/ && /\]/ ) && /GFLOPS/                         {print $NF}' ${zfile2} ) )
146               zmemo=$( (awk '!( /\[/ && /\]/ ) && ! /Global/ && /Memory size used/ {print $NF}' ${zfile2} ) )
147           
148               # Print: Variable long name | current version values
149               # Syntax: 1) search pattern between // symbol, 2) print text & values following a format (printf) explicited between "" symbol
150               awk '/Overall Data/ { printf( "        %-28s  Current version   %s version       Variation \n", $0, tag) }' tag=${ztag} ${zfile1} >> ${zout}
151               echo "        =============" >> ${zout} 
152               awk '!( /\[/ && /\]/ ) && /Real/             { printf( "%-7s %.29s  %10.2f     |   %10.2f    |    %7.2f %\n", " ", $0 , $NF, invar, (($NF-invar)/invar)*100 ) }' invar=${zreal} ${zfile1} >> ${zout}
153               awk '!( /\[/ && /\]/ ) && ! /OPS/ && /User/  { printf( "%-7s %.29s  %10.2f     |   %10.2f    |    %7.2f %\n", " ", $0 , $NF, invar, (($NF-invar)/invar)*100 ) }' invar=${zuser} ${zfile1} >> ${zout}
154               awk '!( /\[/ && /\]/ ) && /GFLOPS/           { printf( "%-7s %.29s  %10.2f     |   %10.2f    |    %7.2f %\n", " ", $0 , $NF, invar, (($NF-invar)/invar)*100 ) }' invar=${zgflo} ${zfile1} >> ${zout}
155               awk '!( /\[/ && /\]/ ) && /Memory size used/ && !/Global/ { printf( "%-7s %.29s  %10.2f     |   %10.2f    |    %7.2f %\n", " ", $0 , $NF, invar, (($NF-invar)/invar)*100 ) }' invar=${zmemo} ${zfile1} >> ${zout}
156               echo " " >> ${zout} 
157           
158           else
159           
160               # Print: Variable long name | current version values
161               awk '/Global Data/ { printf( "        %.29s   Current version\n ", $0) }' ${zfile1} >> ${zout}
162               awk '/==========================/ { printf("%-7s %-.26s \n", " ", $0) } ' ${zfile1} >> ${zout}
163               awk '( /\[/ && /\]/ ) && /Real/                  { printf( "%-7s %.29s  %10.2f \n", " ", $0 , $NF) }' ${zfile1} >> ${zout}
164               awk '( /\[/ && /\]/ ) && /User/                  { printf( "%-7s %.29s  %10.2f \n", " ", $0 , $NF) }' ${zfile1} >> ${zout}
165               awk '( /\[/ && /\]/ ) && /MFLOPS/                { printf( "%-7s %.29s  %10.2f \n", " ", $0 , $NF) }' ${zfile1} >> ${zout}
166               awk '( /\[/ && /\]/ ) && /Average Vector Length/ { printf( "%-7s %.29s  %10.2f \n", " ", $0 , $NF) }' ${zfile1} >> ${zout}
167               awk '( /\[/ && /\]/ ) && /Memory size used/ && ! /Global/ { printf( "%-7s %.29s  %10.2f \n", " ", $0 , $NF) }' ${zfile1} >> ${zout}
168               echo " " >> ${zout} 
169           
170               # Print: Variable long name | current version values (Overall data)
171               awk '/Overall Data/ { printf( "        %-28s   Current version\n ", $0 ) }' ${zfile1} >> ${zout}
172               echo "        =============" >> ${zout} 
173               awk '!( /\[/ && /\]/ ) && /Real/             { printf( "%-7s %.29s  %10.2f \n", " ", $0 , $NF ) }' ${zfile1} >> ${zout}
174               awk '!( /\[/ && /\]/ ) && ! /OPS/ && /User/  { printf( "%-7s %.29s  %10.2f \n", " ", $0 , $NF ) }' ${zfile1} >> ${zout}
175               awk '!( /\[/ && /\]/ ) && /GFLOPS/           { printf( "%-7s %.29s  %10.2f \n", " ", $0 , $NF ) }' ${zfile1} >> ${zout}
176               awk '!( /\[/ && /\]/ ) && /Memory size used/  && ! /Global/ { printf( "%-7s %.29s  %10.2f \n", " ", $0 , $NF ) }' ${zfile1} >> ${zout}
177               echo "" >> ${zout} 
178           fi
179           ;;
180esac
Note: See TracBrowser for help on using the repository browser.