| 173 | } |
| 174 | |
| 175 | void SlackAnalysis::ComputeSlack(std::vector<int64>* slacks) { |
| 176 | std::vector<Microseconds> asap_times; |
| 177 | std::vector<Microseconds> alap_times; |
| 178 | ComputeAsap(&asap_times); |
| 179 | ComputeAlap(&alap_times); |
| 180 | slacks->resize(graph_->num_node_ids()); |
| 181 | Node* srcNode = graph_->source_node(); |
| 182 | Microseconds makespan = alap_times[srcNode->id()]; |
| 183 | for (Node* node : graph_->nodes()) { |
| 184 | Microseconds latest_stime = alap_times[node->id()] - makespan; |
| 185 | (*slacks)[node->id()] = (latest_stime - asap_times[node->id()]).value(); |
| 186 | } |
| 187 | } |
| 188 | |
| 189 | GreedyScheduler::GreedyScheduler(const DeviceSet* devices, |
| 190 | const CostModel* cost_model, const Graph* g, |
no test coverage detected