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 | 
|---|---|
| 
 | Shows the available software packages | 
| 
 | Shows all modules that have  | 
| 
 | Finds all the modules that start with “p” or “P” | 
| 
 | Shows which modules are currently loaded | 
| 
 | Loads a software package’s path information into your local environment so your session can find the software to run it | 
| 
 | Takes the software package’s information out of your local environment; this is generally more reliable than  | 
| 
 | Unloads all of the module packages currently in your local environment | 
| 
 | Displays the changes that are made to the environment by loading the module  | 
