# Paralelización de simulación de permeabilidad en Cluster HPC (SLURM) ## ANTES DEL PRIMER USO Seguir los siguientes pasos del tutorial: 1. Clonar este repositorio 2. Entrar al entorno NIX 3. Generar entorno Python para la simulación ## USO HABITUAL: Habiendo completado las instrucciones previas al primer uso: 1. Entrar al entorno NIX 2. Activar el entorno python 3. Ejecutar las siimulaciones de interés ## 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 ``` ## Entrar al entorno NIX ``` nix-shell ``` Para más info ver el archivo `shell.nix`. ## Generar entorno Python para la simulación Los siguentes requisitos ya vienen provistos por `nix-shell`: * `python3` * `python3-pip` * `gfortran` * `gcc` * `build-essentials` ``` make install ``` El instalador genera un entorno virtual en `venv`. ## Activar el entorno python Para activar el entorno virtual (LUEGO DE HABER ACTIVADO EL ENTORNO NIX): ``` source venv/bin/activate ``` Para desactivarlo `deactivate`. ## Correr simulaciones de interés 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.