View Source


h3. Managing the Software Environment

The software environment used on LinkSCEEM systems can be managed via Modules. Modules facilitate the task of updating applications and provide a user-controllable mechanism for accessing software revisions.

In this lesson, you will learn how to manage your software environment using Modules. You will learn how to load a module and learn some useful module commands.

h5. Modules

The Modules package provides for the dynamic modification of a user's software environment via modulefiles. Modules can be used to manage:
* Multiple versions of applications, tools and libraries
* Software where complex changes to the environment are necessary
* Software where name conflicts with other software would cause problems

At login, a basic environment for the default compilers, tools, and libraries can be set by several modules commands (in the csh.cshrc, csh.login, and profile files). Modulefiles are the basic building blocks of the Modules utility. A system manager creates a modulefile that can be invoked in any script, or command line, (from any shell) as a module command to modify a user's environment (new application, tools, and utility environments).

Typically each module (modulefile) extends the PATH, MANPATH, INCLUDE, and LD_LIBRARY_PATH variables for local applications and tools; they may also be used to create variables, an alias, and functions to facilitate using special hardware. Modules has a rich language that enables the environment architect to track and react to module dependencies and to create help and instructional information (within modulefile files).

Loading a module for a particular piece of software often adds the path to the executable to $PATH, the path to the library to $LD_LIBRARY_PATH, and so on. Loading a module, then, relieves the user of having to remember or look up and type long path names.

To list all available modules on a LinkSCEEM resource, use the _module avail_ command:

module avail

--------------------------------------------------------- /gpfs/apps/Modules/versions ----------------------------------------------------------

----------------------------------------------------- /gpfs/apps/Modules/3.2.9/modulefiles -----------------------------------------------------
dot experimental/1.0 modules null use.own

--------------------------------------------------- /gpfs/apps/Modules/modulefiles/compilers ---------------------------------------------------
cmake/2.8.8 gcc/4.2.4(default) gcc/4.6.2 intel/12.1.0 lf64/8.1 pgi/12.3

------------------------------------------------------ /gpfs/apps/Modules/modulefiles/mpi ------------------------------------------------------
intelmpi/ mvapich2/1.8-gcc-cuda openmpi/1.4.3-gcc openmpi/1.4.3-pgi openmpi/1.4.5-intel
mvapich2/1.8-gcc mvapich2/1.8-intel openmpi/1.4.3-intel openmpi/1.4.5-gcc(default)

----------------------------------------------------- /gpfs/apps/Modules/modulefiles/libs ------------------------------------------------------
Super_LU/4.3-gcc42 gmp/5.0.5-gcc42 netcdf/4.1.3-gcc(default)
arpack/96-gcc42 gotoblas2/1.13-mt-gcc42 netcdf/4.1.3-gcc-lf
atlas/3.8.4-gcc42 gotoblas2/1.13-st-gcc42(default) netcdf/4.1.3-intel
cuda/4.1 gsl/1.15-gcc scalapack/2.0.2-atlas-gcc42
fftw/2.1.5-gcc-openmpi lapack/3.4.0-gcc42 scalapack/2.0.2-goto2-gcc42(default)
fftw/2.1.5-intel-intelmpi mumps/4.10.0-par(default) sprng/2.0-gcc42
fftw/3.3-gcc-openmpi mumps/4.10.0-seq udunits2/2.1.24-gcc

----------------------------------------------------- /gpfs/apps/Modules/modulefiles/apps ------------------------------------------------------
hwloc/1.4.1 metis/5.0.2-32 namd/2.9-ibverbs parmetis/4.0.2-64(default)
metis/4.0.3-gcc42(default) metis/5.0.2-64 parmetis/4.0.2-32 torque/3.0.3

The _module whatis_ command will display a brief description of a specific module:

$ module whatis openmpi
openmpi : Loads openmpi MPI compiled with gnu compilers

h5. Useful Module Commands

Some useful module commands include:
* _module avail_ # lists available modules
* _module list_ # lists currently loaded modules
* _module help_ # help on a specific module
* _module whatis_ # brief description of a specific module
* _module display_ # displays the changes that loading a specific module makes to the environment without actually loading it.
* _module load_ # loads a specific module
* _module unload_ # unloads a specific module and removes all changes that it made in the environment.
* _module clear_ # unloads all modules (Note: this is a temporary clear; when you login again, all your default modules will be loaded.)

Back to [Getting Started on LinkSCEEM HPC resources]
Next to [Compiling Jobs]