blob: f2b78d128f1d7d32b469671a4a5a4690fab737f0 [file] [log] [blame]
Éanna Ó Catháin0de47122020-04-01 15:40:12 +01001//
Jan Eilers1f249442020-07-01 15:37:50 +01002// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
Éanna Ó Catháin0de47122020-04-01 15:40:12 +01003// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
Jim Flynnbbfe6032020-07-20 16:57:44 +01008#include <server/include/timelineDecoder/ITimelineDecoder.hpp>
Éanna Ó Catháin0de47122020-04-01 15:40:12 +01009
Rob Hughes9542f902021-07-14 09:48:54 +010010#include <armnnUtils/Filesystem.hpp>
Jim Flynn3e9bc192022-03-23 23:01:26 +000011
Éanna Ó Catháin0de47122020-04-01 15:40:12 +010012#include <map>
13#include <vector>
14
15namespace armnn
16{
17namespace timelinedecoder
18{
Jim Flynnbbfe6032020-07-20 16:57:44 +010019class JSONTimelineDecoder : public arm::pipe::ITimelineDecoder
Éanna Ó Catháin0de47122020-04-01 15:40:12 +010020{
21public:
22 struct JSONEntity
23 {
24 public:
25 std::vector<uint64_t> connected_entities;
26 std::vector<uint64_t> childEntities;
27
28 JSONEntity(uint64_t guid): m_Guid(guid){}
29 uint64_t GetGuid();
30 std::string GetName();
31 std::string GetType();
32 void SetName(std::string entityName);
33 void SetType(std::string entityType);
34 void SetParent(JSONEntity& parent);
35 void AddConnection(JSONEntity& headEntity, JSONEntity& connectedEntity);
36 std::map<std::string, std::string> extendedData;
37
38 private:
39 uint64_t m_Guid;
40 std::string name;
41 std::string type;
42 };
43
44 struct Model
45 {
46 std::map<uint64_t, JSONEntity> jsonEntities;
47 std::map<uint64_t, Relationship> relationships;
48 std::map<uint64_t, Label> labels;
49 std::map<uint64_t, Event> events;
50 std::map<uint64_t, EventClass> eventClasses;
51 };
52
Jan Eilers1f249442020-07-01 15:37:50 +010053 void PrintJSON(JSONEntity& entity, std::ostream& os);
Éanna Ó Catháin0de47122020-04-01 15:40:12 +010054 std::string GetJSONString(JSONEntity& rootEntity);
55 std::string GetJSONEntityString(JSONEntity& entity, int& counter);
56
57 virtual TimelineStatus CreateEntity(const Entity&) override;
58 virtual TimelineStatus CreateEventClass(const EventClass&) override;
59 virtual TimelineStatus CreateEvent(const Event&) override;
60 virtual TimelineStatus CreateLabel(const Label&) override;
61 virtual TimelineStatus CreateRelationship(const Relationship&) override;
62
63 const Model& GetModel();
Éanna Ó Catháin0de47122020-04-01 15:40:12 +010064
65private:
66 Model m_Model;
Éanna Ó Catháin0de47122020-04-01 15:40:12 +010067
68 void HandleRetentionLink(const Relationship& relationship);
69 void HandleLabelLink(const Relationship& relationship);
70 void HandleExecutionLink(const Relationship& relationship);
71 void HandleConnectionLabel(const Relationship& relationship);
72 void HandleBackendIdLabel(const Relationship& relationship);
73 void HandleNameLabel(const Relationship& relationship);
74 void HandleTypeLabel(const Relationship& relationship);
75
76 std::string GetLayerJSONString(JSONEntity& entity, int& counter, std::string& jsonEntityString);
77 std::string GetWorkloadJSONString(const JSONEntity& entity, int& counter, std::string& jsonEntityString);
78 std::string GetWorkloadExecutionJSONString(const JSONEntity& entity, std::string& jsonEntityString) const;
79};
80
81}
Jim Flynn3e9bc192022-03-23 23:01:26 +000082}