High-Performance Computing at the NIH

RSS Feed
Environment Modules

Helix and Biowulf now use environment modules to dynamically set up environments for different applications. Users can type commands like:
module load ThisApp
module unload ThisApp

to set up the environment for a particular application. The 'module load' command will set PATH, LD_LIBRARY_PATH and other environment variables as necessary. Any previous environment setups in your .bashrc or .cshrc files will continue to work, but modules are generally easier to use.

The Helix and Biowulf application pages have been updated to describe the modules command for each application. This page contains some general information about modules.


What modules are available?

The command module avail will show all available modules.

[user@helix]$ module avail

---------- /usr/local/Modules/3.2.9/modulefiles -----------
afni/18Oct2012(default) cuda/3.1                modules                 namd/2.9-ipath
afni/18Oct2012-openmp   cuda/4.0.17             mpich2-x86_64           null
afni/21Dec2011          dot                     namd/2.7+plumed1.3      perl/5.12.1
amber/10-gige           fftw3                   namd/2.7-gige           perl/5.12.1-threads
amber/10-ipath          gromacs/4.0.4           namd/2.7-ib             perl/5.8.8
amber/11                gromacs/4.0.7           namd/2.7-ipath          perl/5.8.9
amber/11-gpu            gromacs/4.5.1           namd/2.8+plumed1.3      python/2.5.1
amber/12(default)       gromacs/4.5.3           namd/2.8-gige           python/2.6.4
blast                   gromacs/4.5.5(default)  namd/2.8-gpu            python/2.7.1
chromopainter           gromacs/4.6-dev         namd/2.8-ib             qiime
cmake/2.8.0             hmmer                   namd/2.8-ipath          use.own
cuda/2.3                module-cvs              namd/2.9-gige           velvet/1.2.03
cuda/3.0                module-info             namd/2.9-ib             velvet/1.2.07
[...etc...]

To see the versions available for a particular application, use module avail appname. e.g.

[user@helix]$ module avail gromacs

---------- /usr/local/Modules/3.2.9/modulefiles -----------
gromacs/4.0.4          gromacs/4.5.1          gromacs/4.5.5(default)
gromacs/4.0.7          gromacs/4.5.3          gromacs/4.6-dev

Load a Module

To load a module, use the command module load appname. The default version will get loaded. If you want a particular version, use module load appname/version e.g

[user@helix]$ module list
No Modulefiles Currently Loaded.

[user@helix]$ module load gromacs

[user@helix]$ module list
Currently Loaded Modulefiles:
  1) gromacs/4.5.5
[user@helix]$ module load gromacs/4.5.3

[user@helix]$ module list
Currently Loaded Modulefiles:
  1) gromacs/4.5.3   

Multiple modules can be loaded in a single command. e.g.

[user@helix]$ module load plinkseq macs bowtie

[user@helix]$ module list
Currently Loaded Modulefiles:
  1) plinkseq/0.08    2) macs/2.0.10      3) bowtie/2-2.0.2

Unload a Module

To unload a module, use the command module unload Appname. e.g.

[user@helix]$ module list
Currently Loaded Modulefiles:
  1) gromacs/4.5.3
[user@helix]$ module unload gromacs/4.5.3
See what modules have been loaded
The command module list will show what modules have been loaded.
[user@helix]$ module list
Currently Loaded Modulefiles:
  1) qiime        2) perl/5.8.9

Switch to a different version of an application
The command module switch appname appname/version will switch from one version of an application to another. .
[user@helix]$ module list
Currently Loaded Modulefiles:
  1) perl/5.8.9
[user@helix]$ module switch perl perl/5.12.1
[user@helix]$ module list
Currently Loaded Modulefiles:
  1) perl/5.12.1
Examine a modulefile

If you want to see what changes a module will make to your environment without loading it, use the 'module display' command. e.g.

[user@helix]$ module display blast
-------------------------------------------------------------------
/usr/local/Modules/3.2.9/modulefiles/blast:

module-whatis    Sets up NCBI Blast 
prepend-path     PATH /usr/local/blast/ncbi/bin 
prepend-path     PATH /usr/local/blast/bin 
-------------------------------------------------------------------

If you prefer to set paths directly instead of using modules, you can use the information from 'module display' to do so.

Set up personal modulefiles

Create a directory called privatemodules in your home directory. Then type the command: module load use.own and any personal module files in this directory will become available for you to list, load or unload. You can make copies of the system modulefiles in /usr/local/Modules/default/modulefiles to use as templates.

[user@helix ~]$ module load use.own

[user@helix ~]$ module avail

---------- /home/user/privatemodules ----------
hmmer/2.3

---------- /usr/local/Modules/3.2.9/modulefiles -----------
afni/18Oct2012(default) cuda/3.1                modules                 namd/2.9-ipath
afni/18Oct2012-openmp   cuda/4.0.17             mpich2-x86_64           null
afni/21Dec2011          dot                     namd/2.7+plumed1.3      perl/5.12.1
[...etc...]

As you see above, after loading the 'use.own' module, your private modules are now displayed. If a personal module has the same name as a system module, the personal module will have priority.

Documentation

Modulefile commands -- what you may need if you write your own modules.