7 #include "../profiling/ProfilingUtils.hpp" 11 #include <boost/filesystem/fstream.hpp> 15 namespace timelinedecoder
18 static const char *
const CONNECTION =
"connection";
19 static const char *
const BACKEND_ID =
"backendId";
20 static const char *
const NAME =
"name";
21 static const char *
const TYPE =
"type";
22 static const char *
const WORKLOAD =
"workload";
23 static const char *
const WORKLOAD_EXECUTION =
"workload_execution";
24 static const char *
const INFERENCE =
"inference";
25 static const char *
const LAYER =
"layer";
26 static const char *
const ENTITY =
"Entity";
27 static const char *
const EVENTCLASS =
"EventClass";
28 static const char *
const EVENT =
"Event";
51 this->m_Model.
events.insert({
event.m_Guid,
event});
66 HandleRetentionLink(relationship);
70 HandleLabelLink(relationship);
74 HandleExecutionLink(relationship);
116 HandleConnectionLabel(relationship);
120 HandleBackendIdLabel(relationship);
124 HandleNameLabel(relationship);
128 HandleTypeLabel(relationship);
191 std::string backendName = m_Model.
labels.at(labelRelation.
m_TailGuid).m_Name;
192 headEntity.
extendedData.insert({BACKEND_ID, backendName});
228 tailJSONEntity.
SetParent(headJSONEntity);
249 boost::filesystem::ofstream ofs{this->outputJSONFile};
261 json.append(
"\tArmNN");
262 json.append(
": {\n");
276 std::string jsonEntityString;
279 return GetLayerJSONString(entity, counter, jsonEntityString);
281 else if (entity.
GetType() == WORKLOAD)
283 return GetWorkloadJSONString(entity, counter, jsonEntityString);
285 else if (entity.
GetType() == WORKLOAD_EXECUTION)
287 return GetWorkloadExecutionJSONString(entity, jsonEntityString);
289 else if (entity.
GetType() == INFERENCE)
291 return jsonEntityString;
300 return jsonEntityString;
305 std::string& jsonEntityString)
const 309 throw Exception(
"Workload Execution Entity Packet does not have the expected Event packets attached");
318 jsonEntityString.append(
"\t\t\t");
319 jsonEntityString.append(
"raw : [");
320 jsonEntityString.append(std::to_string(wall_clock_time));
321 jsonEntityString.append(
"], \n");
322 jsonEntityString.append(
"\t\t\t");
323 jsonEntityString.append(
"unit : us,\n");
324 jsonEntityString.append(
"\t\t\t");
325 jsonEntityString.append(
"}\n");
327 return jsonEntityString;
331 std::string& jsonEntityString)
333 jsonEntityString.append(
"\t\t\t");
334 jsonEntityString.append(
"backendId :");
335 jsonEntityString.append(entity.
extendedData.at(BACKEND_ID));
336 jsonEntityString.append(
",\n");
342 return jsonEntityString;
346 std::string& jsonEntityString)
348 jsonEntityString.append(
"\t\t");
349 jsonEntityString.append(entity.
GetName());
350 jsonEntityString.append(
"_");
351 jsonEntityString.append(std::to_string(counter));
352 jsonEntityString.append(
": {\n");
353 jsonEntityString.append(
"\t\t\t");
354 jsonEntityString.append(
"type: Measurement,\n");
360 return jsonEntityString;
365 std::vector<uint64_t>::iterator it = std::find(headEntity.
childEntities.begin(),
383 this->outputJSONFile = outgoingCaptureFile;
388 this->name = entityName;
398 this->type = entityType;
std::map< uint64_t, EventClass > eventClasses
std::vector< uint64_t > connected_entities
void SetType(std::string entityType)
Head retains(parents) Tail.
void AddConnection(JSONEntity &headEntity, JSONEntity &connectedEntity)
Copyright (c) 2020 ARM Limited.
std::map< uint64_t, JSONEntity > jsonEntities
void SetParent(JSONEntity &parent)
std::map< uint64_t, Event > events
std::vector< uint64_t > childEntities
void SetName(std::string entityName)
RelationshipType m_RelationshipType
void SetOutgoingCaptureFile(const std::string &basicString)
std::string GetJSONEntityString(JSONEntity &entity, int &counter)
virtual TimelineStatus CreateEntity(const Entity &) override
virtual TimelineStatus CreateEventClass(const EventClass &) override
std::string GetJSONString(JSONEntity &rootEntity)
std::map< uint64_t, Label > labels
Base class for all ArmNN exceptions so that users can filter to just those.
void PrintJSON(JSONEntity &entity)
std::map< uint64_t, Relationship > relationships
virtual TimelineStatus CreateLabel(const Label &) override
virtual TimelineStatus CreateEvent(const Event &) override
std::map< std::string, std::string > extendedData
virtual TimelineStatus CreateRelationship(const Relationship &) override