Bridging the gap between personal laptops and large-scale, hardware-accelerated supercomputing.
ποΈ Center for Research Computing (CRC) β’ Rice University
π§ re51@rice.edu
π linkedin.com/in/erolrecep
π» github.com/erolrecep
π erolrecep.github.io
You push domain boundaries in molecular dynamics, AI/LLMs, genomics, and simulations.
Cluster computing introduces batch queues, parallel storage, and hardware accelerators.
CRC engineers co-design pipelines with you before runs happen, turning queue delays into speedups.
Guiding Philosophy: Everyone needs help scaling up. Our goal is empowering you to write cluster-native code that runs faster, costs less in wait time, and reproduces seamlessly.
Shared resource ethics, interactive vs. batch paradigms, and login node etiquette.
High-speed VAST scratch vs. archives; migrating multi-TB datasets via Globus & rsync.
Containerizing workloads with Apptainer (Singularity) and automating with Makefiles.
Memory over-allocation, sequential job loops, and single-GPU lockups on multi-GPU nodes.
Auditing jobs with seff, monitoring live GPUs with nvtop, and collaborating during office hours.
π‘ Key Takeaway: HPC is not an interactive playgroundβit is a production compute factory. Develop locally or interactively, then dispatch autonomous batch workloads.
Allowed:
sbatch, squeue, scancel).Forbidden: Remote VSCode Server / Copilot indexing, heavy compiling, running simulations directly.
Interactive Debugging:
salloc --cpus-per-task=4 --mem=16G --time=02:00:00Production Batch Jobs:
sbatch my_job.slurm (unattended, queued, logged).Tool: rsync or scp
# Efficient incremental synchronization
rsync -avzP --exclude '*.tmp' ./my_dataset/ \
re51@range.rice.edu:/scratch/re51/data/
-P).-a).Tool: Globus Transfer
For dotfiles, SSH keys, virtual environment definitions, and Git repositories. Never write simulation checkpoints here.
For active compute runs, checkpointing, and uncompressed datasets. Purge policy appliesβclean intermediate files!
For published benchmark data and final analysis results. Not for hundreds of thousands of tiny temp cache files.
β οΈ The Million Tiny Files Trap: Storing 1,000,000 loose 10KB images degrades Lustre/VAST metadata servers. Always archive or bundle datasets (e.g. tar, HDF5, WebDataset).
--nv automatically passes NVIDIA driver & CUDA libraries into container./scratch and /home seamlessly inside..sif file encapsulates Python 3.13, PyTorch, C libraries, and CUDA.# Run PyTorch GPU script inside container
apptainer exec --nv \
--bind /scratch/re51:/scratch \
/scratch/re51/containers/pytorch_2.4.sif \
python3 /scratch/re51/code/train.py \
--data-dir /scratch/re51/dataset
Pair with a project Makefile so that make train executes the identical recipe locally and on RANGE.
#!/bin/bash
#SBATCH --job-name=mem_hog
#SBATCH --mem=128G
# Job stays pending in queue for days for
# resources it doesn't actually need.
python data_process.py
#!/bin/bash
#SBATCH --job-name=mem_smart
#SBATCH --mem=16G
# Job starts quickly. Validated using `seff`
# from a previous run.
python data_process.py
seff <jobid> (85% memory efficiency).#!/bin/bash
#SBATCH --job-name=bad_seq
#SBATCH --nodes=1
#SBATCH --ntasks=64
#SBATCH --time=48:00:00
# Wastes 63 cores if the script is single-threaded
python my_single_thread_script.py param1
python my_single_thread_script.py param2
Allocates 64 cores for 48 hours, but python executes on 1 core. 63 CPU cores idle at 0% load!
#!/bin/bash
#SBATCH --job-name=good_array
#SBATCH --array=1-100%10
#SBATCH --cpus-per-task=1
#SBATCH --mem=4G
#SBATCH --time=02:00:00
# Runs 100 tasks concurrently (max 10 at once)
echo "Running task ID: $SLURM_ARRAY_TASK_ID"
python my_single_thread_script.py --id $SLURM_ARRAY_TASK_ID
Parallel throughput: Slurm launches 10 concurrent worker tasks, dropping wall-clock runtime by 10x!
cuda:0#!/bin/bash
#SBATCH --job-name=gpu_waste
#SBATCH --gres=gpu:4
#SBATCH --time=24:00:00
# The Python script is only coded to use cuda:0.
# 3 H100 GPUs sit idle while others wait in queue.
python train_model.py
Locks \$120,000 worth of GPUs. 3 GPUs sit at 0% utilization while lab mates are stuck in PENDING status.
#!/bin/bash
#SBATCH --job-name=gpu_optimized
#SBATCH --gres=gpu:1
#SBATCH --time=24:00:00
# Loads Apptainer container with PyTorch
apptainer exec --nv my_pytorch.sif python train_model.py
# (If using 4 GPUs, script MUST use
# DistributedDataParallel or similar).
High priority queueing, 100% GPU saturation. If scaling to 4 GPUs, verify with torch.distributed first!
seffInspect real CPU & RAM efficiency after job finishes:
$ seff 4819201
Job ID: 4819201
State: COMPLETED (exit code 0)
Cores: 8
CPU Utilized: 02:45:12
CPU Efficiency: 89.2% of 03:05:12 core-walltime
Memory Utilized: 14.21 GB
Memory Efficiency: 88.8% of 16.00 GB
β
Golden Rule: If Memory Efficiency < 30%, reduce --mem in your next run!
sallocnvtop / nvidia-smi: Real-time GPU compute %, memory %, and PCIe bandwidth.htop: Inspect per-core CPU utilization and thread affinity.sacct -j <jobid> --format=JobID,Elapsed,MaxRSS,StateAlways run a 1-epoch or 5-minute interactive test on compute nodes before launching a 72-hour batch job.
my_project/
βββ Makefile # Automated build & test targets
βββ requirements.txt # Environment lockfile
βββ container.sif # Apptainer image
βββ src/ # Python / C source modules
βββ sbatch/ # Parameterized Slurm scripts
β βββ 01_preprocess.slurm
β βββ 02_train_array.slurm
βββ results/ # Job history logs
βββ 01_prep_48210.out
βββ 01_prep_48210.err
# Auto-route standard output & errors with JobID
#SBATCH --output=results/%x_%j.out
#SBATCH --error=results/%x_%j.err
# Email notifications on failure or completion
#SBATCH --mail-type=END,FAIL
#SBATCH --mail-user=re51@rice.edu
%x expands to Job Name, %j expands to Job ID.Every Tuesday:
10:00 AM β 12:00 PM
1:00 PM β 3:00 PM
Drop in with code, Slurm scripts, or architecture questions.
Submit questions anytime:
helpdesk@rice.edu
or Service Now portal
Tag CRC for cluster, GPU, and software support.
Scaling up a grant or pipeline?
Dedicated Engineering
We help optimize MPI, PyTorch DDP, and Slurm arrays.
Portal: researchcomputing.rice.edu β’ Cluster Docs: kb.rice.edu
π§ re51@rice.edu