diff --git a/Makefile b/Makefile index 56c48e0..996b3fb 100644 --- a/Makefile +++ b/Makefile @@ -5,9 +5,19 @@ install: run: bash ./run_simulation.sh -test: binaries + +test: cd tests/integration && python3 -m unittest test.py -perf: binaries +perf: cd tests/performance && python3 generation.py cd tests/performance && python3 connectivity.py + +run-slurm: + sbatch run-simulation-slurm + +test-slurm: + sbatch run-test-slurm + +perf-slurm: + sbatch run-perf-slurm diff --git a/README-LOCAL.md b/README-LOCAL.md new file mode 100644 index 0000000..6076870 --- /dev/null +++ b/README-LOCAL.md @@ -0,0 +1,73 @@ +# Paralelización de simulación de permeabilidad + +## Clonar este repositorio + +``` +# Por HTTPS +git clone https://git.csc.gob.ar/ssantisi/simulacion-permeabilidad.git +# Por SSH +git clone git@git.csc.gob.ar:ssantisi/simulacion-permeabilidad.git +``` + +Entrar a la carpeta del proyecto + +``` +cd simulacion-permeabilidad +``` + +## Instalación de las librerías (Python 3) + +Como requisitos previos a la instalación hace falta tener: + + * `python3` + * `python3-pip` + * `gfortran` + * `gcc` + * `build-essentials` + +``` +make install +``` + +El instalador genera un entorno virtual en `venv`. + +Para activar el entorno virtual: + +``` +source venv/bin/activate +``` + +Para desactivarlo `deactivate`. + + +## Correr la simulación + +``` +make run +``` + +## Correr los casos de prueba + +``` +make test +``` + +## Correr las pruebas de performance + +``` +make perf +``` + +## Branches de github + +Explicacion sobre las branches que quedaron en github para entender cuales usar: + +- `main` -> solo la migracion a python3 sin ninguna cambio sobre el modulo de FFTMA (sin mejoras) + +- `improvement_NOMBRE` -> branch con el `NOMBRE` de la mejora que esta explicado que hace cada una en el analisis + +donde la primera es `remove_generate_array` y la ultima es `multiple_buffers` + +- `improvement_NOMBRE-logs` -> misma branch de mejora pero agregando informacion de logs que se utilizo para realizar los analisis y no deberian utilizarse porque degradan la performance considerablemente. + +- `migrate_fortran` -> una branch donde se trato de migrar de fortran a C pero quedo inconcluso el trabajo y no se continuo. diff --git a/README-TUPAC.md b/README-TUPAC.md new file mode 100644 index 0000000..ffb4f24 --- /dev/null +++ b/README-TUPAC.md @@ -0,0 +1,109 @@ +# Paralelización de simulación de permeabilidad + +## Clonar este repositorio + +``` +# Por HTTPS +git clone https://git.csc.gob.ar/ssantisi/simulacion-permeabilidad.git +# Por SSH +git clone git@git.csc.gob.ar:ssantisi/simulacion-permeabilidad.git +``` + +Entrar a la carpeta del proyecto + +``` +cd simulacion-permeabilidad +``` + +## Habilitar NIX e ingresar a entorno + +``` +enable_nix +nix-shell +``` + +Para más info ver el archivo `shell.nix`. + +## Instalación de las librerías (Python 3) + +Los siguentes requisitos vienen provistos por `nix-shell`: + + * `python3` + * `python3-pip` + * `gfortran` + * `gcc` + * `build-essentials` + +``` +make install +``` + +El instalador genera un entorno virtual en `venv`. + +Para activar el entorno virtual: + +``` +source venv/bin/activate +``` + +Para desactivarlo `deactivate`. + +## Correr simulación/tests/performance en cluster + +Los siguientes comandos encolan trabajos en el cluster, que correrán tan pronto como les toque su lugar en la cola de trabajos. +Se puede monitorear el estado de el/los trabajos encolados con `squeue`. +Se puede cancelar un trabajo eoncolado con `scancel numero_de_trabajo` + +## Correr la simulación (en SLURM) + +Por defecto: 2 nodos, 32 tasks por nodo. +Para cambiarlo editar archivo `run-simulation-slurm`. + +``` +make run-slurm +``` + +Una vez en ejecución, la salida se escribe a los siguientes archivos: +* `simulation-nro-de-trabajo.out` la salida del trabajo. +* `simulation-nro-de-trabajo.err` los errores del proceso + + +## Correr los casos de prueba (en SLURM) + +Por defecto: 1 nodo, 64 cpus por nodo. +Para cambiarlo editar archivo `run-tests-slurm`. + +``` +make test-slurm +``` + +Una vez en ejecución, la salida se escribe a los siguientes archivos: +* `test-nro-de-trabajo.out` la salida del trabajo. +* `test-nro-de-trabajo.err` los errores del proceso + +## Correr las pruebas de performance (en SLURM) + +Por defecto: 1 nodo, 64 cpus por nodo. +Para cambiarlo editar archivo `run-perf-slurm`. + +``` +make perf-slurm +``` + +Una vez en ejecución, la salida se escribe a los siguientes archivos: +* `perf-nro-de-trabajo.out` la salida del trabajo. +* `perf-nro-de-trabajo.err` los errores del proceso + +## Branches de github + +Explicacion sobre las branches que quedaron en github para entender cuales usar: + +- `main` -> solo la migracion a python3 sin ninguna cambio sobre el modulo de FFTMA (sin mejoras) + +- `improvement_NOMBRE` -> branch con el `NOMBRE` de la mejora que esta explicado que hace cada una en el analisis + +donde la primera es `remove_generate_array` y la ultima es `multiple_buffers` + +- `improvement_NOMBRE-logs` -> misma branch de mejora pero agregando informacion de logs que se utilizo para realizar los analisis y no deberian utilizarse porque degradan la performance considerablemente. + +- `migrate_fortran` -> una branch donde se trato de migrar de fortran a C pero quedo inconcluso el trabajo y no se continuo. diff --git a/README.md b/README.md index 3b9bac5..fa97ea4 100644 --- a/README.md +++ b/README.md @@ -1,84 +1,9 @@ # Paralelización de simulación de permeabilidad -## Clonar este repositorio +## Corrida en PC de escritorio/laptop -``` -# Por HTTPS -git clone https://git.csc.gob.ar/ssantisi/simulacion-permeabilidad.git -# Por SSH -git clone git@git.csc.gob.ar:ssantisi/simulacion-permeabilidad.git -``` +Ver archivo **README-LOCAL.md**. -Entrar a la carpeta del proyecto +## Corrida en cluster TUPAC -``` -cd simulacion-permeabilidad -``` - -## Habilitar NIX e ingresar a entorno - -``` -enable_nix -nix-shell -``` - -Para más info ver el archivo `shell.nix`. - -## Instalación de las librerías (Python 3) - -Como requisitos previos a la instalación hace falta tener: - -**(Si se usa `nix-shell` ya están provistas estas dependencias)** - - * `python3` - * `python3-pip` - * `gfortran` - * `gcc` - * `build-essentials` - -``` -make install -``` - -El instalador genera un entorno virtual en `venv`. - -Para activar el entorno virtual: - -``` -source venv/bin/activate -``` - -Para desactivarlo `deactivate`. - - -## Correr la simulación - -``` -make run -``` - -## Correr los casos de prueba - -``` -make test -``` - -## Correr las pruebas de performance - -``` -make perf -``` - -## Branches de github - -Explicacion sobre las branches que quedaron en github para entender cuales usar: - -- `main` -> solo la migracion a python3 sin ninguna cambio sobre el modulo de FFTMA (sin mejoras) - -- `improvement_NOMBRE` -> branch con el `NOMBRE` de la mejora que esta explicado que hace cada una en el analisis - -donde la primera es `remove_generate_array` y la ultima es `multiple_buffers` - -- `improvement_NOMBRE-logs` -> misma branch de mejora pero agregando informacion de logs que se utilizo para realizar los analisis y no deberian utilizarse porque degradan la performance considerablemente. - -- `migrate_fortran` -> una branch donde se trato de migrar de fortran a C pero quedo inconcluso el trabajo y no se continuo. +Ver archivo **README-TUPAC.md**. diff --git a/run-perf-slurm b/run-perf-slurm new file mode 100644 index 0000000..966881f --- /dev/null +++ b/run-perf-slurm @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +#SBATCH -o perf-$j.out +#SBATCH -e perf-%j.err +#SBATCH -N 1 +#SBATCH --ntasks-per-node 32 +#SBATCH --partition=free-rider + +hostname +date + +source /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh + +# vuelca lista de nodos asignados a un archivo "nodefile" +nodelist=$(scontrol show hostname $SLURM_NODELIST) +printf "%s\n" "${nodelist[@]}" > nodefile + +source venv/bin/activate + +# ejecuta mpirun con el nodefile creado +make perf + +rm nodefile diff --git a/run-simulation-slurm b/run-simulation-slurm new file mode 100644 index 0000000..33579d4 --- /dev/null +++ b/run-simulation-slurm @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +#SBATCH -o simulation-%j.out +#SBATCH -e simulation-%j.err +#SBATCH -N 2 +#SBATCH --ntasks-per-node 32 +#SBATCH --partition=free-rider + +hostname +date + +source /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh + +# vuelca lista de nodos asignados a un archivo "nodefile" +nodelist=$(scontrol show hostname $SLURM_NODELIST) +printf "%s\n" "${nodelist[@]}" > nodefile + +source venv/bin/activate + +# ejecuta mpirun con el nodefile creado +mpirun --hostfile nodefile python3 ./mpirunner.py + +rm nodefile diff --git a/run-test-slurm b/run-test-slurm new file mode 100644 index 0000000..8869c4b --- /dev/null +++ b/run-test-slurm @@ -0,0 +1,23 @@ +#!/usr/bin/env bash +#SBATCH -o test-%j.out +#SBATCH -e test-%j.err +#SBATCH -N 1 +#SBATCH --ntasks-per-node 32 +#SBATCH --partition=free-rider + +hostname +date + +source /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh + +# vuelca lista de nodos asignados a un archivo "nodefile" +nodelist=$(scontrol show hostname $SLURM_NODELIST) +printf "%s\n" "${nodelist[@]}" > nodefile + +source venv/bin/activate + +# ejecuta mpirun con el nodefile creado +#mpirun --hostfile nodefile python3 ./mpirunner.py +make test + +rm nodefile