HPC Documentation

Guides, references, and tutorials for the WCM cluster

Modules

Environment Modules

Environment modules provide a powerful package management layout for injecting software dependencies on high-performance computing (HPC) clusters. They allow you to dynamically modify your active shell environment to access different software versions without library path conflicts.

Note: The SCU team uses modules across all clusters. However, software availability and exact version strings will vary depending on your targeted system architecture.

How Modules Work

When you load a module, it dynamically appends or updates critical Linux environment variables so your shell knows exactly where to look for binaries and libraries:

  • PATH: Prepends the specific module's binary directories containing its core executables.
  • LD_LIBRARY_PATH: Includes specific shared object library paths required at runtime.
  • PYTHONPATH: Extends Python third-party module search trees.
  • MANPATH: Adds module-specific manual documentation page locations.

Example: Path Modification

# 1. Before loading, the software application is not found in your default system path
$ which python
$ echo $PATH
/usr/local/bin:/usr/bin:/bin

# 2. Load the targeted system environment module
$ module load anaconda3

# 3. Path variables are updated instantly; software is available for use
$ which python
/shared-apps/spack/opt/.../anaconda3/bin/python

Basic Module Commands

Manage your cluster software configuration profile using these core environment operations:

CommandAction
module availList all software compatible and compiled on the current cluster node
module spider nameDeep-search indexes across all visibility layers to find nested dependencies
module load name/verInject a specific software package version into your active shell instance
module listDisplay every single environment module currently running in your active session
module purgeWipe out all running environments (highly encouraged inside batch script headers)

Inspecting and Switching Modules

To review exactly what variables and internal system directories an upcoming module configuration intends to drop into your environment path:

module show gcc/13.2.0

To seamlessly hot-swap one tool version out for an alternate profile version release without completely purging your current variable tree:

module switch python/3.8 python/3.11

Summary & Best Practices

  • Clean Your Scripts: Prepend module purge at the absolute top of your Slurm batch jobs to eliminate inherited environment leakage.
  • Avoid .bashrc Automation: Never hardcode module load commands inside your personal ~/.bashrc profile, as this frequently creates severe package conflicts during software tracking or scheduling.
  • Explicit Script Initialization: Declare your required application profiles natively inside the body of your active workload file to track environmental dependencies over time.
  • Lock Down Explicit Versions: Avoid calling broad packages; pass full explicit target names (such as python/3.11.2) to ensure your science applications remain perfectly reproducible.

SCU High-Performance Computing Technical Documentation — 2026.