wiki:BasculeCCRTTGCC/Bench

Version 18 (modified by mafoipsl, 12 years ago) (diff)

--

Benchmarks de post-traitements avec libIGCM

10 ans de TS (Time Series)

Bench de création des TS. Cela fait 10 ans par défaut et lance 43 jobs de TS. Cela prend une simulation de type historique, pointe avec des liens sur les fichiers de type Output et lance les TS qui seront rangées dans les répertoires Analyse. Sont intégrés les ajouts de la commande time, les choix CCRT/IDRIS.

Cela prend libIGCM truck. Il reste une seule modif maison de !TimeSeries_Checker : forcer à 300Y les TS avec Chunck3D=NONE pour éviter de gérer le run.card et CompletedFlag.

README

3 étapes:

  • à faire une seule fois : Preparation liens vers v3.historivalV52 sur gaya ou vers v3.historical4 au CCRT :
    if [[ $HOSTNAME = ulam ]] then
     MYMACHINE=ulam
     SIMU=v3.historivalV52
     BENCH_WORKDIR=/workdir/rech/tgw/rtgw001
     cd $HOMEGAYA
    else
     MYMACHINE=cesium|titane
     SIMU=v3.historical4
     BENCH_WORKDIR=$(ccc_home -w -u p86maf)
     cd $DMFDIR
    fi
    [ -d IGCM_OUT/IPSLCM5A/TEST ] || mkdir -p IGCM_OUT/IPSLCM5A/TEST 
     cd IGCM_OUT/IPSLCM5A/TEST
     mkdir -p historical/$SIMU
     for i in ATM CPL ICE MBG OCE SRF SBG ; do echo $i ; mkdir $i ; cd $i ; ln -s ../../../../PROD/historical/$SIMU/$i/Output . ; ln -s ../../../../PROD/historical/$SIMU/$i/Debug . ; ln -s ../../../../PROD/historical/$SIMU/$i/Restart . ; cd .. ; echo $i done ; done
    
    
  • Preparation des jobs de TS :
    • A faire une seule fois :
      cd $WORKDIR
      [ -d POST_BENCH ] || mkdir POST_BENCH
      cd POST_BENCH
      #svn_ano
      #svn_ano is aliased to `svn co http://forge.ipsl.jussieu.fr/igcmg/svn/modipsl/trunk modipsl'
      svn co http://forge.ipsl.jussieu.fr/igcmg/svn/modipsl/trunk modipsl
      cd modipsl/util
      ./model libIGCM
      # ajouter time devant les commandes nco/cdo
      sed -i -e 's/ ncatted / time ncatted /' -e 's/ ncks / time ncks /' -e 's/ ncrcat / time ncrcat /' -e 's/ \\cdo /time \\cdo /' ../libIGCM/libIGCM_sys/libIGCM_sys_${MYMACHINE}.ksh
      ./ins_job
      cd ../..
      [ -d $SIMU ] || mkdir $SIMU 
      cd $SIMU
      cp ${BENCH_WORKDIR}/POST_BENCH/$SIMU/config.card .
      cp -pr ${BENCH_WORKDIR}/POST_BENCH/$SIMU/COMP . # On a mis 300Y au lieu de NONE pour les TS_MO
      cp -pr ${BENCH_WORKDIR}/POST_BENCH/$SIMU/POST .
      cp ../modipsl/libIGCM/TimeSeries_Checker.job .
      # modifs pour avoir le repertoire en local
      sed -i -e "s/JobName=.*$/JobName=$SIMU/" -e 's/CARD_DIR=.*$/CARD_DIR=${CURRENT_DIR}/' TimeSeries_Checker.job
      
    • Lancer la creation des TS une premiere fois :
      ./TimeSeries_Checker.job 2>&1 |tee TSC_OUT_1ere
      
    • A refaire si on veut finaliser les TS :
      ./TimeSeries_Checker.job 2>&1 |tee TSC_OUT_2eme
      ...
      
  • Si on veut tout recommencer.
    • Aller dans IGCM_OUT/IPSLCM5A/TEST et faire
      rm -rf $SIMU/???/Analyse 
      
    • Revenir dans $WORKDIR/POST_BENCH ; faire du menage des anciennes sorties :
      rm -rf OutScript
      
    • et refaire :
      ./TimeSeries_Checker.job 2>&1 |tee TSC_OUT_1ere
      ...
      
  • de plus, si on veut faire 50 ans faire :
    vi config.card  # Mettre DateEnd 1899 pour faire 50 ans
    

Visualisation des résultats

AFAIRE : commandes à passer pour avoir un histogramme sur ulam :

