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:

  1. When loading a module, it automatically sets the appropriate environment variables required by the application to run properly.
  2. It will inform you if additional dependency modules need to be loaded.
  3. 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.

  1. 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
    ...                                   ...
    
  2. 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".
    
  3. 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
    
  4. Confirm the module is loaded by executing “module list”.
    [username@scc1 ~]$ module list
    Currently Loaded Modules: 1) julia/1.5.0
  5. 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
    
  6. 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
    
  7. 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.
Back to Top