MCPcopy Create free account
hub / github.com/Samsung/ONE / interpret

Function interpret

compiler/circle-eval-diff/src/CircleEvalDiff.cpp:109–140  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

107{
108
109std::vector<std::shared_ptr<Tensor>> interpret(const luci::Module *module,
110 const InputDataLoader::Data &data)
111{
112 auto interpreter = std::make_unique<luci_interpreter::Interpreter>(module);
113
114 auto input_nodes = ::inputs_of(module);
115 auto output_nodes = ::outputs_of(module);
116
117 for (uint32_t input_idx = 0; input_idx < data.size(); input_idx++)
118 {
119 auto input_node = loco::must_cast<const luci::CircleInput *>(input_nodes[input_idx]);
120 assert(input_node->index() == input_idx);
121
122 auto input_data = data.at(input_idx);
123 interpreter->writeInputTensor(input_node, input_data.buffer(), input_data.byte_size());
124 }
125
126 interpreter->interpret();
127
128 std::vector<std::shared_ptr<Tensor>> outputs;
129 for (uint32_t output_idx = 0; output_idx < output_nodes.size(); output_idx++)
130 {
131 auto output_node = loco::must_cast<const luci::CircleOutput *>(output_nodes[output_idx]);
132 assert(output_node->index() == output_idx);
133
134 auto tensor = createEmptyTensor(output_node);
135 interpreter->readOutputTensor(output_node, tensor->buffer(), tensor->byte_size());
136 outputs.emplace_back(tensor);
137 }
138
139 return outputs;
140}
141
142CircleEvalDiff::CircleEvalDiff(std::unique_ptr<Context> &&ctx) : _ctx(std::move(ctx))
143{

Callers 1

evalDiffMethod · 0.85

Calls 12

inputs_ofFunction · 0.85
outputs_ofFunction · 0.85
createEmptyTensorFunction · 0.85
writeInputTensorMethod · 0.80
byte_sizeMethod · 0.80
sizeMethod · 0.45
indexMethod · 0.45
atMethod · 0.45
bufferMethod · 0.45
interpretMethod · 0.45
readOutputTensorMethod · 0.45
emplace_backMethod · 0.45

Tested by

no test coverage detected