En el cluster se puede encontrar una colección de software como son compiladores, bibliotecas matemáticas, herramientas, programas científicos, etc.
Debido a que esta colección es amplia y que un usuario no suele necesitar todo el software, se ha implantado un sistema de módulos de entorno que permite manejar el software que se carga.
El comando module establece el entorno de variables para la sesiones de usuario.
Módulos disponibles #
$ module avail
Cargar un módulo #
$ module load nombre
Mostrar módulos cargados #
$ module list
Intercambiar dos módulos #
Es útil cuando queramos cambiar de compilador. Ejemplo:
$ module swap gcc intel
Además, se cambiarán todas las bibliotecas/aplicaciones dependientes del compilador.
Dejar de usar un módulo #
$ module unload nombre
Obtener ayuda #
Los módulos contienen pequeñas guías de uso de las correspondiente aplicaciones/bibliotecas, que se pueden consultar con:
$ module help nombre
Buscar módulos #
$ module spider palabraclave
Módulos por defecto #
Hay una serie de módulos que se cargan por defecto:
- GCC/6.4.0-2.28
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 ejecución. Por ejemplo, si en el momento de enviar está cargado el módulo MPI, éste estará disponible también en el nodo de ejecución.
Sin embargo, si no están cargados y el trabajo los necesita, sería necesario añadirlo al script de descripción de SLURM:
#!/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 son temporales y se pierden al cerrar la sesión. Al inicio de cada sesión, habrá que volver a cargarlos.
Si se utiliza algún modulo normalmente puede ser preferible añadirlo al profile de la shell, por ejemplo, .bashrc.