| 7 | |
| 8 | template <typename Op, typename... Args> |
| 9 | void check_rng_basic(Args&&... args) { |
| 10 | for (auto&& tshape : {TensorShape{2, 3, 4, 5}, {3, 4, 5, 6}, {2333}}) |
| 11 | for (auto&& cn : {CompNode::load("xpu0"), CompNode::load("xpu1")}) { |
| 12 | Handle h = new_handle(cn, 123); |
| 13 | auto op = Op::make(std::forward<Args>(args)..., h); |
| 14 | DeviceTensorND tshape_dev; |
| 15 | cg::copy_shape_to_tensor_value(tshape_dev, tshape); |
| 16 | SmallVector<TensorPtr> inputs = {Tensor::make(tshape_dev)}; |
| 17 | SmallVector<LogicalTensorDesc> input_descs; |
| 18 | input_descs.push_back( |
| 19 | {inputs[0]->layout(), inputs[0]->comp_node(), |
| 20 | inputs[0]->dev_tensor()}); |
| 21 | auto [output_descs, validated] = |
| 22 | OpDef::infer_output_attrs_fallible(*op, input_descs); |
| 23 | auto outputs = OpDef::apply_on_physical_tensor( |
| 24 | *op, inputs, output_descs, validated); |
| 25 | ASSERT_TRUE(outputs[0]->layout().eq_shape(tshape)); |
| 26 | ASSERT_TRUE(cn == outputs[0]->comp_node()); |
| 27 | // sync before delete handle |
| 28 | for (auto&& p : outputs) { |
| 29 | p->get_value(); |
| 30 | } |
| 31 | delete_handle(h); |
| 32 | } |
| 33 | } |
| 34 | |
| 35 | template <typename Op, typename... Args> |
| 36 | void check_rng_with_input_basic( |
nothing calls this directly
no test coverage detected