Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

HPC Introduction

Repository: https://github.com/chicago-aiscience/workshop-hpc-2026-sep

Objectives

Goal - Start with how to access the cluster and end with running a real, multi-stage GPU workflow on an HPC cluster.

A single river-discharge modeling project (SWOT Confluence) runs through every lesson as the example.

Lesson Goals:

  1. Getting Started - Log in to the cluster, set up a software environment, and submit your first interactive and batch jobs.

  2. Data Management - Move data on and off the cluster and place it across scratch, long-term, and node-local storage for fast, safe runs.

  3. Errors and Monitoring - Watch jobs and GPU usage while they run, read metrics and logs to diagnose failures, and recover from interruptions.

  4. Building Workflows - Turn a multi-step pipeline into parallel job arrays chained by SLURM dependencies.

  5. Reproducibility and Checkpointing - Pin environments, record manifests and job metadata, and checkpoint jobs so runs are repeatable and interruption-proof.

Guiding design principle: every SLURM concept is taught by doing using the same project (build a manifest → train the consensus model → predict → aggregate → benchmark river discharge), so skills compound.

Prerequisites

Participants should be comfortable in a terminal:

Being new to HPC and SLURM is fine - that’s what this series teaches. No deep ML background is assumed either: the discharge model is the vehicle for learning HPC, not the focus, so it is a simple example.

Access & logistics (must be done before lesson 1)

  1. Cluster account - An account on RCC (Midway), provisioned ahead of time.

  2. SSH set up and tested - Duo enrolled (RCC) with a successful test login before the workshop.

  3. Terminal / SSH client - Native on macOS/Linux; Windows users need WSL, Windows Terminal, or PuTTY. See: Windows WSL

  4. Partition permission - You should be able to submit to the schmidt-gpu partition on the RCC cluster.

  5. Workshop materials staged - Have the project repo + the shared mini dataset (~tens of MB) available here on your local laptop.

🧰 - The DSI cluster is also addressed in the workshop content but the interactive steps will focus on running jobs on the RCC cluster.

Symbols

Introducing the workshop repository

Throughout this series we’ll work with a single real project so that each new cluster skill is practiced on the same, growing example rather than disconnected example commands.

The repository lives here: https://github.com/chicago-aiscience/workshop-hpc-2026-sep

What the project does

It’s a miniature version of a real research task: estimating river discharge from SWOT satellite observations.

Several algorithms each estimate discharge for a river reach; the pipeline trains a small model to learn a consensus of those estimates against observed gauge discharge.

The code example predicts discharge for every reach, gathers the results, and scores them:

  SoS + SVS ─► build_manifest ─► train_consensus ─► predict_discharge ─┐
  (+ priors)   (per-reach CSV)   (learn consensus)   (per-reach Q)     │
                                                                       │
   ┌──────────────────────────────────————————————————————————————————─┘
   │
   └─► aggregate_discharge ─► benchmark_consensus ─► evaluate
       (one tidy table)       (skill vs. gauge)      (scores + plots)

It’s a teaching re-implementation built on real SWOT Confluence products, rewritten as a few hundred lines of readable Python so the focus stays on running work on the cluster, not on the modeling details.

Please note the data products volume have been reduced to make it easier to work with in this workshop.

No ML background is needed - the model is the vehicle for learning HPC.


What’s in the repository

PathWhat it holds
environment.ymlThe pinned conda environment (Python, PyTorch, netCDF4, pandas, …)
config/setup_env.sh (builds the env, §1) - paths.sh (shared data paths + EXPERIMENT_CONFIG) - experiments/ (YAML experiment configs)
src/The Python pipeline - one small script per stage (see below)
slurm/The SLURM job scripts (*.sbatch) and interactive/monitoring walkthroughs (*.md)
README.md, WORKSHOP_GUIDE.mdProject overview and a map of which file teaches which lesson

The pipeline itself (src/) is deliberately one readable script per step:

ScriptStageRuns on
build_manifest.pyJoin the SoS, gauge (SVS), and prior inputs → one row per (reach, overpass) CSV “manifest”CPU (instant)
train_consensus.pyTrain the consensus model to predict gauge discharge from the algorithm estimatesGPU
predict_discharge.pyApply the model to every reach → predicted dischargeGPU
aggregate_discharge.pyConcatenate the per-shard predictions → one tidy discharge tableCPU
benchmark_consensus.pyScore the learned consensus against the gauge (NSE, KGE, RMSE, %bias)CPU
evaluate.pyProduce the summary and plotsCPU

How we’ll use it across the workshop

Each lesson runs a different part of this same project, adding one layer of cluster skill:

LessonWhat we do with the repo
1. Getting StartedBuild the environment (§1) and submit the training step as your first batch and interactive job
2. Data ManagementMove the SWOT input data onto the cluster and place it across scratch / project / node-local storage
3. Errors and MonitoringWatch that job’s GPU usage, read its logs, and recover it from interruption
4. Building WorkflowsRun prediction in parallel with a job array, then chain the analysis steps with dependencies
5. Reproducibility and CheckpointingPin the environment, record configs and job metadata, and checkpoint long runs

How you’ll get it onto the cluster

You’ll bring the code to the cluster with git (we’ll cover moving files in Lesson 2):

git clone https://github.com/chicago-aiscience/workshop-hpc-2026-sep.git
cd workshop-hpc-2026-sep

The project runs on a small two-basin subset of the SWOT Confluence products (~tens of MB) provided for the workshop, so every stage finishes quickly and the whole pipeline fits comfortably in a workshop session.

🧰 - You don’t need to read all the Python to follow the workshop. Think of src/ as “the work” and slurm/ + config/ as “how we ask the cluster to run that work.” Every lesson points you at the specific files it uses.