Overview
Nearly all applications installed on the SCC are installed as modules. To find and load an application, one needs to use module commands. This section covers the basic module commands needed to find and load an application installed on the SCC.
For complete information on modules, see the module page. Information about available software packages and supported programming languages available is found in our software pages.
Why modules?
The use of modules on the SCC provides the following critical functions:
- When loading a module, it automatically sets the appropriate environment variables required by the application to run properly.
- It will inform you if additional dependency modules need to be loaded.
- Prevents loading of modules that are known to be conflicts and can cause instability or unexpected behavior.
Basic Module Commands
Below are basic sequence of module commands to use to get started running an applications on the SCC.
- List all available modules by executing “module avail” command. The results are a list of module names that can be loaded.
[username@scc1 ~]$ module avail ---------------------------- /share/etc/modulefiles ---------------------------- 2brad_denovo/2019-01-22_giteec5016 forestpmplot/1.0.1 plink/1.07 (D) 2brad_gatk/2019-01-22_git1fcc9e8 gatk/3.8-1 plink/1.90b6.4 admixture/1.3.0 gatk/4.0.11.0 plink/2.00a1LM angsd/0.923 gatk/4.0.12.0 plink/2.00a2.3 annovar/2018apr gatk/4.1.2.0 (D) plink/2.0 annovar/2019oct24 (D) gatk/4.1.3.0 plinkseq/0.10 anvio/6.1 gatk/4.1.4.1 postgap/2020-05-11-git0453c91 ... ... - Filter the result by adding keywords to “module avail” command, such as “julia”.
[username@scc1 ~]$ module avail julia ------------------------- /share/module.7/programming -------------------------- julia/0.7.0 julia/1.0.2 julia/1.3.0 julia/1.4.2 julia/1.5.0 (D) Where: D: Default Module Use "module spider" to find all possible modules. Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys". - Load the module using “module load” and append the module name. The following example shows loading Julia version 1.5.0.
[username@scc1 ~]$ module load julia/1.5.0 - Confirm the module is loaded by executing “module list”.
[username@scc1 ~]$ module list
Currently Loaded Modules: 1) julia/1.5.0 - Now you can run your application. In this example we will check the version of Julia loaded.
[username@scc1 ~]$ julia -version julia version 1.5.0 - When you are done with the application, unload the module using “module unload” command with the name of the module you want to remove.
[username@scc1 ~]$ module unload julia/1.5.0 - Confirm the module was unloaded by running “module list” command.
[username@scc1 ~]$ module list No modules loaded
Please note that the modules loaded are not persistent between your SCC sessions. Each time you connect to the SCC, you will need to load the modules again.
Modules Best Practices
Below are best practices for using modules
- RCS is always is adding updated software to the SCC, but newer software is not always backwards compatible and can break existing scripts or break existing workflows. When using “module load” command, one should always use the entire module name (including version number) to ensure the same modules are loaded each time you work on your analysis.
- Only load modules that are needed for the current script or workflow you are running, to reduce the chance of unexpected behavior caused by module conflicts.
- Avoid including “module load” commands in your .bashrc or .bash_profile files for convenience, as we have found this causes instability and other various issues for our researchers. As an alternative, create a bash script with the module load commands and source it each time, to load the modules needed.
