A non-transitory computer readable medium comprising computer readable program code, which when executed by a computer processor enables the computer processor to perform a method for managing a distributed multi-tiered computing (DMC) environment, comprising:
- receiving, by a local controller, a scheduling package from a global controller, wherein:
- the scheduling package specifies a scheduling job, and
- the global controller sent the scheduling package as network data traffic units over a series of network devices that operatively connect the local controller and the global controller;
- normalizing, by the local controller associated with a DMC domain, task resource demand dimensions for each task associated with the scheduling job, wherein the resource demand dimensions comprise:
- compute units, wherein the compute units comprise a quantity of processors and processor cores;
- memory units;
- accelerator units, wherein the accelerator units comprise a quantity of graphics processing units (GPUs), a quantity of GPU memory, a quantity of field programmable gate arrays (FPGAs), and a quantity of FPGA logic elements;
- and
- network units, wherein the network units comprise a quantity of network interface cards and a total network bandwidth;
- summing the task resource demand dimensions for each task to generate resource demand vectors;
- classifying tasks based on priority;
- sorting tasks based on associated resource demand vectors;
- obtaining critical path, earliest start time, and latest start time associated with each task;
- sorting tasks based on the critical path and the earliest start time;
- and
- generating scheduling assignments based on the priority, capacity of devices in a final candidate list, resource demand vectors, earliest start time, and the critical path.