MCPcopy Create free account
hub / github.com/ARM-software/armnn / ExtractJsonObjects

Function ExtractJsonObjects

src/armnn/Profiling.cpp:314–393  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

312}
313
314void ExtractJsonObjects(unsigned int inferenceIndex,
315 const Event* parentEvent,
316 JsonChildObject& parentObject,
317 std::map<const Event*, std::vector<const Event*>> descendantsMap)
318{
319 ARMNN_THROW_INVALIDARG_MSG_IF_FALSE(parentEvent, "parentEvent must not be null.");
320
321 // If profiling GUID is entered, process it
322 if (parentEvent->GetProfilingGuid().has_value())
323 {
324 arm::pipe::ProfilingGuid profilingGuid;
325 profilingGuid = parentEvent->GetProfilingGuid().value();
326 parentObject.SetGuid(profilingGuid);
327 }
328 std::vector<Measurement> instrumentMeasurements = parentEvent->GetMeasurements();
329 unsigned int childIdx = 0;
330 unsigned int numSkippedKernels = 0;
331 if (inferenceIndex > 0)
332 {
333 for (auto &i: parentEvent->GetInstruments())
334 {
335 if (i->HasKernelMeasurements())
336 {
337 numSkippedKernels = static_cast<unsigned int>(parentObject.m_Children.size() -
338 instrumentMeasurements.size());
339 childIdx = numSkippedKernels;
340 }
341 }
342 }
343
344 for (size_t measurementIndex = 0; measurementIndex < instrumentMeasurements.size(); ++measurementIndex, ++childIdx)
345 {
346 if (inferenceIndex == 0)
347 {
348 // Only add kernel measurement once, in case of multiple inferences
349 JsonChildObject measurementObject{ instrumentMeasurements[measurementIndex].m_Name };
350 measurementObject.SetUnit(instrumentMeasurements[measurementIndex].m_Unit);
351 measurementObject.SetType(JsonObjectType::Measurement);
352
353 if (parentObject.NumChildren() != childIdx)
354 {
355 throw armnn::Exception("parentObject must have the same number of children as childIdx.");
356 }
357 parentObject.AddChild(measurementObject);
358 }
359 else
360 {
361 if (numSkippedKernels > 0)
362 {
363 parentObject.GetChild(--numSkippedKernels).AddMeasurement(0.0);
364 }
365 }
366
367 parentObject.GetChild(childIdx).AddMeasurement(instrumentMeasurements[measurementIndex].m_Value);
368 }
369
370 auto childEventsIt = descendantsMap.find(parentEvent);
371 if (childEventsIt != descendantsMap.end())

Callers 1

PrintMethod · 0.85

Calls 15

GetProfilingGuidMethod · 0.80
SetUnitMethod · 0.80
NumChildrenMethod · 0.80
AddMeasurementMethod · 0.80
ExceptionClass · 0.50
has_valueMethod · 0.45
valueMethod · 0.45
SetGuidMethod · 0.45
GetMeasurementsMethod · 0.45
HasKernelMeasurementsMethod · 0.45
sizeMethod · 0.45
SetTypeMethod · 0.45

Tested by

no test coverage detected