run.sh 2.66 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)

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

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

# Ejecutar pruebas
i=0
63
j=0
64
65
66
67
for procs_parents in "${procs_array[@]}"
do
  for procs_sons in "${procs_array[@]}"
  do
68
69
    for adr_perc in "${percs_array[@]}"
    do
70

71
      for phy_dist in cpu node
72
73
      do

74
        for ibarrier_use in 3 #TODO Poner a 0 1 2 3?
75
        do
76
          i=$(($i + 1))
77

78
79
80
81
	  # Crear directorio para esta ejecucion
          cd $dir$ResultsDir$name_res
	  mkdir Run$i
	  cd Run$i
82

83
84
85
86
87
88
89
          # 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[@]}"
90
91
92

        done
      done
93
94
95
96
97
98
    done
    aux=$(($j * 10)) #TODO Poner a 20 cuando se use ibarrier
    # LANZAR SCRIPT
    echo $aux
    sbatch -N $node_qty $dir$execDir./arrayRun.sh $dir$ResultsDir$name_res $aux $procs_parents $procs_sons
    j=$(($j + 1))
99
100
101
102
  done
done

echo "END TEST"