Ignore:
Timestamp:
09/03/12 11:29:13 (12 years ago)
Author:
gpincka
Message:

principalement : enchainement du launcher parallele + gestion reprise du code parallele

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TOOLS/PACK_IPSL/parallelPack.sh

    r1849 r1853  
    11#!/bin/bash 
     2 
     3function insertDirectives 
     4{ 
     5     
     6    local batchFile="launch_and_measureTime.sh" 
     7    local lineBeginMutableDrves=`grep -n "batch directives : begin" $batchFile | awk -F":" '{print $1}' ` 
     8    local lineHeaderMutableDrves=`grep -n "mutable directives" $batchFile | awk -F":" '{print $1}' ` 
     9    local lineEndMutableDrves=`grep -n "batch directives : end" $batchFile | awk -F":" '{print $1}' ` 
     10    if [ "x${lineBeginMutableDrves}" == "x" ] || [ "x${lineHeaderMutableDrves}" == "x" ] || [ "x${lineEndMutableDrves}" == "x" ] 
     11    then 
     12        echo "Examen du fichier $batchFile :" 
     13        echo "Il manque les balises commentees 'mutable directives' et 'batch directives : end' " 
     14        exit 1 
     15    fi 
     16     
     17    # echo "lineHeaderMutableDrves=$lineHeaderMutableDrves" 
     18    # echo "lineEndMutableDrves=$lineEndMutableDrves" 
     19     
     20    if [ $lineHeaderMutableDrves -ge $lineEndMutableDrves ] 
     21    then 
     22       echo "Examen du fichier $batchFile :" 
     23       echo "les lignes 'mutable directives' et 'batch directives : end' n'existent pas ou ne sont" 
     24       echo "pas bien placees l'une par rapport a l'autre ==> STOP." 
     25       exit 1 
     26    fi 
     27     
     28    # Suppression des anciennes directives 
     29    local firstLineToMove=$(( $lineHeaderMutableDrves + 1 )) 
     30    local lastLineToMove=$(( $lineEndMutableDrves - 1 )) 
     31    if [ $firstLineToMove -lt $lineEndMutableDrves ] 
     32    then 
     33        sed -i "${firstLineToMove},${lastLineToMove}d" $batchFile 
     34    fi 
     35         
     36    # insertion des directives chargees a partir de "load_batch_directives.sh" 
     37    local lineEndMutableDrves=`grep -n "batch directives : end" $batchFile | awk -F":" '{print $1}' ` 
     38    sed -i "${lineEndMutableDrves}i\#MSUB -Qos $QosType" $batchFile 
     39    sed -i "${lineEndMutableDrves}i\#MSUB -q $queueType" $batchFile 
     40    sed -i "${lineEndMutableDrves}i\#MSUB -A $projectName" $batchFile 
     41    sed -i "${lineEndMutableDrves}i\#MSUB -T $computationTime" $batchFile 
     42    sed -i "${lineEndMutableDrves}i\#MSUB -n $nbProcs" $batchFile 
     43     
     44    # insertion des directives specifiant les sorties des operations de pack 
     45    sed -i "${lineEndMutableDrves}i\#MSUB -e ${DETAILLED_OUTPUT}/pack_ipsl_%I.e" $batchFile 
     46    sed -i "${lineEndMutableDrves}i\#MSUB -o ${DETAILLED_OUTPUT}/pack_ipsl_%I.o" $batchFile 
     47 
     48} 
     49 
     50function check_machine 
     51{ 
     52    local host_name=`hostname ` 
     53    local isMachineTitane=`echo $host_name | grep "titane" | wc -l ` 
     54    local isMachineCurie=`echo $host_name | grep "curie" | wc -l ` 
     55     
     56    if [ "x${isMachineTitane}" == "x0" ] && [ "x${isMachineCurie}" == "x0" ] 
     57    then 
     58        echo "Ce programme doit etre lance a partir 'curie' ou 'titane'. STOP." 
     59        exit 1 
     60    fi 
     61 
     62} 
     63 
     64function getNumeroOfPreviousTry 
     65{ 
     66   local num_try="0" 
     67   ici=$PWD 
     68   cd $USER_OUTPUT_PROGRESS 
     69    
     70   tryDirs=`ls | grep -e 'TRY__[[:digit:]]\{1,2\}$' ` 
     71   for dir in $tryDirs 
     72   do 
     73      num=`echo $dir | awk -F"__" '{print $NF}' ` 
     74      if [ $num -gt $num_try ] 
     75      then 
     76          num_try=$num  
     77      fi 
     78   done   
     79   cd $ici 
     80   echo $num_try 
     81    
     82} 
    283 
    384########  pour option -f ############# 
     
    1798###################################### 
    1899 
    19 export IGCM_DEM=${SCRATCHDIR}/IGCM_DEM 
    20  
    21 ######### Si l'option -f est activee, on detruit tous les fichiers status  ########## 
     100# On charge les variables d'environnement  
     101. load_ipslPack_env.sh 
     102 
     103# On charge les directives batch 
     104. load_batch_directives.sh 
     105 
     106# on verifie que la machine est 'curie' ou 'titane' 
     107check_machine 
     108 
     109#########  On insert les directives batch en en-tete du script "launch_and_measureTime.sh"         ########## 
     110#########  lance plus loin. Seules les directives de nom du job et de sorties restent inchangees   ########## 
     111 
     112insertDirectives 
     113 
     114# exit 0 # gpdebug : a virer 
     115 
     116# export inputCmd="${USER_OUTPUT_PROGRESS}/inputCmd.list" 
     117# export nextInputCmd="${USER_OUTPUT_PROGRESS}/nextInputCmd.list" 
     118# export output="${USER_OUTPUT_PROGRESS}/packOutput.log" 
     119# export reportFile="${USER_OUTPUT_PROGRESS}/report.log" 
     120 
     121########## Si l'option -f est activee, on detruit tous les fichiers status  ########## 
    22122if [ "x$restartExecFromZero" == "x1" ] 
    23123then 
     
    41141    echo "Deletion done." 
    42142fi 
     143 
     144 
     145# Par ailleurs, on vide les fichiers de cmds, d'output et de rapport si option -f activee 
     146if [ "x${restartExecFromZero}" == "x1" ] 
     147then 
     148    rm -rf ${USER_OUTPUT_PROGRESS}/TRY__* 
     149fi 
     150 
     151# exit 0 # a virer 
     152 
    43153##################################################################################### 
    44154 
     
    54164# fichier pour la transmission des messages d'erreur d'un fils au prog principal 
    55165export errorMsgFile="${PWD}/errorMsg.txt" 
    56 ############## gpdebug : fin ##############################################################  
    57  
    58 export timeHandlingFile="timeHandlingFile.txt" 
     166############## gpdebug : fin ############################################################## 
     167 
     168check_nco_version # verification de la version de nco ####################### 
     169 
     170# penser a arreter le present script si le module "libccc_user" n'a pas ete charge 
     171 
     172export badFailureFile=${USER_OUTPUT_PROGRESS}/badFailure.txt 
     173> $badFailureFile # nouvel essai, on vide le fichier d'erreur 
     174tryNumFile=${USER_OUTPUT_PROGRESS}/numero_current_try.txt 
     175numPreviousTry=$( getNumeroOfPreviousTry ) 
     176# echo "numPreviousTry=$numPreviousTry" 
     177numNewTry=$(( $numPreviousTry + 1 )) 
     178 
     179# Pas de 4eme essai permis 
     180# ----------------------------  
     181if [ $numNewTry -ge 3 ] 
     182then 
     183    echo "Pas de 4eme essai permis" 
     184    exit 1 
     185fi 
     186 
     187# echo "numNewTry=$numNewTry" 
     188mkdir -p ${USER_OUTPUT_PROGRESS}/TRY__${numNewTry} 
     189echo $numNewTry > $tryNumFile 
     190 
     191# exit 0 # a virer 
     192 
     193 
     194 
     195export timeHandlingFile="${USER_OUTPUT_PROGRESS}/timeHandlingFile.txt" 
    59196> $timeHandlingFile 
    60197startTime=$( getDateMilliSeconds ) 
     
    65202DEM_log -0 "Demarrage de ${SCRIPT_NAME}" 
    66203 
    67 check_nco_version # gpdebug : verification de la version de nco ####################### 
    68  
    69 ccc_msub -A tgcc0013 launch_and_measureTime.sh 
    70  
    71  
     204# ccc_msub -A tgcc0013 launch_and_measureTime.sh 
     205ccc_msub launch_and_measureTime.sh 
    72206 
    73207DEM_log -0 "Fin de ${SCRIPT_NAME}" 
     208 
     209 
     210elapsedTime=0 
     211while [ $elapsedTime -lt 500 ] 
     212do 
     213    sleep 5 
     214    elapsedTime=$(( $elapsedTime + 5 )) 
     215    isFailureFileEmpty=`cat $badFailureFile | wc -l ` 
     216    if [ "x${isFailureFileEmpty}" != "x0" ] 
     217    then 
     218       sleep 2 # on attend que le fichier soit correctement rempli 
     219       cat $badFailureFile 
     220       exit 0 
     221    fi 
     222done 
     223 
     224 
     225 
     226 
Note: See TracChangeset for help on using the changeset viewer.