| 8 | MGB_DYN_TYPE_OBJ_FINAL_IMPL(CustomOpNode); |
| 9 | |
| 10 | void CustomOpNode::infer_output_comp_node(void) { |
| 11 | SmallVector<CompNode> input_comp_nodes(input_num()); |
| 12 | for (size_t i = 0; i < input_num(); ++i) { |
| 13 | input_comp_nodes[i] = input(i)->comp_node(); |
| 14 | } |
| 15 | |
| 16 | SmallVector<CompNode> output_comp_nodes = |
| 17 | custom::to_builtin<CompNode, custom::Device>(m_op->infer_output_device( |
| 18 | custom::to_custom<CompNode, custom::Device>(input_comp_nodes), |
| 19 | m_param)); |
| 20 | |
| 21 | for (size_t i = 0; i < output_num(); ++i) { |
| 22 | mgb_assert( |
| 23 | output_comp_nodes[i] == output_comp_nodes[0], |
| 24 | "only single comp node operator is supported"); |
| 25 | output(i)->comp_node(output_comp_nodes[i]); |
| 26 | } |
| 27 | |
| 28 | m_comp_node = output_comp_nodes[0]; |
| 29 | } |
| 30 | |
| 31 | void CustomOpNode::infer_output_dtype(void) { |
| 32 | SmallVector<DType> input_dtypes(input_num()); |
nothing calls this directly
no test coverage detected