Software Module System#

Centrally-installed software on Quest is managed through modules.

Because high-performance computing clusters are shared environments, modules allow software and applications to be shared to all users in the environment. This can be very beneficial when you need to ensure that you are using the same version of something like MATLAB as the other users in your lab.

Modules are 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

Quest uses the LMOD module system.

One of the most common variables in a Unix operating system is $PATH. This variable tells the system where to look for specific applications. Another common variable is $LD_LIBRARY_PATH. Similar to $PATH, this tells the system where to look for specific libraries that are used by the applications.

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 relieves the user of having to remember and type long path names and modify environment variables to use the software.

Available Modules#

Note

View a list of available software modules at Quest Software

Often, you won’t know which modules are available to you when you first connect to the system. To see all of the modules, use the command below:

$ module avail

Request a New Module#

If after viewing the available software modules on Quest you do not see the software you are looking for or if you have questions on how to install a particular software on Quest yourself, then please see our service page for information on how to request software on Quest .

Loading a Module#

To access almost every software application on Quest, you must first load the appropriate module:

$ module load <modulename>

Then you can reference software commands by name.

Module Versions#

There are multiple versions of many software programs on Quest. Modules are named with the format softwarename/version. For example, if you look at the modules available for Python, you’ll see several versions:

$ module avail matlab

----------------------------------------------- /hpc/software/Modules/3.2.9/modulefiles -----------------------------------------------
   matlab/r2014a    matlab/r2017a          matlab/r2018b        matlab/r2021b    matlab/r2023b
   matlab/r2015a    matlab/r2018a          matlab/r2019b        matlab/r2022a    matlab/r2024a
   matlab/r2016a    matlab/r2018b-rhel8    matlab/r2020b (D)    matlab/r2022b

(D) indicates which module will be loaded if you don’t specify the version (e.g. module load matlab).

Important

Defaults can change over time, however, so it is strongly recommended that you always specify the module version even if you are using the default version.

An example of loading the MATLAB module with a specific version is included below:

$ module load matlab/r2024a

Useful Module Commands#

Command

Action

module avail

Shows the available software packages

module avail <search>

Shows all modules that have <search> in the main part of the name (not in the version, which comes after the /). <search> is case sensitive. This is useful for viewing the versions available for a particular program instead of having to sort through the long list of all modules.

module -r spider '^p'

module -r spider mpi

module -r spider '2.0$'

Finds all the modules that start with “p” or “P”

Finds all modules that have “mpi” in their name including the version part of the name

Finds all modules where the name including the version part of the name end in “2.0”

module list

Shows which modules are currently loaded

module load <module_name>

Loads a software package’s path information into your local environment so your session can find the software to run it

module purge <module_name>

Takes the software package’s information out of your local environment; this is generally more reliable than module unload

module purge all

Unloads all of the module packages currently in your local environment

module display <foo>

Displays the changes that are made to the environment by loading the module <foo> without actually loading it