Back to directory

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

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.

More in CLI tools

See all 181
  • grev

    github.com

    A set of Unix coreutils-style filters — grep, sort, cut and more — that answer a plain-language question about each record instead of matching a pattern, using a small decision model.

  • A Node.js script that exports a Google Doc to HTML and CSS with high fidelity, preserving headings, spacing, alignment, bullet lists, images and right-to-left text.

  • A CLI that translates a plain-English request into a shell command using an LLM, printing only the command so it composes cleanly with the rest of the shell.