| 235 | bool debug_graph = false; |
| 236 | |
| 237 | bool CPURunner::Prerun(Subgraph* sub_graph) |
| 238 | { |
| 239 | if(!BindNodeOps(sub_graph)) |
| 240 | return false; |
| 241 | |
| 242 | if(!AllocateMem(sub_graph)) |
| 243 | return false; |
| 244 | |
| 245 | for(unsigned int i = 0; i < sub_graph->seq_nodes.size(); i++) |
| 246 | { |
| 247 | Node* node = sub_graph->seq_nodes[i]; |
| 248 | |
| 249 | if(!node->ExistAttr(ATTR_NODE_OPS)) |
| 250 | continue; |
| 251 | |
| 252 | NodeOps* node_ops = any_cast<NodeOps*>(node->GetAttr(ATTR_NODE_OPS)); |
| 253 | |
| 254 | if(!node_ops->Prerun(node)) |
| 255 | { |
| 256 | XLOG_ERROR() << "Prerun for node: " << node->GetName() << " op: " << node->GetOp()->GetName() << " failed\n"; |
| 257 | return false; |
| 258 | } |
| 259 | } |
| 260 | |
| 261 | return true; |
| 262 | } |
| 263 | |
| 264 | #ifdef ENABLE_TIME_PROFILING |
| 265 | |