| 69 | using HostNDWithEvent = std::pair<HostTensorND, std::shared_ptr<CompNode::Event>>; |
| 70 | |
| 71 | std::vector<mgb::cg::VarNode*> _replace_vars( |
| 72 | const std::vector<mgb::cg::VarNode*>& repl_src, |
| 73 | const std::vector<mgb::cg::VarNode*>& repl_dst, |
| 74 | const std::vector<mgb::cg::VarNode*>& vars) { |
| 75 | mgb::ThinHashMap<SymbolVar, SymbolVar> varmap; |
| 76 | for (size_t i = 0; i < repl_src.size(); ++i) { |
| 77 | varmap[SymbolVar(repl_src[i])] = SymbolVar(repl_dst[i]); |
| 78 | } |
| 79 | SymbolVarArray symvars(vars.begin(), vars.end()); |
| 80 | auto sym_result = mgb::cg::replace_vars(symvars, varmap); |
| 81 | std::vector<mgb::cg::VarNode*> result; |
| 82 | for (auto symvar : sym_result) { |
| 83 | result.push_back(symvar.node()); |
| 84 | } |
| 85 | return result; |
| 86 | } |
| 87 | |
| 88 | typedef std::vector<mgb::cg::OperatorNodeBase*> OperatorArray; |
| 89 | std::vector<mgb::cg::VarNode*> _replace_oprs( |