Sistema de módulos de entorno: lmod

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.