run.sh 2.8 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=(2 10)
40
41
42
#percs_array=(0 25 50 75 100)
percs_array=(0)
at_array=(3)
43
44

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

#Crear carpeta de resultados
cd $dir$ResultsDir
name_res=$node_qty"N-"$(date '+%m-%d')
56
57
58
59
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
60
61
62
63
echo "Localizacion de los resultados: $dir$ResultsDir$name_res"
mkdir $name_res

# Ejecutar pruebas
64

65
i=0
66
j=0
67
68
69
70
for procs_parents in "${procs_array[@]}"
do
  for procs_sons in "${procs_array[@]}"
  do
71
72
    for adr_perc in "${percs_array[@]}"
    do
73

74
      for phy_dist in cpu node
75
76
      do

77
        for ibarrier_use in "${at_array[@]}"
78
        do
79
          i=$(($i + 1))
80

81
82
83
84
	  # Crear directorio para esta ejecucion
          cd $dir$ResultsDir$name_res
	  mkdir Run$i
	  cd Run$i
85

86
87
88
89
90
91
92
          # Crear archivo de configuracion
	  echo "Config $procs_parents -- $procs_sons -- $adr_perc -- $ibarrier_use -- $phy_dist -- 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 $time $proc_init "${array[@]}"
93
94
95

        done
      done
96
    done
97
    start_i=$(($j * ${#percs_array[@]} * ${#at_array[@]} * 2)) #TODO modficar utlimo valor conforme cambie phy_dist
98
99
    # LANZAR SCRIPT
    echo $aux
100
    sbatch -N $node_qty $dir$execDir./arrayRun.sh $dir$ResultsDir$name_res $start_i $procs_parents $procs_sons
101
    j=$(($j + 1))
102
103
104
  done
done

105
echo "Localizacion de los resultados: $dir$ResultsDir$name_res"
106
echo "END TEST"