1. A computer-implemented method for scheduling a plurality of tasks, wherein each task is assigned to one of a plurality of processors, the method comprising: determining, using one or more computer processors and memory, a lower bound completion time for each of a plurality of jobs, each of the plurality of jobs comprising a respective plurality of tasks; and determining, using one or more computer processors and memory, a task schedule for each of the plurality of processors based on the lower bound completion times.