Divisible-load scheduling engine

Schedule big workloads optimally, in time & energy.

Partition an arbitrarily splittable workload across distributed processors and get the fastest schedule (and, when you care, the most energy-efficient one) from a research-grade C++ solver library.

Divisible load scheduling (DLS) plans how a large, arbitrarily splittable workload (big-data batches, parallel scans, rendering, simulations) is partitioned and streamed to a set of worker machines so it finishes as fast as possible, and optionally using as little energy as possible. This portal puts a research-grade C++ solver library behind a friendly interface: describe your machines, pick a method, and see the schedule, the trade-offs, and how methods compare.

Fast heuristicsProven-optimalHiGHS MILPEnergy-awareTime-energy ParetoChain / tree / graph
solvers available
time + energy
criteria
CSimplex
LP backend

Capabilities

What you can do

Solve & visualize

Run any solver and get the makespan, energy and a Gantt chart of communication vs computation per processor.

Time-energy Pareto

Explore the trade-off front, how much energy you save by allowing a little more time.

Iso-maps

Sweep two system parameters and see contours of constant time (isoefficiency) or energy (isoenergy).

Portfolio compare

Run several solvers on the same random instances and compare quality against run time.

Headless

Use the engine

Same engine, three ways: the GUI, the command line, or the HTTP API. The C++ library is self-contained and usable on its own.

# command line, JSON in, JSON out
$ dls solve --solver=auto --json instance.txt

# or the HTTP API, the same engine this portal uses
$ curl -s localhost:8501/api/solve \
    -H 'Content-Type: application/json' \
    -d '{"instance": {"totalLoad": 1000, "processors": [...]}, "solver": "best-rate"}'
Open Solver Studio to get started, or read the Knowledge base for the model and methods.