Software & Environments
How to install and manage software on the clusters.
Critical Information: You cannot install software directly on the clusters. Instead, use:
- Conda or UV for Python packages
- Singularity containers for complex dependencies
Acceptable on login nodes: Creating and setting up these environments (light configuration work).
NOT acceptable on login nodes: Testing or running code after installation. Once your environment is set up, submit a job to test it!
Using Conda Environments
Conda lets you create isolated Python environments with the packages you need.
On Zest
# Load the Anaconda module
module load anaconda3
# Create a new environment
conda create -n myenv python=3.11
# Activate it
conda activate myenv
# Install packages
conda install numpy pandas scikit-learn
pip install your-package-here
Using in Job Scripts (Zest)
#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks=1
module load anaconda3
conda activate myenv
python my_script.py
On OrangeGrid
Conda works similarly, but you’ll activate it in your job wrapper script since modules aren’t available.
Create wrapper script (run_with_conda.sh):
#!/bin/bash
source ~/miniconda3/etc/profile.d/conda.sh
conda activate myenv
python my_analysis.py
Submit file:
executable = run_with_conda.sh
request_cpus = 1
request_memory = 4GB
output = job.$(cluster).$(process).out
error = job.$(cluster).$(process).err
log = job.$(cluster).log
queue 1
Using UV (Modern Python Packaging)
UV is a fast Python package installer. See examples in the OrangeGrid UV examples.
Using Singularity Containers
For complex software stacks or when you need specific system libraries.
Convert Docker Image to Singularity
# Pull Docker image and convert
singularity pull docker://tensorflow/tensorflow:latest-gpu
# This creates: tensorflow_latest-gpu.sif
Run Your Code in the Container
singularity exec tensorflow_latest-gpu.sif python my_script.py
Using Containers in Job Scripts (Zest)
#!/bin/bash
#SBATCH --nodes=1
#SBATCH --gres=gpu:1
singularity exec my_container.sif python my_ml_training.py
Using Containers in Job Scripts (OrangeGrid)
executable = /usr/bin/singularity
arguments = exec my_container.sif python my_script.py
request_gpus = 1
output = job.$(cluster).$(process).out
error = job.$(cluster).$(process).err
log = job.$(cluster).log
queue 1
Available Modules on Zest
# See all available software modules
module avail
# Search for specific module
module spider python
# Load a module
module load cuda/12.3
Popular modules on Zest:
anaconda3/2023.9- Python environmentcuda/12.3- NVIDIA CUDA librariesopenmpi4/4.1.6- MPI implementationgromacs/2023.2- Molecular dynamics
For complete up-to-date list, run module spider on the cluster.