Los módulos a través del comando module nos ayudan a cargar varios software o dependencias de forma rápida y evitando incosistencias.
En nuestro caso lo usarmos para usar/consultar software disponible de forma centralizada para todos los usuarios de HPC en este caso de Drago.
Consultamos la ayuda básica con cualquiera de los siguientes comandos
module --help
man module
Los modulos estan instalados por ramas, daremos soporte a las 2 ultimas ramas, a dia de este manual las ramas vigentes son la 0.2 y la 0.3, siendo la 0.2 la que carga por defecto.
Tambien disponemos de una rama especial para la gestión de ramas de software, desde la que se puede cambiar de una rama a otra, descargando por completo la rama actual y cargando la nueva.
module av
------------------------------------------ 🖥 ️Cambio de rama 🖥️ ------------------------------------------
rama0.2 rama0.3
------------------------------------------- ⚛⚛⚛ FOSS 0.2 ⚛⚛⚛ -------------------------------------------
APBS/3.0.0 M4/1.4.18 fosscuda/2020a
BLAST/2.11.0-Linux_x86_64 M4/1.4.19 (D) fosscuda/2020b (D)
Bison/3.3.2 Miniconda3/4.9.2 gamess/2021
Bison/3.8.2 (D) NVHPC/21.11 gcccuda/2020a
............. ............ ..........
Si queremos cambiar a la rama 0.3 seria con
module load rama0.3
Si queremos mas limpieza, podemos quitar para la sesion una de las categorias de la rama.
Para quitar el software restricted y el campus lo haremos con los siguientes comandos.
module unuse /dragofs/sw/restricted/0.2/modules/all/Core
module unuse /dragofs/sw/campus/0.2/modules/all/Core
Asi nos aseguraremos que solo usamos software libre (FOSS)
Podemos ver el software disponible que no depende de otro, o que ya tiene cargadas las dependencias necesarias con module av
module av
------------------------------------------------------------------------- ⚛⚛⚛ FOSS 0.2 ⚛⚛⚛ -------------------------------------------------------------------------
APBS/3.0.0 GCC/11.2.0 (D) M4/1.4.19 (D) cuDNN/8.0.4.30-CUDA-11.1.1 gcccuda/2020a gompic/2020a
Bison/3.8.2 (D) GCCcore/9.3.0 Miniconda3/4.9.2 flex/2.6.4 (D) gcccuda/2020b (D) gompic/2020b (D)
CUDA/11.4.1 GCCcore/10.2.0 OpenSSL/1.1 (D) foss/2020a gettext/0.20.1 ncurses/6.1
CUDAcore/11.0.2 GCCcore/10.3.0 SAGE/6.4.2 foss/2020b gettext/0.21 (D) ncurses/6.2 (D)
CUDAcore/11.1.1 (D) GCCcore/11.2.0 (D) binutils/2.34 foss/2021b (D) gompi/2020a pkg-config/0.29.2 (D)
GCC/9.3.0 Java/11.0.2 (11) binutils/2.35 fosscuda/2020a gompi/2020b zlib/1.2.11 (D)
GCC/10.2.0 Java/12.0.2 (D) binutils/2.36.1 fosscuda/2020b (D) gompi/2021a
GCC/10.3.0 Julia/1.7.2-linux-x86_64 binutils/2.37 (D) gamess/2021 gompi/2021b (D)
------------------------------------------------------------------------ ⚛⚛⚛ Campus 0.2 ⚛⚛⚛ ------------------------------------------------------------------------
gaussian/16.gaussian
---------------------------------------------------------------------- ⚛⚛⚛ Restricted 0.2 ⚛⚛⚛ ----------------------------------------------------------------------
Bison/3.0.4 GCCcore/10.3.0 binutils/2.36.1 gompi/2021b imkl/2022.0.1 (D)
Bison/3.8.2 GCCcore/11.2.0 binutils/2.37 gompic/2020b intel-compilers/2021.4.0
CUDAcore/11.0.2 M4/1.4.17 flex/2.6.4 icc/2018.3.222-GCC-7.3.0-2.30 intel-compilers/2022.0.1 (D)
CUDAcore/11.1.1 M4/1.4.18 foss/2020b iccifort/2018.3.222-GCC-7.3.0-2.30 intel/2020b
GCC/9.3.0 M4/1.4.19 foss/2021b iccifort/2020.4.304 (D) intel/2021b
GCC/10.2.0 MaterialsStudio/22.1.MaterialsStudio fosscuda/2020b ifort/2018.3.222-GCC-7.3.0-2.30 intel/2022.00 (D)
GCC/11.2.0 OpenSSL/1.1 gcccuda/2020a iimpi/2020b ncurses/6.2
GCCcore/7.3.0 binutils/2.30 gcccuda/2020b iimpi/2021b pkg-config/0.29.2
GCCcore/9.3.0 binutils/2.34 gettext/0.21 iimpi/2022.00 (D) zlib/1.2.11
GCCcore/10.2.0 binutils/2.35 gompi/2020b imkl/2021.4.0
Where:
Aliases: Aliases exist: foo/1.2.3 (1.2) means that "module load foo/1.2" will load foo/1.2.3
D: Default Module
Use "module spider" to find all possible modules and extensions.
Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys".
Tambien podemos mostrar todo el software existente con el comando
module spider
Para buscar un software concreto lo hariamos siguiendo el comando con el software, en este ejemplo el software WPS
module spider WPS
Que ademas nos indica sus dependencias
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
WPS: WPS/4.3.1-dmpar
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Description:
WRF Preprocessing System (WPS) for WRF. The Weather Research and Forecasting (WRF) Model is a next-generation mesoscale numerical weather prediction system designed
to serve both operational forecasting and atmospheric research needs.
You will need to load all module(s) on any one of the lines below before the "WPS/4.3.1-dmpar" module is available to load.
GCC/11.2.0 OpenMPI/4.1.1
Help:
Description
===========
WRF Preprocessing System (WPS) for WRF. The Weather Research and Forecasting (WRF) Model is
a next-generation mesoscale numerical weather prediction system designed to serve both operational
forecasting and atmospheric research needs.
More information
================
- Homepage: http://www.wrf-model.org
module spider > modules.txt 2>&1
Este comando genera un archivo modules.txt con todos los módulos disponibles.
Posteriormente, con module spider nombre_modulo es posible explorar qué otros módulos son necesarios cargar para utilizar el deseado.
Aportación de Unai Merino Herrán
Para cargar un modulo simplemente
module load "nombre del modulo"
En el caso de que dependa de otro deberemos cargar tambien las dependencias.
Siguiendo el ejemplo de WPS se cargaria asi:
module load GCC/11.2.0
module load OpenMPI/4.1.1
module load WPS
Para comprobar los módulos cargados hacemos:
module list
Para ver la informacion de un modulo ejecutamos (siguiendo con el WPS)
module show WPS
Para descargar los modulos y dejarlo por defecto ejecutamos
module purge
En ocasiones nos interesa cargar una version diferente de algun software que se ha cargado como dependencia de otro, por ejemplo el GCC. Podemos cambiar la versión de un modulo por otra con module swap.
module swap GCC/10.3.0
Esto descargaria la version de GCC que tengamos cargada y cargara la version 10.3.0