This repository is a didactic extension of
Slurm Docker Cluster by Giovanni Torres.
It adds OpenMPI support on top of the existing Slurm Docker cluster while preserving full upstream compatibility.
The goal is to provide a ready-to-use environment for teaching and experimenting with parallel programming using:
- Slurm
- OpenMP
- MPI (OpenMPI)
- Hybrid MPI + OpenMP workloads
This fork follows a few strict principles:
- ✅ No invasive changes to the upstream Dockerfile
- ✅ Layered extension via derived images
- ✅ Upstream updates remain easy to merge
- ✅ HPC-correct usage patterns (
srun, notmpirun) - ✅ Suitable for courses, labs, and demos
| Component | Status |
|---|---|
| Slurm | ✅ from upstream |
| OpenMP | ✅ via GCC |
| OpenMPI | ➕ added in this fork |
| Multi-node MPI | ✅ |
| Hybrid MPI + OpenMP | ✅ |
| Docker Compose | ✅ |
| Makefile workflows | ✅ |
The cluster consists of the following services:
mysql– accounting databaseslurmdbd– Slurm accounting daemonslurmctld– Slurm controllerslurmrestd– REST API (optional for teaching)c1,c2– compute nodes (slurmd)
A shared /data directory is mounted across all nodes for job files and binaries.
- Docker
- Docker Compose
- GNU Make
git clone https://github.com/fvitello/slurm-docker-cluster
cd slurm-docker-cluster# Build base Slurm image first
COMPOSE_BAKE=false docker compose build slurmdbd
# Build OpenMPI-enabled services
COMPOSE_BAKE=false docker compose build slurmctld c1 c2
# Start the cluster
docker compose up -dmake shell