# 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 encolado 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.