| 45 | } |
| 46 | |
| 47 | void AddLayerStructure(std::unique_ptr<TimelineUtilityMethods>& timelineUtils, |
| 48 | const Layer& layer, |
| 49 | ProfilingGuid networkGuid) |
| 50 | { |
| 51 | // Add layer to the post-optimisation network structure |
| 52 | std::string layerName = layer.GetNameStr().empty() ? "<Unnamed>" : layer.GetNameStr(); |
| 53 | timelineUtils->CreateNamedTypedChildEntity(layer.GetGuid(), |
| 54 | networkGuid, |
| 55 | layerName, |
| 56 | LabelsAndEventClasses::LAYER_GUID); |
| 57 | for (auto&& input : layer.GetInputSlots()) |
| 58 | { |
| 59 | const IOutputSlot* source = input.GetConnectedOutputSlot(); |
| 60 | if (!source) |
| 61 | { |
| 62 | throw armnn::NullPointerException("Null source found on input to layer \"" + layerName + "\"."); |
| 63 | } |
| 64 | timelineUtils->CreateConnectionRelationship(ProfilingRelationshipType::RetentionLink, |
| 65 | source->GetOwningLayerGuid(), |
| 66 | layer.GetGuid()); |
| 67 | } |
| 68 | } |
| 69 | |
| 70 | void AddWorkloadStructure(std::unique_ptr<TimelineUtilityMethods>& timelineUtils, |
| 71 | std::unique_ptr<IWorkload>& workload, |
no test coverage detected