gpusched
A VRAM-aware GPU job scheduler for a single machine: declare how much memory each shell command needs, and it places jobs the moment a GPU has room and reports when a guess was wrong.
gpusched is a single-node, single-user GPU job scheduler: a user writes shell commands in a text file, optionally declaring how much GPU memory each needs, and gpusched runs them, placing each job on a GPU with enough free memory the moment one opens up, measuring how much VRAM each job actually used, and reporting when a declaration turned out to be wrong. It targets one workflow — a box with a few GPUs, a pile of training and evaluation commands, run unattended with minimal idle time and without jobs out-of-memorying each other.
It describes itself candidly as roughly a thousand lines with no daemon, no database and zero Python dependencies, not a cluster scheduler: declarations are advisory rather than enforced, GPU state is polled every few seconds so short VRAM spikes can be invisible, and co-locating compute-heavy jobs can be slower than running them one after another. An exclusive mode schedules one job per GPU as a zero-risk fallback, and a 65-test suite exercises the scheduler against simulated GPU backends and real subprocesses.
It is written in Python and MIT licensed.