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

Method runAnalysisWithRandomInput

compiler/dalgona/src/Dalgona.cpp:184–261  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

182}
183
184void Dalgona::runAnalysisWithRandomInput(const std::string &analysis_path,
185 const std::string &analysis_args)
186{
187 py::object scope = py::module::import("__main__").attr("__dict__");
188 _hooks->importAnalysis(analysis_path, scope, analysis_args);
189
190 const auto input_nodes = loco::input_nodes(_module->graph());
191 const auto num_inputs = input_nodes.size();
192
193 for (uint32_t input_idx = 0; input_idx < num_inputs; input_idx++)
194 {
195 const auto *input_node = loco::must_cast<const luci::CircleInput *>(input_nodes[input_idx]);
196 assert(input_node->index() == input_idx);
197 checkInputDimension(input_node);
198
199 uint32_t num_elems = numElements(input_node);
200 switch (input_node->dtype())
201 {
202 case DataType::FLOAT32:
203 {
204 // Synced with record-minmax (-5,5)
205 auto input_data = genRandomFloatData(num_elems, -5, 5);
206 _interpreter->writeInputTensor(input_node, input_data.data(),
207 input_data.size() * sizeof(float));
208 break;
209 }
210 case DataType::U8:
211 {
212 auto input_data = genRandomIntData<uint8_t>(num_elems, std::numeric_limits<uint8_t>::min(),
213 std::numeric_limits<uint8_t>::max());
214 _interpreter->writeInputTensor(input_node, input_data.data(),
215 input_data.size() * sizeof(uint8_t));
216 break;
217 }
218 case DataType::S16:
219 {
220 auto input_data = genRandomIntData<int16_t>(num_elems, std::numeric_limits<int16_t>::min(),
221 std::numeric_limits<int16_t>::max());
222 _interpreter->writeInputTensor(input_node, input_data.data(),
223 input_data.size() * sizeof(int16_t));
224 break;
225 }
226 case DataType::S32:
227 {
228 // Synced with record-minmax (0, 100)
229 auto input_data = genRandomIntData<int32_t>(num_elems, 0, 100);
230 _interpreter->writeInputTensor(input_node, input_data.data(),
231 input_data.size() * sizeof(int32_t));
232 break;
233 }
234 case DataType::S64:
235 {
236 // Synced with record-minmax (0, 100)
237 auto input_data = genRandomIntData<int64_t>(num_elems, 0, 100);
238 _interpreter->writeInputTensor(input_node, input_data.data(),
239 input_data.size() * sizeof(int64_t));
240 break;
241 }

Callers 1

entryFunction · 0.80

Calls 15

input_nodesFunction · 0.85
genRandomFloatDataFunction · 0.85
attrMethod · 0.80
importAnalysisMethod · 0.80
writeInputTensorMethod · 0.80
startNetworkExecutionMethod · 0.80
endNetworkExecutionMethod · 0.80
endAnalysisMethod · 0.80
checkInputDimensionFunction · 0.70
numElementsFunction · 0.70
importFunction · 0.50
minFunction · 0.50

Tested by

no test coverage detected