En PROTEUS hay disponibles numerosos paquetes de software. Sin embargo, este software no está en el PATH cuando hacemos login. Está instalado pero tenemos que «cargarlo» antes de poder usarlo.
La gestión de grandes instalaciones globales de software presenta los siguientes principales retos:
- la incompatibilidad de software
- la convivencia de distintas versiones
- la gestión de las dependencias
Una de las soluciones para este problema es los Environment modules. Un módulo es una descripción auto-contenida de un paquete software, es decir, incluye toda la configuración que se necesita para ejecutar un paquete de software y, en caso necesario, las dependencias de otros paquetes.
En PROTEUS utilizamos como environment module Lmod que proporciona el comando module para interaccionar con los módulos.
Comando | Función |
---|---|
module avail |
Muestra los módulos (software) disponibles |
module avail KEYWORD |
Muestra los módulos que su nombre coincide con ese KEYWORD |
module spider KEYWORD |
Muestra los módulos que su nombre o descripción coincidan con ese KEYWORD |
module load APPLICATION |
Carga un programa específico |
module list |
Muestra los módulos cargados |
module swap CURRENT_MODULE DESIRED_MODULE |
Intercambiar un módulo cargado por otro |
module unload APPLICATION |
Elimina un módulo |
module purge |
Elimina todos los módulos |
Módulos por defecto
Para garantizar el correcto funcionamiento, es posible que algunos módulos se carguen por defecto. No debes eliminarlos porque podría afectar a la ejecución de los trabajos.
Módulos y Slurm
Cuando se lanza un programa en Slurm, se copian todas las variables de entorno que se tengan cargados en el momento del envío al nodo de computación. Por ejemplo, si en el momento de enviar está cargado el módulo MPI, éste estará disponible también en el nodo de computación.
También se pueden cargar a través del fichero de descripción de trabajo:
#!/bin/sh
#SBATCH -N 2 #(solicita dos nodos)
#SBATCH -n 2 #(dos tareas en total)
#SBATCH -p short #(solicita la partición específica)
#SBATCH -t 00:00:30 #(30 sec ejecución)
module load intel
srun programa
Sesiones
Las modificaciones hechas a las variables de entorno al usar module no son permanentes y se pierden al cerrar la sesión. Al inicio de cada sesión, habrá que volver a cargarlos. Si utilizas algún modulo de forma frecuente, puede ser preferible añadirlo al profile de la shell, por ejemplo, a tu .bashrc.