This PR amends our notion of the cluster aggregator ("don't care"/"X") node in the flow graph. Since some of the cost models we use do not have a cluster aggregator node, it seems prudent not to hard-code its existence into the flow graph code.
Instead, cost models can now themselves create a cluster aggregator node by simply producing an equivalence class of which all tasks and all machines (or racks, or cores, or resources in general) are members. This PR also updates the majority of cost models to work with this new notion (done: trivial, random, WhareMap and Octopus cost models; to do: SJF, Quincy, CoCo and simulated Quincy).
I will keep updating this PR over the next few days, but I'm pushing it out already so that review of the (substantial) changes can begin.
This PR amends our notion of the cluster aggregator ("don't care"/"X") node in the flow graph. Since some of the cost models we use do not have a cluster aggregator node, it seems prudent not to hard-code its existence into the flow graph code.
Instead, cost models can now themselves create a cluster aggregator node by simply producing an equivalence class of which all tasks and all machines (or racks, or cores, or resources in general) are members. This PR also updates the majority of cost models to work with this new notion (done: trivial, random, WhareMap and Octopus cost models; to do: SJF, Quincy, CoCo and simulated Quincy).
I will keep updating this PR over the next few days, but I'm pushing it out already so that review of the (substantial) changes can begin.