Software and modules¶
Software environments on UCT HPC¶
UCT HPC provides a shared software environment for research computing. Many applications, compilers, interpreters, and scientific tools are installed centrally and made available through the module system.
This page explains how software is organised, how modules work, and what to keep in mind when using or extending software environments on the cluster.
Overview¶
Software on HPC is typically provided in one of two ways:
- as part of the base operating system
- as centrally installed research software made available through modules
In practice, most research software is accessed through the module system.
Modules allow the system to:
- provide multiple versions of the same software
- configure the correct executable paths and libraries
- reduce conflicts between tools and environments
- let users switch between software versions as needed
Where software lives¶
Many centrally installed research applications are stored in a shared location on the cluster.
Typical characteristics of centrally installed software:
- available to all relevant users on the system
- maintained by the HPC team
- often exposed through a module rather than used via a direct path
- may include multiple versions of the same tool
You may occasionally see software referenced directly by path, but in most cases the preferred access method is through modules.
What a module does¶
A module changes your shell environment so that a specific software package becomes available for use.
When you load a module, it may:
- add a program to your PATH
- configure library paths
- set software-specific environment variables
- load supporting dependencies automatically
This means that loading a module is often required even when software is already installed on the system.
Core module commands¶
module avail— list available modulesmodule load— load a modulemodule list— show loaded modulesmodule unload— unload a modulemodule purge— clear all modules
Typical usage pattern¶
For batch jobs:
#!/bin/bash
#SBATCH --job-name=test
#SBATCH --partition=ada
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --time=01:00:00
module purge
module load python/miniconda3-py3.12
python myscript.py
Use modules inside jobs¶
Always load modules inside job scripts. Interactive sessions do not carry over into batch jobs.
Python on HPC¶
Use HPC-provided Python modules to ensure consistent environments.
R on HPC¶
Installing your own packages¶
Do not install heavy software on login nodes. Use an interactive job.
Python¶
R¶
Conda environments¶
Common issues¶
Command not found¶
Wrong version¶
Clean environment¶
Good practice¶
- load modules explicitly in jobs
- use one environment per project
- avoid installing on login nodes
- document software versions