| 1531 | } |
| 1532 | |
| 1533 | Maybe<void> InferLocalSignature(Operator* op, const OpNodeSignature& upstream_signature, |
| 1534 | bool is_local, const ParallelDesc& parallel_desc) { |
| 1535 | HashMap<std::string, LocalSigInferHint> ibn2local_sig_infer_hint; |
| 1536 | for (const std::string& ibn : op->input_bns()) { |
| 1537 | const auto& map = upstream_signature.local_signature().bn_in_op2opt_local_parallel(); |
| 1538 | const auto& opt_local_parallel = map.at(ibn); |
| 1539 | ibn2local_sig_infer_hint.emplace( |
| 1540 | ibn, LocalSigInferHint(¶llel_desc, opt_local_parallel.has_local_parallel())); |
| 1541 | } |
| 1542 | const auto& LocalSigInferHint4Ibn = |
| 1543 | [&](const std::string& ibn) -> Maybe<const LocalSigInferHint*> { |
| 1544 | const auto& iter = ibn2local_sig_infer_hint.find(ibn); |
| 1545 | CHECK_OR_RETURN(iter != ibn2local_sig_infer_hint.end()) << "input blob not found. ibn: " << ibn; |
| 1546 | return &iter->second; |
| 1547 | }; |
| 1548 | JUST(op->InferLocalSignatureIf(LocalSigInferHint4Ibn, is_local, parallel_desc)); |
| 1549 | return Maybe<void>::Ok(); |
| 1550 | } |
| 1551 | |
| 1552 | Maybe<void> CheckOpInputSignature(const Operator& op, const OpNodeSignature& upstream_signature) { |
| 1553 | for (const auto& ibn : op.input_bns()) { |
no test coverage detected