Modules

From UMIACS
Revision as of 02:11, 12 May 2014 by Jlent (talk | contribs)
Jump to navigation Jump to search

GNU Modules

Many large Institutions use the concept of Modules to load software into users environment. It provides a way to add and later if needed remove environmental variables that provide access to UMIACS large set of software we offer on our Red Hat Enterprise Linux (RedHat) platform. This works by customizing your shell environment, this is done automatically for the two major shell families bash/sh (default shell) and tcsh/csh. If you use a alternate shell please look to source the appropriate script for your shell in the following:

  • RHEL: /usr/share/Modules/init
  • Ubuntu: /usr/share/modules/init

Initially your module environment is empty though included in your ModulePath is local operating system specific modules, locally built software modules and binary software modules (Matlab, Intel Compiler, etc...).

Available Software

To see if a piece of software is available you use the module avail command. This can be given a trailing prefix on the command line to search a subset of the available software.

[derek@supernova ~]$ module avail matlab

---------------------------------------- /opt/common/.modulefiles -----------------------------------------
matlab/2007b matlab/2008b matlab/2010a matlab/2011a matlab/2012a
matlab/2008a matlab/2009b matlab/2010b matlab/2011b matlab/2012b
[derek@supernova ~]$ module avail gcc

-------------------------------------- /opt/local/stow/.modulefiles ---------------------------------------
gcc/4.6.0          gcc/4.7.2(default) gcc/boost/1.53.0

There may be a (default) module otherwise the most recent version of software is loaded when specified.

Adding Modules into your Environment

You can simply add a module into your environment by using the module add <module> command.

[derek@supernova ~]$ module add matlab

You can also specify a specific version of the software when we have multiple ones available.

[derek@supernova ~]$ module add cuda/5.0.35

Removing Modules in your Environment

If you want to remove a module because it conflicts or you want to clean up your environment you can by using the module rm <module> command.


Using Modules in Scripts

To use modules within a shell script or interpreted language you will need to load a file from /usr/share/Modules/init into your program.

Bash

. /usr/share/Modules/init/bash
module add gcc

Tcsh

source /usr/share/Modules/init/tcsh
module add gcc

Modules in Non-Interactive Shell Sessions

In non-interactive shell sessions (non-login shells), the Modules configuration environment will not automatically load. If you will need the use of Modules in non-interactive Torque jobs or other similar sessions, you will need to include the following in your shell init scripts:

Bash

. /usr/share/Modules/init/bash
. /etc/profile.d/ummodules.sh

Tcsh

source /usr/share/Modules/init/tcsh
source /etc/profile.d/ummodules.csh

Additional Help

You can type module with no arguments for a full list of commands or man module for further information.

Online Resources