Commit 79f5835d authored by iker_martin's avatar iker_martin
Browse files

Cambios en los archivos de ejecucion para permitir mas opciones y...

Cambios en los archivos de ejecucion para permitir mas opciones y automaticamente relanzar trabajos con errores
parent 926feb73
......@@ -28,11 +28,6 @@ void recv_sync_arrays(struct Dist_data dist_data, char *array, int root, int num
void send_async_arrays(struct Dist_data dist_data, char *array, int root, int numP_child, int idI, int idE, struct Counts counts, MPI_Request *comm_req);
void recv_async_arrays(struct Dist_data dist_data, char *array, int root, int numP_parents, int idI, int idE, struct Counts counts, MPI_Request *comm_req);
//TESTS
void send_async_arrays2(struct Dist_data dist_data, char *array, int rootBcast, int numP_child, int idI, int idE, struct Counts counts, MPI_Request **comm_req);
void recv_async_arrays2(struct Dist_data dist_data, char *array, int root, int numP_parents, int idI, int idE, struct Counts counts, MPI_Request **comm_req);
//
// DIST FUNCTIONS
void get_dist(int qty, int id, int numP, struct Dist_data *dist_data);
void set_counts(int id, int numP, struct Dist_data data_dist, int *sendcounts);
......
#!/bin/bash
dir="/home/martini/malleability_benchmark/"
codeDir="Codes/"
execDir="Exec/"
ResultsDir="Results/"
ResultsDirName=$1
maxIndex=$2
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"
exit -2
fi
rm errores2.txt
#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"
while IFS="" read -r line || [ -n "$line" ]
do
run=$(echo $line | cut -d '/' -f1 | cut -d 'n' -f2)
echo "Run $run"
index=$(($run + $maxIndex))
sbatch -N 2 $dir$execDir./singleRun.sh config$run.ini $index
done < errores.txt
fi
......@@ -2,8 +2,7 @@ Los archivos de esta carpeta son para ejecutar pruebas con todas las posibles co
Se tienen tres ficheros en esta carpeta:
-- run.sh: Para ejecutar una serie de pruebas.
-- arrayRun.sh: Script para ejecutar por slurm para las pruebas. Es llamado por run.sh.
-- singleRun.sh: Para ejecutar una sola prueba con un fichero de configuración.
-- tripleRun.sh: Para ejecutar tres pruebas con un fichero de configuración. Mismos argumentos que singleRun.sh
-- singleRun.sh: Para ejecutar pruebas con un fichero de configuración.
-- create_ini.py: Crea un fichero de configuración de tipo "config.ini" a partir de los argumentos pasados
Para ejecutar las pruebas se utiliza el comando:
......@@ -22,6 +21,7 @@ tiempo-iteracion: Indica la cantidad de segundos que deben pasar para que una it
proceso-tiempo: Ligado al valor "tiempo-iteracion". Indica con cuantos procesos se llega al tiempo por iteracion indicado.
Si se elige el valor "tiempo-iteracion=2" y "proceso-tiempo=8", con 8 procesos se tardarán 2 segundos por iteración.
Este valor se utiliza para modificar el tiempo según la cantidad de procesos. Siguiendo el ejemplo, si se pasasen a ejecutar 16 procesos, el tiempo por iteración sería de 1 segundo.
Si se utiliza el valor 0 para este argumento, todos los procesos tendran un factor=1 (Independiente del numero de procesos, cada iteracion costara "tiempo-iteracion").
iteraciones-por-grupo: Cantidad de iteraciones a realizar en cada grupo para que consideren terminada su ejecución.
Actualmente todos los grupos de procesos realizan la misma cantidad de iteraciones.
......@@ -31,7 +31,12 @@ cantidad-nodos: Cantidad de nodos a utilizar en las ejecuciones. La cantidad de
--------------------------------
Para ejecutar una sola prueba con un fichero de configuración se utiliza el siguiente comando:
sbatch -N valor singleRun.sh configure.ini
sbatch -N valor singleRun.sh configure.ini indiceSalida cantidadPruebas
- valor: Número de nodos a utilizar.
- configure.ini: Nombre del fichero de configuración.
- indiceSalida: Indice del fichero de salida. Si no se quiere usar, cualquier valor entero es válido.
- cantidadPruebas: Entero que idnca cuantas veces se ejecutarán las pruebas.
Este comando solicita dos argumentos. El primero (valor) es para indicar la cantidad de nodos a usar.
El segundo es el nombre del archivo de configuración a utilizar.
......
......@@ -32,7 +32,7 @@ do
for index in 1 2 3
do
numP=$(bash $dir$codeDir/recordMachinefile.sh $config_file) # Crea el fichero hostfile
mpirun -f hostfile.o$SLURM_JOB_ID -np $numP $dir$codeDir/a.out $config_file $i
mpirun -f hostfile.o$SLURM_JOB_ID -np $numP $dir$codeDir/bench.out $config_file $i
rm hostfile.o$SLURM_JOB_ID
done
done
......
......@@ -42,6 +42,7 @@ sdr = sdr - adr
adr = str(adr)
sdr = str(sdr)
factor = 0
f = open(name, "w")
general(f, str(resizes), matrix_tam, sdr, adr, aib, time)
......@@ -50,7 +51,11 @@ for resize in range(resizes):
iters = sys.argv[9 + 3 * resize]
procs = sys.argv[9 + 3 * resize + 1]
physical_dist = sys.argv[9 + 3 * resize + 2]
factor = proc_time / float(procs)
if proc_time != 0: # Si el argumento proc_time es 0, todos los grupos tienen un factor de 1
factor = proc_time / float(procs)
else:
factor = 1
resize_section(f, str(resize), iters, procs, str(factor), physical_dist)
......
......@@ -75,7 +75,6 @@ do
done
done
aux=$(($j * 10)) #TODO Poner a 20 cuando se use ibarrier
#bash $dir$execDir./arrayRun.sh $dir$ResultsDir$name_res $aux $procs_parents $procs_sons
# LANZAR SCRIPT
echo $aux
sbatch -N $node_qty $dir$execDir./arrayRun.sh $dir$ResultsDir$name_res $aux $procs_parents $procs_sons
......
#!/bin/bash
#SBATCH --exclude=c01
dir="/home/martini/malleability_benchmark"
codeDir="/Codes"
ResultsDir="/Results"
......@@ -7,8 +9,22 @@ ResultsDir="/Results"
module load mpich-3.4.1-noucx
echo "START TEST"
numP=$(bash $dir$codeDir/recordMachinefile.sh $1)
mpirun -f hostfile.o$SLURM_JOB_ID -np $numP $dir$codeDir/a.out $1 $2
rm hostfile.o$SLURM_JOB_ID
#$1 == configFile
#$2 == outFileIndex
#$3 == cantidad de ejecuciones
if [ $# -gt 2 ]
then
qty=$3
else
qty=1
fi
for ((i=0; i<qty; i++))
do
numP=$(bash $dir$codeDir/recordMachinefile.sh $1)
mpirun -f hostfile.o$SLURM_JOB_ID -np $numP $dir$codeDir/bench.out $1 $2
rm hostfile.o$SLURM_JOB_ID
done
echo "END TEST"
#!/bin/bash
dir="/home/martini/malleability_benchmark"
codeDir="/Codes"
ResultsDir="/Results"
module load mpich-3.4.1-noucx
echo "START TEST"
for index in 1 2 3
do
numP=$(bash $dir$codeDir/recordMachinefile.sh $1)
mpirun -f hostfile.o$SLURM_JOB_ID -np $numP $dir$codeDir/a.out $1 $2
rm hostfile.o$SLURM_JOB_ID
done
echo "END TEST"
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment