Changeset 2281


Ignore:
Timestamp:
01/07/22 15:18:07 (2 years ago)
Author:
jderouillat
Message:

Add tracking of the memory consumption in the test suite

Location:
XIOS/dev/dev_ym/XIOS_COUPLING/xios_test_suite
Files:
5 added
7 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_ym/XIOS_COUPLING/xios_test_suite/ARCH/arch-X64_IRENE.fcm

    r1803 r2281  
    88 
    99%BASE_CFLAGS    -std=c++11 -diag-disable 1125 -diag-disable 279 -D__XIOS_EXCEPTION 
    10 %PROD_CFLAGS    -O3 -D BOOST_DISABLE_ASSERTS 
     10%PROD_CFLAGS    -O3 -g -D BOOST_DISABLE_ASSERTS 
    1111#%DEV_CFLAGS     -g -traceback 
    1212%DEV_CFLAGS     -g  
     
    1414 
    1515%BASE_FFLAGS    -D__NONE__  
    16 %PROD_FFLAGS    -O3 
     16%PROD_FFLAGS    -O3 -g 
    1717#%DEV_FFLAGS     -g -traceback 
    1818%DEV_FFLAGS     -g  
  • XIOS/dev/dev_ym/XIOS_COUPLING/xios_test_suite/TEST_SUITE/my_run.sh

    r2210 r2281  
    88 
    99fn=report_${svnR}_${arch}_${mode}.txt 
    10 echo "#revision" ${svnR} > ${fn} 
    11 echo "#url" ${svnurl} >> ${fn} 
    12 echo "#machine" ${xios_machine_name} >> ${fn} 
    13 echo "#build_dir" $(pwd)/build_${arch}_${mode} >> ${fn} 
    14 echo "#arch" $arch >> ${fn} 
    15 echo "#mode" $mode >> ${fn} 
    1610 
     11if [ -z ${enable_mem_track+x} ]; then 
     12  # initialize the report for the main part of the test (without memory tracking, see step2.py for details) 
     13  echo "#revision" ${svnR} > ${fn} 
     14  echo "#url" ${svnurl} >> ${fn} 
     15  echo "#machine" ${xios_machine_name} >> ${fn} 
     16  echo "#build_dir" $(pwd)/build_${arch}_${mode} >> ${fn} 
     17  echo "#arch" $arch >> ${fn} 
     18  echo "#mode" $mode >> ${fn} 
     19else 
     20  if  [ ! -f "$fn" ]; then  
     21    # initialize the report if it does not exist 
     22    echo "#revision" ${svnR} > ${fn} 
     23    echo "#url" ${svnurl} >> ${fn} 
     24    echo "#machine" ${xios_machine_name} >> ${fn} 
     25    echo "#build_dir" $(pwd)/build_${arch}_${mode} >> ${fn} 
     26    echo "#arch" $arch >> ${fn} 
     27    echo "#mode" $mode >> ${fn} 
     28    echo "#memtrack full" >> ${fn} 
     29  fi 
     30  # else write in the same report 
     31fi 
    1732 
    1833${PYTHON} step1.py 
  • XIOS/dev/dev_ym/XIOS_COUPLING/xios_test_suite/TEST_SUITE/run_test

    r2272 r2281  
    33export build_dir=xios_test_suite/RUN_TEST_SUITE/build_${arch}_${mode} 
    44export svnR=$(svn info --show-item revision ../../) 
     5if [[ -v enable_mem_track ]]; then 
     6  echo "enable_mem_track is set to '$enable_mem_track'" 
     7fi 
    58 
    69echo "Start Building XIOS ... " 
     
    5457  echo "#MSUB -m work,scratch" >> compile.sh 
    5558  echo "cd ../.. ">> compile.sh 
    56   echo "./make_xios --arch_path `pwd`/../ARCH --arch ${arch} --${mode} --use_tv --build_dir ${build_dir} --job 16" >> compile.sh 
     59  echo "./make_xios --arch_path `pwd`/../ARCH --arch ${arch} --${mode} --use_tv ${enable_mem_track} --build_dir ${build_dir} --job 16" >> compile.sh 
    5760  cmd=$(ccc_msub compile.sh) 
    5861  jobid="${cmd//[!0-9]/}" 
  • XIOS/dev/dev_ym/XIOS_COUPLING/xios_test_suite/TEST_SUITE/run_test_irene

    r2197 r2281  
    1313 
    1414 
     15# Must be run after main (X64_IRENE, prod) test to append in the same report 
     16export arch=X64_IRENE 
     17export mode=prod 
     18export enable_mem_track="--memtrack full" 
     19 
     20bash ./run_test 
     21 
     22 
    1523#export arch=X64_IRENE 
    1624#export mode=debug 
  • XIOS/dev/dev_ym/XIOS_COUPLING/xios_test_suite/TEST_SUITE/step1.py

    r2272 r2281  
    1212mode=os.getenv("mode") 
    1313arch=os.getenv("arch") 
     14enable_mem_track=os.getenv("enable_mem_track") 
    1415machine=os.getenv("xios_machine_name") 
    1516svnR=os.getenv("svnR") 
     
    176177 
    177178    for test_folder in test_folder_list: 
     179        # check if test concerns xios features (NetCDF), or memory consumption (mem files) 
     180        files_list="" 
     181        flist = open(test_folder+"/checkfile.def", 'r') 
     182        files_list = flist.read() 
     183        flist.close() 
     184        if ( enable_mem_track==None ) and ( not('.mem' in files_list) ) : 
     185            print( "test_folder = ", test_folder, " : launch std run") 
     186        elif ( enable_mem_track=='--memtrack full' ) and ( '.mem' in files_list ) : 
     187            print( "test_folder = ", test_folder, " : launch mem run")             
     188        else : 
     189            continue 
     190 
    178191        config_list=[] 
    179192        config_name=[] 
  • XIOS/dev/dev_ym/XIOS_COUPLING/xios_test_suite/TEST_SUITE/step2.py

    r2231 r2281  
    1313mode=os.getenv("mode") 
    1414arch=os.getenv("arch") 
     15enable_mem_track=os.getenv("enable_mem_track") 
    1516svnr=os.getenv("svnR") 
    1617ref_location=os.getenv("ref_location") 
     
    7374 
    7475    for test_folder in test_folder_list: 
     76        report_filename="" 
     77        # check if test concerns xios features (NetCDF), or memory consumption (mem files) 
     78        files_list="" 
     79        flist = open(test_folder+"/checkfile.def", 'r') 
     80        files_list = flist.read() 
     81        flist.close() 
     82        if ( enable_mem_track==None ) and ( not('.mem' in files_list) ) : 
     83            report_filename = "report_"+svnr+"_"+arch+"_"+mode+".txt" 
     84        elif ( enable_mem_track=='--memtrack full' ) and ( '.mem' in files_list ) : 
     85            #report_filename = "report_"+svnr+"_"+arch+"_"+mode+"_memtrack.txt" 
     86            # -> use same report that for feature test 
     87            report_filename = "report_"+svnr+"_"+arch+"_"+mode+".txt" 
     88        else : 
     89            continue 
     90 
    7591        config_list = glob.glob(test_folder+"/CONFIG_*") 
    7692         
     
    7995            checkfiles = list(nonblank_lines(fh)) 
    8096 
    81         with open("report_"+svnr+"_"+arch+"_"+mode+".txt", "a") as report: 
     97        with open(report_filename, "a") as report: 
    8298            for config in config_list: 
    8399                folder_name = list(config.split("/"))[0] 
     
    85101                for checkfile in checkfiles: 
    86102                    if os.path.exists(config+"/"+checkfile) and os.path.exists("reference/ref_"+config+"/"+checkfile): 
    87                         #OSinfo("cdo -W diffn "+config+"/"+checkfile+" "+"reference/ref_"+config+"/"+checkfile+"  2>&1 |grep -v 'Found more than one time variable'|grep -v 'cdo diffn: Processed'|grep -v 'cdo    diffn: Processed'|grep -v 'Time variable >time_counter< not found!' > diff_"+checkfile+".txt") 
    88                         #if os.stat("diff_"+checkfile+".txt").st_size==0: # if no diff -> set 0 
    89                         #    report.write(folder_name+" "+folder_name+"@"+config_name+" "+folder_name+"@"+config_name+"@"+checkfile+" "+str(1)+"\n") 
    90                         #else: # if cdo diffn returns diff -> set -1 
    91                         #    report.write(folder_name+" "+folder_name+"@"+config_name+" "+folder_name+"@"+config_name+"@"+checkfile+" "+str(-1)+"\n") 
    92                         ref = Dataset( "reference/ref_"+config+"/"+checkfile ) 
    93                         res = Dataset( config+"/"+checkfile ) 
    94                         validated = 1 
    95                         np.seterr(divide='ignore', invalid='ignore') 
    96                         for var in res.variables: 
    97                             if (not (var.startswith('lon_'))) and (not (var.startswith('lat_'))) and (not (var.startswith('time_'))) and (not (var.startswith('atm__'))): 
    98                                 ref_interp = ref.variables[var] 
    99                                 ref_array = ref_interp[:] 
    100                                 res_interp = res.variables[var] 
    101                                 res_array = res_interp[:] 
    102                                 if (res_array.shape == ref_array.shape): 
    103                                     diff = np.zeros_like( ref_array ) 
    104                                     np.divide(ref_array-res_array,ref_array,diff,where=(ref_array[:]>10**-15)) 
    105                                     if ( np.max(np.abs(diff)) >  1*10**-9 ): 
     103                        if ( enable_mem_track==None ) and ( not('.mem' in files_list) ): # NetCDF 
     104                            #OSinfo("cdo -W diffn "+config+"/"+checkfile+" "+"reference/ref_"+config+"/"+checkfile+"  2>&1 |grep -v 'Found more than one time variable'|grep -v 'cdo diffn: Processed'|grep -v 'cdo    diffn: Processed'|grep -v 'Time variable >time_counter< not found!' > diff_"+checkfile+".txt") 
     105                            #if os.stat("diff_"+checkfile+".txt").st_size==0: # if no diff -> set 0 
     106                            #    report.write(folder_name+" "+folder_name+"@"+config_name+" "+folder_name+"@"+config_name+"@"+checkfile+" "+str(1)+"\n") 
     107                            #else: # if cdo diffn returns diff -> set -1 
     108                            #    report.write(folder_name+" "+folder_name+"@"+config_name+" "+folder_name+"@"+config_name+"@"+checkfile+" "+str(-1)+"\n") 
     109                            ref = Dataset( "reference/ref_"+config+"/"+checkfile ) 
     110                            res = Dataset( config+"/"+checkfile ) 
     111                            validated = 1 
     112                            np.seterr(divide='ignore', invalid='ignore') 
     113                            for var in res.variables: 
     114                                if (not (var.startswith('lon_'))) and (not (var.startswith('lat_'))) and (not (var.startswith('time_'))) and (not (var.startswith('atm__'))): 
     115                                    ref_interp = ref.variables[var] 
     116                                    ref_array = ref_interp[:] 
     117                                    res_interp = res.variables[var] 
     118                                    res_array = res_interp[:] 
     119                                    if (res_array.shape == ref_array.shape): 
     120                                        diff = np.zeros_like( ref_array ) 
     121                                        np.divide(ref_array-res_array,ref_array,diff,where=(ref_array[:]>10**-15)) 
     122                                        if ( np.max(np.abs(diff)) >  1*10**-9 ): 
     123                                            validated = -1 
     124                                        diff = np.zeros_like( ref_array ) 
     125                                        np.divide(ref_array-res_array,res_array,diff,where=(ref_array[:]>10**-15)) 
     126                                        if ( np.max(np.abs(diff)) >  1*10**-9 ): 
     127                                            validated = -1 
     128                                    else: 
    106129                                        validated = -1 
    107                                     diff = np.zeros_like( ref_array ) 
    108                                     np.divide(ref_array-res_array,res_array,diff,where=(ref_array[:]>10**-15)) 
    109                                     if ( np.max(np.abs(diff)) >  1*10**-9 ): 
    110                                         validated = -1 
    111                                 else: 
    112                                         validated = -1 
    113                         report.write(folder_name+" "+folder_name+"@"+config_name+" "+folder_name+"@"+config_name+"@"+checkfile+" "+str(validated)+"\n") 
     130                            report.write(folder_name+" "+folder_name+"@"+config_name+" "+folder_name+"@"+config_name+"@"+checkfile+" "+str(validated)+"\n") 
     131                         
     132                        elif ( enable_mem_track=='--memtrack full' ) and ( '.mem' in files_list ) : # mem file 
     133                            validated = 1 
     134                            OSinfo("diff "+config+"/"+checkfile+" "+"reference/ref_"+config+"/"+checkfile+"  2>&1  > diff_"+checkfile+".txt") 
     135                            if os.stat("diff_"+checkfile+".txt").st_size==0: # if no diff -> set 0 
     136                                validated = 1 
     137                            else: # if diff returns diff -> set -1 
     138                                validated = -1 
     139                            report.write(folder_name+" "+folder_name+"@"+config_name+" "+folder_name+"@"+config_name+"@"+checkfile+" "+str(validated)+"\n") 
    114140 
    115141                    elif os.path.exists(config+"/"+checkfile): # if no ref file -> set 0 
  • XIOS/dev/dev_ym/XIOS_COUPLING/xios_test_suite/generate_ref.sh

    r1909 r2281  
    55W_DIR=RUN_TEST_SUITE 
    66NC_FILE=*.nc 
     7MEM_FILE=*.mem 
    78REF_TAR=reference.tar.gz 
    89 
     
    1516  do 
    1617    mkdir -p ${REF}/${REF_PREFIX}${test_config%%} 
    17     cp ${W_DIR}/${test_config%%}/${NC_FILE} ${REF}/${REF_PREFIX}${test_config%%} 
     18    cp ${W_DIR}/${test_config%%}/${NC_FILE}  ${W_DIR}/${test_config%%}/${MEM_FILE} ${REF}/${REF_PREFIX}${test_config%%} 
    1819  done 
    1920done 
Note: See TracChangeset for help on using the changeset viewer.