| 32 | } |
| 33 | |
| 34 | std::tuple<SmallVector<LogicalTensorDesc>, bool> infer_output_attrs_fallible( |
| 35 | const OpDef& def, const SmallVector<LogicalTensorDesc>& inputs) { |
| 36 | auto subgraph = def.trait()->make_forward_graph(def, inputs); |
| 37 | bool all_validated = true; |
| 38 | auto apply_functor = [&](const std::shared_ptr<OpDef>& op, |
| 39 | const SmallVector<LogicalTensorDesc>& inputs, |
| 40 | size_t nr_outputs) { |
| 41 | auto [outputs, validated] = OpDef::infer_output_attrs_fallible(*op, inputs); |
| 42 | all_validated = all_validated && validated; |
| 43 | return outputs; |
| 44 | }; |
| 45 | auto const_functor = [&](const TensorPtr& value) { |
| 46 | return LogicalTensorDesc{ |
| 47 | value->layout(), value->comp_node(), |
| 48 | value->get_value().proxy_to_default_cpu()}; |
| 49 | }; |
| 50 | auto outputs = |
| 51 | subgraph.apply<LogicalTensorDesc>(inputs, apply_functor, const_functor); |
| 52 | return {outputs, all_validated}; |
| 53 | } |
| 54 | |
| 55 | SmallVector<TensorPtr> apply_on_physical_tensor( |
| 56 | const OpDef& def, SmallVector<TensorPtr> inputs, |
no test coverage detected