| 87 | } |
| 88 | |
| 89 | void apply_on_device_tensornd( |
| 90 | const OpDef& def, const SmallVector<DeviceTensorND>& inputs, |
| 91 | SmallVector<DeviceTensorND>* outputs) { |
| 92 | auto&& op_def = def.cast_final_safe<Elemwise>(); |
| 93 | auto&& trait = megdnn::Elemwise::ModeTrait::from_mode(op_def.mode); |
| 94 | mgb_assert( |
| 95 | inputs.size() == trait.arity, "%s expects %u inputs; got %zu actually", |
| 96 | trait.name, trait.arity, inputs.size()); |
| 97 | DnnOprCaller<megdnn::Elemwise> dnn_opr(inputs[0].comp_node(), {op_def.mode}); |
| 98 | opr::Elemwise::perform(op_def.mode, (*outputs)[0], inputs, dnn_opr.op()); |
| 99 | } |
| 100 | |
| 101 | SmallVector<TensorPtr> apply_on_physical_tensor( |
| 102 | const OpDef& def, const SmallVector<TensorPtr>& inputs, |
no test coverage detected