| 176 | set_megdnn_opr(std::move(opr)); |
| 177 | } |
| 178 | void scn_do_execute() override { |
| 179 | auto to_dnnnd = [&](auto* var) { return var->dev_tensor().as_megdnn(); }; |
| 180 | megdnn::TensorNDArray inputs_dnnnd; |
| 181 | for (auto* input : input()) { |
| 182 | inputs_dnnnd.push_back(to_dnnnd(input)); |
| 183 | } |
| 184 | mgb_assert( |
| 185 | input(m_param.inplace_index) |
| 186 | ->contain_flag(VarNode::Flag::NO_SYS_MEM_ALLOC), |
| 187 | "ForceInplaceElemwise cannot be applied in internal tensor"); |
| 188 | auto* out_dest = output(0); |
| 189 | auto* opr = static_cast<megdnn::Elemwise*>(megdnn_opr()); |
| 190 | opr->exec(std::move(inputs_dnnnd), to_dnnnd(out_dest)); |
| 191 | } |
| 192 | void init_output_static_infer_desc() override { |
| 193 | using namespace cg::static_infer; |
| 194 |
nothing calls this directly
no test coverage detected