MCPcopy Create free account
hub / github.com/MegEngine/MegCC / TEST

Function TEST

runtime/test/instruction/setsubtensor.cpp:7–162  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5using namespace test;
6
7TEST(INSTRUCTION, SetSubTensorTest) {
8 std::vector<Instruction> insts;
9 std::vector<std::shared_ptr<Tensor>> in_tensors;
10 std::vector<std::shared_ptr<Tensor>> out_tensors;
11 std::vector<Tensor*> inputs;
12
13 //! input shape =[20, 20, 20]
14 std::vector<float> data(20 * 20 * 20);
15 for (size_t i = 0; i < 20 * 20 * 20; i++) {
16 data[i] = i;
17 }
18 auto src_tensor = create_tensor({20, 20, 20}, TinyNN_FLOAT, data.data());
19
20 //! input shape =[20, 20, 20]
21 std::vector<float> data_ret(20 * 20 * 20);
22 for (size_t i = 0; i < 20 * 20 * 20; i++) {
23 data_ret[i] = i;
24 }
25 auto result_tensor = create_tensor({20, 20, 20}, TinyNN_FLOAT, data_ret.data());
26
27 auto create_setsubtensor = [&](Tensor* value, IndexDesc* index, IndexDesc* flag,
28 std::vector<uint32_t> scaler_value = {}) {
29 auto subtensor = std::make_shared<SubTensor>();
30 inputs.clear();
31 inputs.push_back(src_tensor.get());
32 inputs.push_back(value);
33 if (flag->start == 1) {
34 in_tensors.push_back(create_scalar_tensor(scaler_value[0], TinyNN_INT));
35 inputs.push_back(in_tensors.back().get());
36 scaler_value.erase(scaler_value.begin());
37 }
38 if (flag->end == 1) {
39 in_tensors.push_back(create_scalar_tensor(scaler_value[0], TinyNN_INT));
40 inputs.push_back(in_tensors.back().get());
41 scaler_value.erase(scaler_value.begin());
42 }
43 if (flag->step == 1) {
44 in_tensors.push_back(create_scalar_tensor(scaler_value[0], TinyNN_INT));
45 inputs.push_back(in_tensors.back().get());
46 scaler_value.erase(scaler_value.begin());
47 }
48 if (flag->index == 1) {
49 in_tensors.push_back(create_scalar_tensor(scaler_value[0], TinyNN_INT));
50 inputs.push_back(in_tensors.back().get());
51 scaler_value.erase(scaler_value.begin());
52 }
53 auto output = std::make_shared<Tensor>();
54 output->is_dynamic = true;
55 out_tensors.push_back(output);
56
57 subtensor->nr_descs = 1;
58 subtensor->descs = index;
59 subtensor->flags = flag;
60
61 subtensor->nr_input = inputs.size();
62 subtensor->inputs = inputs.data();
63 subtensor->output = out_tensors.back().get();
64 return subtensor;

Callers

nothing calls this directly

Calls 5

create_scalar_tensorFunction · 0.85
vm_instruction_callFunction · 0.85
clearMethod · 0.45
getMethod · 0.45
freeMethod · 0.45

Tested by

no test coverage detected