Cluster de Computación - IUII
Diferentes programas como aplicaciones, compiladores o librerías requieren que las correspondientes variables de entorno estén definidas para que se ejecuten correctamente. Típicas variables del entorno que definimos en un Shell de Linux son por ejemplo el PATH donde se encuentran los binarios de programa, el MANPATH que indica donde se encuentran las páginas de manuales o el LD_LIBRARY_PATH que indica caminos adicionales donde encontrar librerías dinámicas requeridas en el momento de la ejecución del programa.
Es posible de definir estas variables de forma permanente en el perfil del usuario pero eso suele crear problemas cuando queremos usar diferentes versiones de una aplicación, usar una vez el compilador gcc y en otro momento un compilador de Intel o crear varios versiones de programas con diferentes librerías MPI.
La herramienta modules permite el cambio rápido de un entorno a otro porque nos deja cargar o borrar las variables necesarios para un programa ejecutando un comando sencillo y avisa si hay conflictos entre un entorno ya definido con otro que el usuario quiere cargar.
Los comandos básicos de la herramienta son:
module avail Muestra los módulos de entornos de programas disponibles
module load Carga el entorno del programa <prog> de la versión por defecto
module load Carga el entorno del programa <prog> de la versión <vers>
module list Muestra los módulos cargados actualmente
module unload Quita el entorno del <prog>
module show Muestra el entorno que define el módulo
También es posible que un módulo cargue otros módulos para facilitar el uso y poder crear paquetes de módulos. En el enlace de abajo se pueden encontrar más detalles.
En la instalación actual encontramos los siguientes módulos. La palabra (default) indica que es la versión por defecto.
[hpuser@login ~]$ module avail
---------------------------- /opt/Modules/versions -----------------------------
3.2.6
------------------------ /opt/Modules/3.2.6/modulefiles ------------------------
dot module-cvs module-info modules null use.own
--------------------------------- /app/modules ---------------------------------
cuda/4.0(default) mkl_ilp64/12.0.0(default)
icc/12.0.0(default) mkl_lp64/12.0.0(default)
idb/12.0.0(default) mvapich-gcc/1.2.0(default)
ifort/12.0.0(default) mvapich-intel/1.2.0(default)
impi/4.0.1.007(default) mvapich2-gcc/1.6(default)
intel/12.0.0(default) mvapich2-intel/1.6(default)
itac/8.0.1.009(default) openmpi-gcc/1.4.3(default)
mkl/12.0.0(default) openmpi-intel/1.4.3(default)
Para cargar, por ejemplo, el entorno del compilado C de Intel ejecutamos
[hpuser@login ~]$ module load icc
Comprobamos que se haya cargado con:
[hpuser@login ~]$ module list
Currently Loaded Modulefiles:
1) icc/12.0.0
Ahora cargamos también el módulo mkl:
[hpuser@login ~]$ module load mkl
[hpuser@login ~]$ module list
Currently Loaded Modulefiles:
1) icc/12.0.0 2) mkl/12.0.0
Quitamos el módulo icc
[hpuser@login ~]$ module del icc
[hpuser@login ~]$ module list
Currently Loaded Modulefiles:
mkl/12.0.0
y también mkl:
[hpuser@login ~]$ module del mkl
[hpuser@login ~]$ module list
No Modulefiles Currently Loaded.
El módulo intel es un paquete de modules como podemos ver con:
[hpuser@login ~]$ module load intel
[hpuser@login ~]$ module list
Currently Loaded Modulefiles:
1) icc/12.0.0 3) idb/12.0.0 5) intel/12.0.0
2) ifort/12.0.0 4) mkl/12.0.0
Si queremos ver el entorno que define icc lo podemos ver con:
[hpuser@login ~]$ module show icc
-------------------------------------------------------------------
/app/modules/icc/12.0.0:
module-whatis loads the intel C compiler
setenv INTEL_LICENSE_FILE /opt/intel/licenses
prepend-path PATH /opt/intel/composerxe-2011.0.084/bin/intel64
prepend-path MANPATH /opt/intel/composerxe-2011.0.084/man/en_US
prepend-path NLSPATH /opt/intel/composerxe-2011.0.084/compiler/lib/intel64/locale/en_US/%N
prepend-path LD_LIBRARY_PATH /opt/intel/composerxe-2011.0.084/compiler/lib/intel64
prepend-path LIBRARY_PATH /opt/intel/composerxe-2011.0.084/compiler/lib/intel64
Modules homepage: http://modules.sourceforge.net/
Modules manual: http://modules.sourceforge.net/man/module.html

