Ignore:
Timestamp:
10/28/08 17:40:40 (16 years ago)
Author:
sdipsl
Message:

SD : - Add the so called "rebuild déporté" or asynchronous rebuild

  • EXPERIMENTAL, work at CCRT only (for now mercure+platine)
  • Add IDRIS when new post-process machine is available
  • On SX one needs to run on $SCRATCHDIR not $LOCALTMPDIR
  • To keep it disable : RebuildFrequency?=NONE in config.card
  • To enable it : RebuildFrequency?=2Y in config.card
  • To enable it on SX8R : RUN_DIR_PATH=$SCRATCHDIR in AA_job
  • Need testing to tune empirically dependance between RebuildFrequency? and other post-processing frequency
  • Need more tests to prevent user choices' inconsitency
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/libIGCM/libIGCM_comp/libIGCM_comp.ksh

    r5 r22  
    528528 
    529529    typeset ListTextName TextName0 
    530     typeset comp compname comptagname card ListFilesName FileName0 NbFiles  
     530    typeset comp compname comptagname card ListFilesName FileName0 NbFiles SaveOnArchive 
    531531    typeset i i_ file_in file_in_ file_out file_out_ generic_file_name nb_rebuild_file 
    532532    for comp in ${config_ListOfComponents[*]} ; do 
     
    585585            (( i=0 )) 
    586586            until [ $i -ge $NbFiles ]; do 
     587                SaveOnArchive=true 
    587588                eval file_in_=\${${ListFilesName}[$i]} > /dev/null 2>&1 
    588589                eval file_in=${file_in_} 
     
    590591                eval file_out_=\${${ListFilesName}[$i_]} > /dev/null 2>&1 
    591592                eval file_out=${file_out_} 
    592  
     593                # 
    593594                generic_file_name=$( basename ${file_in} .nc ) 
    594595                nb_rebuild_file=$( ls | grep "${generic_file_name}[_0-9]*.nc" | wc -l ) 
    595                 if [ ${nb_rebuild_file} -gt 1 ] ; then 
    596                     IGCM_debug_Print 2 "Rebuilding  ${file_in}" 
    597                     IGCM_sys_rebuild ${file_in} ${generic_file_name}_*.nc 
    598                     # DEBUG Rebuild : 
    599                     #eval IGCM_sys_Cp ${generic_file_name}_*.nc \${R_OUT_${comp}_O_M}/ 
    600                 elif [ -f ${generic_file_name}_0000.nc ] ; then 
     596                # 
     597                if ( [ ${nb_rebuild_file} -eq 1 ] && [ -f ${generic_file_name}_0000.nc ] ) ; then 
     598                    IGCM_debug_Print 2 "Parallelism with 1 process. Rebuilding ${file_in} not needed" 
    601599                    IGCM_sys_Mv ${generic_file_name}_0000.nc ${file_in} 
     600                elif [ ${nb_rebuild_file} -gt 1 ] ; then 
     601                    IGCM_debug_Print 2 "Parallelism detected rebuilding ${file_in} is needed" 
     602                    if ( [ X${config_Post_RebuildFrequency} = X${NULL_STR} ] || [ X${config_Post_RebuildFrequency} = XNONE ] ) ; then 
     603                        IGCM_debug_Print 2 "Rebuilding ${file_in} online" 
     604                        IGCM_sys_rebuild ${file_in} ${generic_file_name}_*.nc 
     605                    else 
     606                        IGCM_debug_Print 2 "Preparing offline rebuild for ${file_in}" 
     607                        IGCM_sys_Mkdir ${RUN_DIR}/REBUILD_${PeriodDateBegin} 
     608                        IGCM_sys_Mv ${generic_file_name}_????.nc ${RUN_DIR}/REBUILD_${PeriodDateBegin} 
     609                        # Prepare headers for the shell dedicated to offline rebuild 
     610                        if [ ! -f ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh ] ; then 
     611                            echo \#!/bin/ksh                               > ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     612                            echo function IGCM_FlushRebuild               >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     613                            echo {                                        >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     614                            echo IGCM_debug_PushStack "IGCM_FlushRebuild" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     615                            echo echo                                     >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     616                            echo IGCM_debug_Print 1 "IGCM_FlushRebuild :" >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     617                            echo echo                                     >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     618                        fi 
     619                        # Prepare the shell dedicated to offline rebuild 
     620                        echo IGCM_sys_rebuild ${file_in} ${generic_file_name}_*.nc >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     621                        echo IGCM_sys_Put_Out ${file_in} ${file_out}               >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     622                        echo IGCM_sys_Rm ${generic_file_name}_*.nc                 >> ${RUN_DIR}/REBUILD_${PeriodDateBegin}/rebuild.ksh 
     623                        SaveOnArchive=false 
     624                    fi 
    602625                fi 
    603  
    604                 IGCM_sys_Put_Out ${file_in} ${file_out} 
    605                 if [ $? -eq 0 ] ; then 
    606                     eval FileToBeDeleted[${#FileToBeDeleted[@]}]="${file_in}" > /dev/null 2>&1 
     626                # 
     627                if [ ${SaveOnArchive} = true ] ; then 
     628                    IGCM_sys_Put_Out ${file_in} ${file_out} 
     629                    [ $? -eq 0 ] && eval FileToBeDeleted[${#FileToBeDeleted[@]}]="${file_in}" > /dev/null 2>&1 
    607630                    if [ ${nb_rebuild_file} -gt 1 ] ; then 
    608                         eval FileToBeDeleted[${#FileToBeDeleted[@]}]=$( ls | grep "${generic_file_name}_[0-9]*.nc" ) > /dev/null 2>&1 
     631                        for DelFile in $( ls | grep "${generic_file_name}[_0-9]*.nc" ) ; do 
     632                            eval FileToBeDeleted[${#FileToBeDeleted[@]}]=${DelFile} > /dev/null 2>&1 
     633                        done 
    609634                    fi 
    610635                fi 
Note: See TracChangeset for help on using the changeset viewer.