cd OutScript
# A faire pour avoir un fichier utilisable dans gnuplot
FILE_FOR_GNU2=ts_ulam.dat
# pour avoir le debut des executions des jobs. TS.* sur ulam 
set -- $(for i in $(ls -rt TS.* ) ; do echo $(head -1 $i|awk '{ print $3 " " $4 }' | sed 's/:/ /g' ) ; done | sort -n | head -1) ; J0=$1 ; H0=$2 ; M0=$3 ; S0=$4
echo "DATE DE DEBUT " $J0 $H0:$M0:$S0
[ -f ${FILE_FOR_GNU2} ] && rm -f ${FILE_FOR_GNU2}
[ -f .tempo_file_$$ ] && rm -f .tempo_file_$$
echo "TS WAIT CPUTIME ENDED" >${FILE_FOR_GNU2}
# TS.* /u ... sur ulam. A changer pour CCRT.
for i in TS.*  ; do echo $i " | " $(grep "IGCM_sys_TestFileArchive :" $i | head -1 | awk -F: '{print $2} ' | sed s',/u/rech/tgw/rtgw001/IGCM_OUT/IPSLCM5A/TEST/historical/v3.historivalV52/,,' | sed s',/Analyse/,-,' | sed s',/.*_,-,' ) " | " $(head -1 $i|awk '{ print $3 " | " $4 }' | sed 's/:/|/g' ) " | " $(echo $(grep -i real $i | sed -e 's/h/ /' -e 's/m/ /' -e s'/\./ /' -e 's/s//' | awk '{ if (NF==5) { SUMH+=$2 ; SUMN+=$3 ; SUMS+=$4 ; SUMMI+=$5 } else { SUMN+=$2 ; SUMS+=$3 ; SUMMI+=$4 } } END { printf("%7.0f ",SUMH*60*60+SUMN*60+SUMS+(SUMMI/100)) } ' ) ) " | " $(tail -1 $i|awk '{ print $3 " | " $4 }' | sed 's/:/|/g' ) ; done  > .tempo_file_$$

awk -F'|' ' BEGIN { J0='"$J0"' ; H0='"$H0"' ; M0='"$M0"' ; S0='"$S0"' ; MAX=24*60*60 } { J1=$3 ; H1=$4 ; M1=$5 ;S1=$6; J2=$8; H2=$9; M2=$10 ; S2=$11 ; START=(((J1-J0)*24*60*60)+((H1-H0)*60*60)+(M1-M0)*60+S1-S0) ; DUREE=MAX ; NF==11 && DUREE=(((J2-J1)*24*60*60)+((H2-H1)*60*60)+(M2-M1)*60+S2-S1) ; print  $2  " " START " " $7 " " DUREE-$7 } ' .tempo_file_$$ | sort -n -k2 >>${FILE_FOR_GNU2}

[ -f .tempo_file_$$ ] && rm -f .tempo_file_$$

cat > alancer <<-EOF
set terminal pngcairo dashed font "arial,12" size 800,600
set output 'ts_ulam_real.png'
set boxwidth 0.75 absolute
set style fill   solid 1.00 border -1
set key outside right top vertical Left reverse enhanced autotitles columnhead nobox
set key invert samplen 4 spacing 1 width 0 height 0 
set style histogram rowstacked title  offset character 0, 0, 0
set datafile missing '-'
set style data histograms
set xtics border in scale 1,0.5 nomirror rotate by -90  offset character 0, 0, 0 
set title "TS 10 years bench on ulam"
set yrange [ 0.00000 : 1.08000e+05 ] noreverse nowriteback
plot 'ts_ulam_real.dat' using 2:xtic(1), for [i=3:4] '' using i
EOF

gnuplot <alancer

Le fichiers de données intermédiaire est :

#  sortie du job | premiere var produite |  Jour | DEBUT JOB HH | MM | SS | somme des real time | FIN JOB HH | MM | SS |
# TS.465363  |  ATM-TS_MO-bils.nc  |  2 | 17|19|49  |  10426  |  2 | 20|32|41
# TS.465364  |  ATM-TS_MO-upwd.nc  |  2 | 17|19|50  |  11392  |  2 | 21|05|15
# TS.465365  |  ATM-TS_MO-cllcalipso.nc  |  2 | 17|19|52  |  41  |  2 | 17|26|41
# TS.465366  |  ATM-TS_MO-clcalipso.nc  |  2 | 17|19|53  |  128  |  2 | 17|31|27

Le fichier de données de gnuplot est :

# Titre  temps d attente par rapport au premier, somme des real time donne par les commande stime nco, duree restante du job
# TS WAIT CPUTIME ENDED
#  ATM-TS_MO-bils.nc   0   10426   1146
#  ATM-TS_MO-upwd.nc   1   11392   2133
#  ATM-TS_MO-cllcalipso.nc   3   41   368
#  ATM-TS_MO-clcalipso.nc   4   128   566

Retours cesium

  • 27 jobs soumis
  • histogramme des temps d'attente, des temps réels des comandes nco et du reste : transferts de fichiers et liens vers dods
    • ordonnée maximale : 10h

  • ordonnée maximale : 100h

Retours mercure

  • 27 jobs soumis
  • histogramme des temps d'attente, des temps réels des comandes nco et du reste : transferts de fichiers et liens vers dods
    • ordonnée maximale : 10h

  • ordonnée maximale : 100h

Retours titane

  • 27 jobs soumis
  • histogramme des temps d'attente, des temps réels des comandes nco et du reste : transferts de fichiers et liens vers dods
    • ordonnée maximale : 10h

  • ordonnée maximale : 100h

Retours ulam

  • 27 jobs soumis
    • Problème repéré : une même commande peut prendre 10 mn ou 7h. De quoi cela dépend-il? Etude en cours à l'IDRIS.
    • histogramme des temps d'attente, des temps réels des comandes nco et du reste : transferts de fichiers et liens vers dods
      • ordonnée maximale : 100h

Attachments (11)

Download all attachments as: .zip