run.sh 3.56 KB
Newer Older
1
2
3
4
5
6
7
8
#!/bin/bash

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

#TODO Añadir diferenciar phy_dist de padres e hijos al ejecutar
9
10
11
12
13
14
15
16
17
#TODO Añadir que se considere la cantidad de nucleos de un nodo y no este fijada

if [[ $# -lt 9 ]]
then
  echo "Faltan argumentos"
  echo "bash run.sh grupos tam_computo tam_comm tam_resize tiempo proc_init iters first_iter node_qty"
  exit -1
fi

18
19
20
21
echo "START TEST"

groups=$1 #TODO Modificar para que admita más de dos grupos de procesos
matrix_tam=$2
22
23
24
25
26
comm_tam=$3
N_qty=$4 # Datos a redistribuir
time=$5
proc_init=$6 #El tiempo por iteracion es para esta cantidad de procesos
iters=$7
27
28
first_iter=$8
node_qty=$9
29

30
31
32
33
34
35
36
37
# Si el valor es 0 el primer grupo de procesos realiza $iters iteraciones antes de redimensionar
if [[ $first_iter -eq 0 ]] 
then
  iters_first_group=$iters
# Si el valor es diferente a 0, el primer grupo de procesos realiza $first_iter iteraciones antes de redimensionar
else 
  iters_first_group=$first_iter
fi
38
max_procs=$(($node_qty * 20))
39
procs_array=(1 10)
40
41
#percs_array=(0 25 50 75 100)
percs_array=(0)
42
43
44
45
at_array=(0)
dist_array=(cpu)
cst_array=(0 1 2 3)
css_array=(0 1)
46
47

#Obtener cantidades de procesos posibles a ejecutar
48
49
50
51
52
53
54
55
i=0
#while [[ $value -lt $max_procs ]]
#do
#  i=$(($i + 1))
#  value=$((20 * $i))
#  procs_array=(${procs_array[@]} $value)
#done

56
57
i=0
while [[ $value -lt $max_procs ]]
58
59
do
  i=$(($i + 1))
60
61
  value=$((2 ** $i))
  value=$(($value * 10))
62
63
64
65
66
67
  procs_array=(${procs_array[@]} $value)
done

#Crear carpeta de resultados
cd $dir$ResultsDir
name_res=$node_qty"N-"$(date '+%m-%d')
68
69
70
71
if [ -d $name_res ] # Si ya existe el directorio, modificar levemente el nombre y crear otro
then
  name_res=$name_res"-"$(date '+%H:%M')
fi
72
73
74
75
echo "Localizacion de los resultados: $dir$ResultsDir$name_res"
mkdir $name_res

# Ejecutar pruebas
76

77
i=0
78
j=0
79
80
for procs_parents in "${procs_array[@]}"
do
81
  node_qty1=$(($procs_parents / 20))
82
83
  for procs_sons in "${procs_array[@]}"
  do
84
85
86
87
88
89
90
91
92
93
94
95
96
    node_qty2=$(($procs_sons / 20))
    if [ $node_qty1 -lt $node_qty2 ]
    then
      node_qty1=$node_qty2
    fi
    if [ $node_qty1 -eq 0 ]
    then
      node_qty1=1
    fi

    if [ $procs_parents -ne $procs_sons ]
    then
      for adr_perc in "${percs_array[@]}"
97
      do
98
        for phy_dist in "${dist_array[@]}"
99
        do
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
          for ibarrier_use in "${at_array[@]}"
          do
            for cst in "${cst_array[@]}"
            do
              for css in "${css_array[@]}"
              do
                i=$(($i + 1))

	        # Crear directorio para esta ejecucion
                cd $dir$ResultsDir$name_res
	        mkdir Run$i
                cd Run$i

                # Crear archivo de configuracion
                echo "Config $procs_parents -- $procs_sons -- $adr_perc -- $ibarrier_use -- $phy_dist -- $cst -- $css -- RUN $i"
                array0=($iters_first_group $procs_parents $phy_dist)
                array=("${array0[@]}")
                array0=($iters $procs_sons $phy_dist)
                array+=("${array0[@]}")
                python3 $dir$execDir/./create_ini.py config$i.ini 1 $matrix_tam $comm_tam $N_qty $adr_perc $ibarrier_use $cst $css $time $proc_init "${array[@]}"
  	      done
            done
          done
123
        done
124
125
126
      done #adr_perc

    start_i=$(($j * ${#percs_array[@]} * ${#dist_array[@]} * ${#at_array[@]} * ${#cst_array[@]} * ${#css_array[@]}))
127
128
    # LANZAR SCRIPT
    echo $aux
129
    sbatch -N $node_qty1 $dir$execDir./arrayRun.sh $dir$ResultsDir$name_res $start_i $procs_parents $procs_sons
130
    j=$(($j + 1))
131
    fi
132
133
134
  done
done

135
echo "Localizacion de los resultados: $dir$ResultsDir$name_res"
136
echo "END TEST"