Unity
Unity
About
News
Events
Docs
Contact Us
code
search
login
Unity
Unity
About
News
Events
Docs
Contact Us
dark_mode
light_mode
code login
search

Documentation

  • Requesting An Account
  • Cluster Specifications
    • Node Features (Constraints)
      • NVLink and NVSwitch
    • Node List
    • Partition List
      • Gypsum
    • Storage
  • Frequently Asked Questions
  • Connecting to Unity
    • SSH
    • Unity OnDemand
    • Connecting to Desktop VS Code
  • Managing Files
    • Command Line Interface (CLI)
    • Disk Quotas
    • FileZilla
    • Globus
    • Scratch: HPC Workspace
    • Unity OnDemand File Browser
  • Submitting Jobs
    • Batch Jobs
      • Array Batch Jobs
      • Large Job Counts
      • Monitor a batch job
    • Interactive CLI Jobs
    • Unity OnDemand
    • Slurm cheat sheet
  • Software Management
    • Conda
    • Modules
      • Module Usage
      • Module Hierarchy
    • Renv
    • Unity OnDemand
      • JupyterLab OnDemand
    • Venv
  • Tools & Software
    • ColabFold
    • R
    • Unity GPUs
  • Datasets
    • AI and ML
      • Code Llama
      • Imagenet
      • Imagenet 1K
      • LAION
      • Llama2
      • mixtral
    • Bioinformatics
      • Alphafold databases
      • Colabfold databases
      • dfam
      • Eggnog
      • NCBI NT, NR, Eukaryotic, and Prokaryote databases
      • Tara Oceans
  • HPC Resources

Documentation

  • Requesting An Account
  • Cluster Specifications
    • Node Features (Constraints)
      • NVLink and NVSwitch
    • Node List
    • Partition List
      • Gypsum
    • Storage
  • Frequently Asked Questions
  • Connecting to Unity
    • SSH
    • Unity OnDemand
    • Connecting to Desktop VS Code
  • Managing Files
    • Command Line Interface (CLI)
    • Disk Quotas
    • FileZilla
    • Globus
    • Scratch: HPC Workspace
    • Unity OnDemand File Browser
  • Submitting Jobs
    • Batch Jobs
      • Array Batch Jobs
      • Large Job Counts
      • Monitor a batch job
    • Interactive CLI Jobs
    • Unity OnDemand
    • Slurm cheat sheet
  • Software Management
    • Conda
    • Modules
      • Module Usage
      • Module Hierarchy
    • Renv
    • Unity OnDemand
      • JupyterLab OnDemand
    • Venv
  • Tools & Software
    • ColabFold
    • R
    • Unity GPUs
  • Datasets
    • AI and ML
      • Code Llama
      • Imagenet
      • Imagenet 1K
      • LAION
      • Llama2
      • mixtral
    • Bioinformatics
      • Alphafold databases
      • Colabfold databases
      • dfam
      • Eggnog
      • NCBI NT, NR, Eukaryotic, and Prokaryote databases
      • Tara Oceans
  • HPC Resources

On this page

  • Current hierarchy
  • Hierarchy naming scheme
  • How to use the hierarchy
    • Learn more
  1. Unity
  2. Documentation
  3. Software Management
  4. Modules
  5. Module Hierarchy

Module Hierarchy

Environment modules are tools that dynamically change what software is available to use by a given user at a given time. Before you read this, it’s recommended that you first read the introduction and the module usage guide.

As a Unity user, you have access to many modules built with various software stacks. As Unity grows and more modules are installed with more stacks, it can become difficult to effectively manage them all. Our strategy is to create a module hierarchy to divide modules according to their stacks. Having model hierarchy makes it much more difficult to accidentally load modules that are incompatible with each other.

The $MODULEPATH environment variable is a list of directories in which Lmod searches for modules. With a module hierarchy, not all directories are added to the modulepath by default.

This means not all modules can be found with module avail by default.

Current hierarchy

/modules/modulefiles/

