Modules#

What are modules?#

  • A tool that simplify shell initialization and lets users easily modify their environment during the session with modulefiles

  • Each modulefile contains the information needed to configure the shell for an application. (PATH, LD_LIBRARY_PATH, CPATH, etc.)

  • Modules are useful in managing different versions of applications.

  • Modules can also be bundled into metamodules that will load an entire set of different applications.

How to use modules?#

Module Cheat Sheet

module av

module av <software>

module list

module load <software>

module unload <software>

module swap <loaded_software> <new_software>

module purge

To check available modules installed on the cluster:

[tutln01@login-prod-01 ~]$ module av

Upon login, environment variable PATH is set for the system to search executables along these paths:

[tutln01@login-prod-01 ~]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/cluster/home/tutln01/bin:/cluster/home/tutln01/.local/bin

For example, I would like to use gcc compiler, to check what versions of gcc compiler is available, load the version I would like to use, and use it:

[tutln01@login-prod-01 ~]$ module av gcc

----------------------------------------------------------- /opt/shared/Modules/modulefiles-rhel6 ------------------------------------------------------------
gcc/4.7.0 gcc/4.9.2 gcc/5.3.0 gcc/7.3.0

-------------------------------------------------------------- /cluster/tufts/hpc/tools/module ---------------------------------------------------------------
gcc/8.4.0 gcc/9.3.0 gcc/11.2.0

Use module list to check loaded modules in current environment:

[tutln01@login-prod-01 ~]$ module load gcc/7.3.0
[tutln01@login-prod-01 ~]$ module list
Currently Loaded Modulefiles:
  1) use.own     2) gcc/7.3.0
[tutln01@login-prod-01 ~]$ which gcc
/opt/shared/gcc/7.3.0/bin/gcc
[tutln01@login-prod-01 ~]$ echo $PATH
/opt/shared/gcc/7.3.0/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/cluster/home/tutln01/bin:/cluster/home/tutln01/.local/bin
[tutln01@login-prod-01 ~]$ gcc --version
gcc (GCC) 7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

swap a module for another (doesn’t have to be the same software):

[tutln01@login-prod-01 ~]$ module swap gcc/7.3.0 gcc/9.3.0 
[tutln01@login-prod-01 ~]$ module list
Currently Loaded Modulefiles:
  1) use.own     2) gcc/9.3.0

unload loaded modules:

[tutln01@login-prod-01 ~]$ module unload gcc
[tutln01@login-prod-01 ~]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/cluster/home/tutln01/bin:/cluster/home/tutln01/.local/bin

unload ALL of the loaded modules:

[tutln01@login-prod-01 ~]$ module purge

Install Software/Packages#

  • R (R command line recommanded), packages need to be reinstalled for each version of R

    • R/4.0.0

      • HPC R repo /cluster/tufts/hpc/tools/R/4.0.0

    • R/4.1.1

      • HPC R repo /cluster/tufts/hpc/tools/R/4.1

    • R/4.2.0

      • HPC R repo /cluster/tufts/hpc/tools/R/4.2.0

    • R/4.3.0

      • HPC R repo /cluster/tufts/hpc/tools/R/4.3.0

  • Python (Conda env recommanded)

    • anaconda/3 (older version, source activate)

    • anaconda/2021.05, anaconda/2021.11, anaconda/2023.07 (newer version, source activate)

    • Use the same version of conda on one conda env every time

  • Other software compiled from source

    • gcc

    • cmake

    • … any dependencies, load if available, install if not. Some environment variables may need to be set manually.

    • Follow instructions (read it through first)

    • Use “–prefix=” to install in non-standard locations

    • Modify the environment variables !!! (such as PATH, LD_LIBRARY_PATH, CPATH, .etc)

    • You can make a private module for your locally installed software. Here is HOW

    • OR you can submit a request to tts-research@tufts.edu for the software to be installed globally on the cluster.