Reference

Knowledge base

What is divisible load scheduling?

A divisible load is work that can be split into arbitrarily-sized independent pieces: scanning a huge file, batch record/image processing, Monte-Carlo runs. A master streams chunks over a network to workers (single-port: one transfer at a time). Each worker must receive its chunk before it can compute it, so communication and computation overlap across workers. The goal: choose who computes how much, and in what order, to minimize the makespan, and optionally the energy.

The model

Each processor i has Sᵢ startup latency, Cᵢ communication time per unit load, Aᵢ computation time per unit load, Bᵢ memory (max load per installment). Total load is V; the makespan is the last processor's finish time. A tight lower bound brackets the optimum, so the gap (Cmax−LB)/LB shows how close a heuristic is.

Methods

The solver portfolio

MethodHow it works

Energy model (optional)

Each worker passes through four power states (Idle (P^I), Startup (P^S), Networking (P^N) and Running) and the running energy ε(α) is a convex piecewise function of the chunk size (cheap in-core, steeper out-of-core). With an energy model on, the MinCost solvers minimize energy and the Time-Energy Pareto view shows the trade-off.