/modules/spack_modulefiles/
├── linux-ubuntu20.04-x86_64
|   ├── Core
|   ├── intel
|   │   └── 2021.4.0
|   ├── atlas
|   │   └── 3.10.3-sfhhdph
|   │       └── Core
|   ├── intel-oneapi-mpi
|   │   └── 2021.6.0-h3cppyo
|   │       ├── Core
|   │       └── openblas
|   │           └── 0.3.18-6pbqv7b
|   │               └── Core
|   ├── openblas
|   │   └── 0.3.18-6pbqv7b
|   │       └── Core
|   └── openmpi
|       ├── 4.1.3-3rgk3nu
|       │   ├── Core
|       │   └── intel-mkl
|       │       └── 2020.4.304-gmusbfh
|       │           └── Core
|       └── 4.1.4-tauaqk4
|           ├── Core
|           └── intel-mkl
|               └── 2020.4.304-gmusbfh
|                   └── Core
├── linux-ubuntu20.04-aarch64
│   └── Core
└── linux-ubuntu20.04-ppc64le
    ├── Core
    ├── openblas
    │   └── 0.3.21-coxg6gz
    │       └── Core
    └── openmpi
        ├── 4.1.3-edoxxdf
        │   ├── Core
        │   └── xl
        │       └── 16.1
        └── 4.1.4-476r55m
            └── Core
stylus_note
Module naming

Random characters at the end of compiler/provider version numbers can usually be ignored.

Core refers to modules compiled with Ubuntu’s default GNU compiler suite, and without any special providers. The majority of Unity’s modules are found here.

intel refers to the classic intel compilers (icc, ifort, icpc, …).

The intel-oneapi-compilers-classic module adds intel to modulepath.

Hierarchy naming scheme

linux-ubuntu20.04-[architecture]/[compiler]/[name]/[version]
linux-ubuntu20.04-[architecture]/[provider]/[compiler]/[name]/[version]
linux-ubuntu20.04-[architecture]/[provider]/[another-provider]/[compiler]/[name]/[version]
stylus_note
In this naming scheme, Core counts as a compiler.

How to use the hierarchy

To find modules anywhere in the hierarchy, use the unity-module-find command.

Based on the full path of your desired module, you should be able to tell which other modules need to be loaded first.

stylus_note
Core is always automatically added to $MODULEPATH!

For example:

user@login1:~$ module load gromacs/2021.3
No module(s) or extension(s) found!
If the avail list is too long consider trying:

"module --default avail" or "ml -d av" to just list the default modules.
"module overview" or "ml ov" to display the number of modules for each name.

Use "module spider" to find all possible modules and extensions.
Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys".
user@login1:~$ unity-module-find gromacs
Modules found:
linux-ubuntu20.04-x86_64/intel-oneapi-mpi/2021.6.0-h3cppyo/Core/gromacs/2021.3
linux-ubuntu20.04-x86_64/openmpi/4.1.3-3rgk3nu/intel-mkl/2020.4.304-gmusbfh/Core/gromacs/2021.3

The following example shows the desired module:

linux-ubuntu20.04-x86_64/openmpi/4.1.3-3rgk3nu/intel-mkl/2020.4.304-gmusbfh/Core/gromacs/2021.3

The module path shows which modules must loaded first. Based on that path, the following command is used to load the necessary modules:

module load openmpi/4.1.3 intel-mkl/2020.4.304 gromacs/2021.3

Learn more

https://lmod.readthedocs.io/en/latest/010_user.html#module-hierarchy

https://lmod.readthedocs.io/en/latest/080_hierarchy.html

Last modified: Thursday, July 11, 2024 at 4:56 PM. See the commit on GitLab.
University of Massachusetts Amherst University of Massachusetts Amherst University of Rhode Island University of Rhode Island University of Massachusetts Dartmouth University of Massachusetts Dartmouth University of Massachusetts Lowell University of Massachusetts Lowell University of Massachusetts Boston University of Massachusetts Boston Mount Holyoke College Mount Holyoke College
search
close