Managing software environments on HPC systems
Modules are a way to manage different software environments on HPC systems
Key Benefits: - Dynamic loading/unloading of software packages - Manage different versions and dependencies - Clean separation of environments - Avoid software conflicts
Without Modules: - Software conflicts and version issues - Complex PATH management - Inconsistent environments - Difficult reproducibility
module avail # List all available modules
module avail python # List all Python modules
module avail gcc # List all GCC modulesTry it: Run module avail to see what software is available on Aire
Load the gcc module and verify it’s loaded:
Questions: - What happens if you don’t specify a version? - How does this affect reproducibility?
Answer: Without version specification, you get the default version, which may change over time!
Why? Default versions change when new software is installed, breaking reproducibility
Create hello_world.py:
Create job script python_test.sh:
# Add executable permissions
chmod +x python_test.sh
# Check it's executable (shows *)
ls -F
# Run the script
./python_test.shRemember: Always test your scripts interactively before submitting jobs!
Benefits: - Popular software centrally installed - Optimized for HPC hardware - Professional maintenance - Avoids conflicts
Process: 1. Check if software exists: module avail software_name 2. If not available, submit a Research Computing Query 3. Include: software name, version, research justification
Submit requests through the Research Computing Help Form
Include in your request: - Software name and version - Brief justification for your research - Any specific requirements or dependencies - Timeline if urgent
Navigation: Home > Research IT > Research IT Query
For advanced users who need more control:
# Load Spack
module load spack
# Install software
spack install htop
# Load installed software
spack load htop
# Use the software
htopUse case: When you need software versions not available via modules
# Pull a container
apptainer pull docker://ubuntu:20.04
# Run software in container
apptainer exec ubuntu_20.04.sif python my_script.pyUse case: Complex software stacks, ensuring exact reproducibility
module purgegcc/14.2.0 not gcc#!/bin/bash
# Project setup script
# Author: Your Name
# Date: 2025-01-01
# Start with clean environment
module purge
# Load required modules with versions
module load gcc/14.2.0
module load python/3.13.0
module load cmake/3.24.2
# Verify modules loaded
echo "Loaded modules:"
module list
# Optional: activate conda environment
# conda activate myprojectShare module commands:
module avail pythonmodule listCreate a script that loads modules for your research:
Module not found:
Conflicts between modules:
Key Points: - Modules provide clean software environments - Always specify versions for reproducibility
- Use scripts to automate and document - Request new software through proper channels - Consider alternatives for special needs
Next: Learn how to run your software on compute nodes with job scheduling!
Now you can manage software environments!
Let’s learn about job scheduling and submission

HPC1: Introduction to High Performance Computing | University of Leeds