01 Why bioinformatics needs HPC
A modern whole-genome sequencing run produces roughly 100 GB of raw FASTQ data per sample. A rice population study might have 200 accessions. A sorghum GWAS panel — like the one behind your BPV genomic selection thesis — may contain tens of thousands of SNP markers across hundreds of lines. Your laptop has 8–16 GB of RAM and 4–8 CPU cores. The maths does not work.
STAR alignment (RNA-seq) requires ~30 GB RAM just to load the genome index. GATK variant calling for a single sample can take 6–12 hours on a laptop. On an HPC cluster with 48 cores per node and 512 GB RAM, the same job finishes in 20 minutes. HPC is not optional for real genomics — it is the infrastructure the field runs on.
HPC stands for High-Performance Computing. It refers to a networked collection of computers (called a cluster) that work together and are managed by a job scheduler. Instead of running your STAR alignment on your laptop, you write a script that says "I need 16 CPUs, 64 GB RAM, and 4 hours" — and the scheduler finds the machines and runs your job automatically, even while you sleep.
Most universities and research institutes in Germany — including Justus-Liebig-Universität Gießen — provide access to HPC clusters through national computing initiatives (BMBF, DFG) or regional networks (HRZ clusters, HLRS, or the national NHR system). Ask your thesis supervisor about cluster access.
Here is how computational demand scales for common bioinformatics tasks:
| Task | RAM needed | CPU cores | Time (laptop) | Time (HPC node) |
|---|---|---|---|---|
| FastQC on 1 sample | 1 GB | 1–2 | 5 min | 1 min |
| STAR genome index build | 30 GB | 8 | ⛔ impossible | 25 min |
| STAR alignment (1 sample) | 32 GB | 8 | ⛔ impossible | 15 min |
| GATK HaplotypeCaller (1 sample) | 16 GB | 4 | 8–12 h | 45 min |
| DESeq2 on 20 samples | 4 GB | 1 | 10 min | 2 min |
| rrBLUP / BGLR on large SNP panel | 8–64 GB | 1–4 | hours–days | minutes–hours |
02 Anatomy of a cluster
A computing cluster is not a single computer. It is a collection of many computers — called nodes — connected by a high-speed internal network (InfiniBand or 10 GbE). Each node looks like a powerful server with many CPU cores, large RAM, and fast local storage. The nodes share access to a common, large parallel filesystem (like GPFS or Lustre) where your data and scripts live.
Key components you need to understand:
| Component | What it is | Your role |
|---|---|---|
| Login node | The gateway machine you SSH into. Shared by all users. | Edit scripts, transfer files, submit jobs only |
| Compute nodes | The worker machines with many cores and large RAM | Your jobs run here — allocated by SLURM |
| Scheduler (SLURM) | Software that manages the queue of all users' jobs | You submit jobs to it with sbatch |
| Shared filesystem | A large disk system mounted on all nodes simultaneously | Store data and scripts here — all nodes can read/write |
| Scratch space | Fast temporary storage for intermediate files | Use for large temporary FASTQ/BAM files during a job |
03 Login nodes vs compute nodes
This is the most important rule of HPC etiquette: never run heavy computation on the login node.
The login node is shared by all users on the cluster simultaneously. If you run STAR alignment or
GATK directly on the login node, you slow down everyone else's ability to edit files, check jobs,
and transfer data. Most clusters will automatically kill your process — and your HPC account may
be suspended. Always use sbatch (batch job) or srun (interactive job) to run computation.
What is allowed on the login node vs what requires a job submission:
| Allowed on login node | Requires sbatch / srun |
|---|---|
Editing scripts (nano, vim) |
STAR alignment |
Submitting jobs (sbatch) |
GATK variant calling |
Checking job status (squeue) |
FastQC on large files |
Small file transfers (scp, rsync) |
rrBLUP / BGLR models |
Listing files (ls, head) |
Any Python / R computation taking > 1 min |
Loading modules (module load) |
Compiling software |
Think of a cluster like a shared laboratory with 500 benches (compute nodes). The login node is the reception desk — everyone checks in there. SLURM is the lab manager who assigns benches. You tell the lab manager "I need 4 benches for 2 hours, with 64 kg of reagents (RAM)." The lab manager says "bench 117–120 are free, go ahead." You never work at the reception desk — you just check in and submit your request.
04 Where SLURM fits in
SLURM stands for Simple Linux Utility for Resource Management. It is the job scheduler used by the vast majority of HPC clusters worldwide — including those at German universities (HRZ, HLRS, NHR centres). Its job is simple in concept: accept jobs from hundreds of users, decide who gets what resources and when, and execute them in order.
Without a scheduler, 200 researchers would all try to run their RNA-seq jobs at the same time. The cluster would be overwhelmed and every job would fail or slow to a crawl. SLURM solves this with a fair-share queue: it tracks how much compute each user has consumed, gives priority to users who have used less recently, and ensures no single user monopolises the cluster. It is the operating system of shared science.
SLURM's core commands — you will learn every one of these in depth across this module:
| Command | What it does | When you use it |
|---|---|---|
| sbatch job.sh | Submit a batch job script to the queue | Every time you run a pipeline |
| squeue -u $USER | Show your running and pending jobs | While waiting for results |
| scancel <jobid> | Cancel a running or queued job | When you made a mistake |
| sinfo | Show cluster partitions and node availability | Choosing where to submit |
| srun | Start an interactive job on a compute node | Testing and debugging |
| sacct -j <jobid> | Show resource usage for a completed job | After a job finishes |
A SLURM job script is just a Bash script with special comment lines at the top that tell SLURM what resources your job needs. Here is what a minimal one looks like — we will build real ones from Lesson 4 onwards:
#!/bin/bash #SBATCH --job-name=star_align # name shown in squeue #SBATCH --ntasks=1 # number of tasks #SBATCH --cpus-per-task=8 # CPU cores per task #SBATCH --mem=64G # RAM #SBATCH --time=02:00:00 # max wall-clock time (HH:MM:SS) #SBATCH --output=logs/star_%j.out # stdout log (%j = job ID) #SBATCH --error=logs/star_%j.err # stderr log # Load the STAR module module load STAR/2.7.10a # Run the alignment STAR --runThreadN 8 \ --genomeDir /scratch/shajedur/sorghum_genome/star_index \ --readFilesIn sample_R1.fastq.gz sample_R2.fastq.gz \ --outSAMtype BAM SortedByCoordinate \ --outFileNamePrefix results/sample_
Lines starting with #SBATCH look like comments to Bash (they start with #),
but SLURM reads them before running the script. They are your "resource request form."
SLURM will not start your job until a node with exactly those resources becomes free.
If you ask for 64 GB RAM and only 32 GB is available on all nodes, you wait.
Lesson 5 covers how to choose resource requests wisely to minimise queue wait time.
05 A real bioinformatics workflow on HPC
To make this concrete, here is how a typical RNA-seq analysis looks when run on an HPC cluster. You would run this for your sorghum RNA-seq data — each step becomes a separate SLURM job, and they chain together using job dependencies.
Notice you only interact with the cluster for job submission and data transfer. All the heavy computation happens automatically on compute nodes while you do other work. You can log off completely — your jobs keep running.
This is the power model. Submit your STAR alignment at 9 PM before dinner. By morning, 200 samples are aligned. No laptop fan running. No keeping your computer awake. This is how production genomics analysis actually works at scale.
Key vocabulary summary
| Term | Meaning in HPC |
|---|---|
| Cluster | The entire HPC system — all nodes, network, and storage together |
| Node | One physical computer in the cluster |
| Core | One CPU processor within a node (a node may have 32–128 cores) |
| Partition | A group of nodes for different job types (short, long, GPU, highmem) |
| Job | A unit of work submitted to SLURM — your script + resource request |
| Queue | The list of all jobs waiting or running across the cluster |
| Wall time | Maximum real-world clock time your job is allowed to run |
| Scratch | Fast temporary disk space — data is deleted after your job |
| Home directory | Your permanent space: small quota, backed up |
| Module system | Software loaded on demand with module load |
| Job array | One submission that spawns many parallel jobs (e.g., 200 samples) |
06 Exercises
No cluster access is required for these exercises — they are conceptual and research tasks to solidify your understanding before you SSH into a real cluster in Lesson 2.
Your BPV thesis uses rrBLUP and BGLR on a sorghum SNP panel. Estimate: if your marker matrix has 50,000 SNPs × 300 lines, and each value is an 8-byte float (double precision), how many MB of RAM does the matrix alone require? How does this change with 200,000 SNPs?
▶ Show answer
# 50,000 SNPs × 300 lines × 8 bytes per value 50000 × 300 × 8 = 120,000,000 bytes = ~115 MB # With 200,000 SNPs 200000 × 300 × 8 = 480,000,000 bytes = ~457 MB # But rrBLUP builds a kinship matrix (G matrix): n × n # 300 × 300 × 8 = 720,000 bytes — tiny # BGLR with MCMC chains needs more: 2–4 GB for large panels # Request 16–32 GB on HPC to be safe
The marker matrix itself is manageable, but BGLR's Markov Chain Monte Carlo iterations and BLUP's matrix inversions (G-1 A-1) drive RAM up quickly. Always test with a small subset first, then scale on HPC.
Research: Does Justus-Liebig-Universität Gießen have an HPC cluster available to students? What is the HRZ (Hochschulrechenzentrum) page address? Is there a national allocation you could apply for through the DFG or NHR network? Write down the steps to request an account.
▶ Show answer
The HRZ at JLU Gießen offers HPC resources to researchers. Visit hrz.uni-giessen.de and search for "HPC" or "High Performance Computing." For larger allocations, the NHR (National High Performance Computing) network offers computing time to German university researchers through competitive proposals. Your thesis supervisor can submit a resource request — MSc thesis work often qualifies. The HLRS in Stuttgart and Jülich Supercomputing Centre also accept academic proposals.
You want to align 50 RNA-seq samples from a Sorghum bicolor drought study. Each sample needs 32 GB RAM, 8 CPU cores, and 45 minutes. If the cluster has 20 compute nodes with 64 cores and 256 GB RAM each:
(a) How many samples can run simultaneously?
(b) How long will all 50 samples take (wall-clock time, ignoring queue time)?
(c) Should you use a job array or 50 separate sbatch calls?
▶ Show answer
(a) Each node: 64 cores ÷ 8 cores/job = 8 jobs per node by CPU. RAM: 256 GB ÷ 32 GB = 8 jobs per node by RAM. So 8 jobs per node × 20 nodes = 160 simultaneous jobs. All 50 samples can run at the same time.
(b) If all 50 run in parallel: 45 minutes total. Without HPC (laptop, 1 job at a time): 50 × 45 min = 37.5 hours.
(c) Use a job array (sbatch --array=1-50 align.sh).
Lesson 6 covers this in depth. A job array is one submission that creates 50 parallel jobs —
much cleaner than 50 manual sbatch calls.