CheckRun.sh 2.46 KB
Newer Older
1
2
3
4
5
6
7
8
9
#!/bin/bash

dir="/home/martini/malleability_benchmark/"
codeDir="Codes/"
execDir="Exec/"
ResultsDir="Results/"

ResultsDirName=$1
maxIndex=$2
10
cantidadGrupos=$3 #Contando a los padres
11

12
13
14
15
16
17
18
if [ $# -lt 3 ]
then
  echo "Faltan argumentos"
  echo "Uso -> bash CheckRun NombreDirectorio IndiceMaximo Grupos"
  exit -1
fi

19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
cd $dir$ResultsDir
if [ ! -d $ResultsDirName ]
then
  echo "La carpeta de resultados $ResultsDirName no existe. Abortando"
  exit -1
fi
cd $ResultsDirName

#Comprobar si hay errores
#Si los hay, salir
grep -i -e fatal -e error -e abort -e == */slurm* > errores2.txt
qty=$(wc -l errores2.txt | cut -d ' ' -f1)

if [ $qty -gt 0 ]
then
  echo "Se han encontrado errores de ejecución graves. Abortando"
35
  echo "Revisar archivo errores2.txt en el directorio $ResultsDirName"
36
37
38
39
  exit -2
fi
rm errores2.txt

40
41
42
43
44
45
46
47
48
49
50
qtyG=$(ls R*/R*_Global.out | wc -l)
qtyG=$(($qtyG * 2))
qtyL=$(ls R*/R*_G?N*.out | wc -l)
if [ $qtyG == $qtyL ]
then
  echo "El numero de ficheros G($qtyG) y L($qtyL) coincide"
else # TODO Expandir indicando cuales
  echo "Faltan ejecuciones Locales o globales"
  exit -1
fi

51
52
53
54
55
56
57
58
#Comprobar si hay runs con tiempo negativos
#Si los hay, reejecutar e informar de cuales son
grep - */R* | grep Tex > errores.txt
qty=$(wc -l errores.txt | cut -d ' ' -f1)
if [ $qty -gt 0 ]
then
  echo "Se han encontrado errores de ejecución leves. Volviendo a ejecutar"

59
  while IFS="" read -r lineRun || [ -n "$lineRun" ]
60
  do
61
    #Obtener datos de una ejecución erronea
62
    run=$(echo $lineRun | cut -d 'R' -f3 | cut -d '_' -f1)
63
64
65
66
67
68
69
70
71
    if [ $run -gt $maxIndex ]
    then #Indice de ejecuciones posteriores
      realRun=$(($run - $maxIndex))
      index=$run
    else # Indice de las primeras ejecuciones
      realRun=$run
      index=$(($run + $maxIndex))
    fi

72
    echo "Run $run"
73
74
75
76
77
78
79
80
81
82
83
84
85
86
    cd Run$realRun

    #Arreglar ejecuccion

    #1 - Borrar lineas erroneas
    qty=$(grep -n - R* | grep Tex | wc -l)
    for ((i=0; i<qty; i++))
    do 
      fin=$(grep -n - R* | grep Tex | cut -d ':' -f2 | head -n1)
      init=$(($fin - 6))
      sed -i ''$init','$fin'd' R${realRun}_Global.out

      aux=$(($fin / 7)) #Utilizado para saber de entre las ejecuciones del fichero, cual es la erronea
      fin=$(($aux * 5))
87
      init=$(($fin - 4))
88
89
90
91
92
93
94
95
96
      for ((j=0; j<cantidadGrupos; j++)); do
        sed -i ''$init','$fin'd' R${realRun}_G${j}*
      done
    done

    #2 - Reelanzar ejecucion
    sbatch -N 2 $dir$execDir./singleRun.sh config$realRun.ini $index
    cd $dir$ResultsDir$ResultsDirName

97
  done < errores.txt
98
99
  exit 0
fi