Load logical blob ids onto sbp edges
| 356 | |
| 357 | // Load logical blob ids onto sbp edges |
| 358 | void SbpConstructor::LoadLbi2SbpEdge(const OpGraph& op_graph) { |
| 359 | // Load logical blobs onto sbp edges |
| 360 | |
| 361 | for (auto* sbp_node_consumer : sbp_graph_.node_list_) { |
| 362 | auto* op_node = sbp_node_consumer->op_node_; |
| 363 | |
| 364 | // Loading logical blobs between two nodes |
| 365 | // look through input blobs |
| 366 | for (const std::string& ibn : op_node->op().input_bns()) { |
| 367 | // Each input blob has one source op node. |
| 368 | OpNode* producer = op_node->MutSrcNode4Ibn(ibn); |
| 369 | // producer sbp node |
| 370 | const auto* sbp_node_producer = op_name2sbp_node_[producer->op().op_name()]; |
| 371 | // TODO: recode this |
| 372 | auto* edge_found = sbp_node_consumer->FindEdgeWithNode(sbp_node_producer); |
| 373 | |
| 374 | CHECK(edge_found != NULL) << "SbpEdge not found while loading!" << std::endl; |
| 375 | |
| 376 | // Add copy cost for each blob |
| 377 | const LogicalBlobId& lbi = op_node->op().BnInOp2Lbi(ibn); |
| 378 | edge_found->LoadLbi(lbi); |
| 379 | } |
| 380 | }; |
| 381 | } |
| 382 | |
| 383 | Maybe<void> SbpConstructor::CheckSbpAgreement(const Job& job) { |
| 384 | Job new_job; |
nothing calls this directly
no test coverage detected