README.md 4.79 KB
Newer Older
1
2
3
Los archivos de esta carpeta son para ejecutar pruebas con todas las posibles configuraciones.
Se tienen tres ficheros en esta carpeta:
-- run.sh: Para ejecutar una serie de pruebas.
4
-- arrayRun.sh: Script para ejecutar por slurm las pruebas. Es llamado por run.sh.
5
-- singleRun.sh: Para ejecutar pruebas con un fichero de configuración.
6
-- CheckRun.sh: Para comprobar que las ejecuciones realizadas por run.sh son correctas, y en caso de que algunas fallen, relanzarlas.
7
8
-- create_ini.py: Crea un fichero de configuración de tipo "config.ini" a partir de los argumentos pasados

9
10
11
12
13
14
-- runSpawn.sh: Para ejecutar una serie de pruebas dedicadas a la creacion de procesos.
-- arraySpawnRun.sh: Script para ejecutar por slurm las pruebas. Es llamado por runSpawn.sh

Para que la mayoria de estos scripts funcionen correctamente es necesario compilar el código
en la carpeta "Codes". Ejecutar dentro de esa carpeta lo siguiente: "./compila -e"

15
--------------------------------
16
17
18
19
20
21
22
23
24
Para ejecutar las pruebas se utiliza el comando:
    bash run.sh grupos-hijos tamaño-matriz cantidad-datos-sincronos tiempo-iteracion proceso-tiempo iteraciones-por-grupo cantidad-nodos
Este script crea subcarpetas en "Results" donde almacena los resultados y los ficheros de configuración que crea. 

grupos-hijos: Es la cantidad de grupos hijos de procesos a ejecutar. Por tanto, el valor 1 indicaría el grupo de procesos padres y un grupo de procesos hijos.
        Actualmente solo funciona con el valor |1|

tamaño-matriz: Cantidad de filas en la matriz rectangular. Esta matriz se utiliza para realizar el computo de la aplicación.

25
26
tamaño-comunicacion: Numero de bytes a comunicar en la aplicacion cuando se realiza computo.

27
28
29
30
31
32
33
cantidad-datos-sincronos: Indica la cantidad de bytes que se tienen que transmitir desde un grupo de procesos a otro en una redimensión

tiempo-iteracion: Indica la cantidad de segundos que deben pasar para que una iteración se considere terminada.

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.
34
		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").
35
36
37
38

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.

39
40
primera-iter: Indica si el primer grupo de procesos sigue el valor en "iteraciones-por-grupo" (0), o realiza el numero indicado en este argumento antes de realizar la redistribucion (>=1).

41
42
cantidad-nodos: Cantidad de nodos a utilizar en las ejecuciones. La cantidad de nodos también influye en la cantidad de procesos por grupo, donde nunca habrá más procesos en un grupo 
                que núcleos entre todos los nodos. Si se elige el valor 2 y habiendo 20 núcleos por nodo, no se realizarán pruebas con más de 40 procesos por grupo. 
43
44
45

EJEMPLO:
  bash run.sh 1 100000 10000000 1000000000 2 2 10 1 2
46
47
48
                
--------------------------------
Para ejecutar una sola prueba con un fichero de configuración se utiliza el siguiente comando:
49
50
51
52
53
54
     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.
55
56
57
58

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.
En la carpeta Codes/ se tiene un archivo de configuración de ejemplo llamado "test.ini".
59
60
61
62
63
64
65
66
67
68
69
70

--------------------------------
Para comprobar que las ejecuciones realizadas por run.sh son correctas y en caso de errores, arreglarlos si es posible
o indicarlo en caso de que no lo sea.
Su ejecucion se basa en el siguiente comando:
     bash CheckRun.sh directorio cantidadTipos cantidadGrupos

     - directorio: Nombre de la carpeta que se quiere revisar
     - cantidadTipos: Numero de configuraciones diferentes. Dentro del directorio a revisar, es el numero de subdirectorios
     - cantidadGrupos: Numero de grupos de procesos en cada ejecucion.

Actualmente, este comando no funciona si entre las ejecuciones del directorio, algunas tienen cantidades diferentes de grupos de procesos