SizeType m_NumDimMappings;
};
+namespace profiling { class ProfilingGuid; }
+
/// Define LayerGuid type.
-using LayerGuid = unsigned int;
+using LayerGuid = profiling::ProfilingGuid;
class ITensorHandle;
return hash<uint64_t>()(uint64_t(guid));
}
};
-}
+} // namespace std
#include "Layer.hpp"
#include "Graph.hpp"
+#include <ProfilingService.hpp>
#include <backendsCommon/WorkloadData.hpp>
#include <backendsCommon/CpuTensorHandle.hpp>
return m_EdgeStrategies[connectionIdx];
}
-namespace {
-LayerGuid GenerateLayerGuid()
-{
- // Note: Not thread safe.
- static LayerGuid newGuid=0;
- return newGuid++;
-}
-} // namespace
-
Layer::Layer(unsigned int numInputSlots,
unsigned int numOutputSlots,
LayerType type,
, m_LayerName(name ? name : "")
, m_Type(type)
, m_BackendId()
-, m_Guid(GenerateLayerGuid())
+, m_Guid(profiling::ProfilingService::Instance().NextGuid())
{
m_InputSlots.reserve(numInputSlots);
for (unsigned int i = 0; i < numInputSlots; ++i)
void QuantizerVisitor::RecordLayer(const IConnectableLayer* srcLayer, IConnectableLayer* quantizedLayer)
{
- m_OriginalToQuantizedGuidMap[srcLayer->GetGuid()] = quantizedLayer->GetGuid();
- m_QuantizedGuidToLayerMap[quantizedLayer->GetGuid()] = quantizedLayer;
+ m_OriginalToQuantizedGuidMap.insert(std::make_pair(srcLayer->GetGuid(), quantizedLayer->GetGuid()));
+ m_QuantizedGuidToLayerMap.insert(std::make_pair(quantizedLayer->GetGuid(), quantizedLayer));
}
void QuantizerVisitor::VisitAbsLayer(const IConnectableLayer* layer, const char* name)
}
}
-uint32_t SerializerVisitor::GetSerializedId(unsigned int guid)
+uint32_t SerializerVisitor::GetSerializedId(armnn::LayerGuid guid)
{
- std::pair<unsigned int, uint32_t> guidPair(guid, m_layerId);
-
if (m_guidMap.empty())
{
- m_guidMap.insert(guidPair);
+ m_guidMap.insert(std::make_pair(guid, m_layerId));
}
else if (m_guidMap.find(guid) == m_guidMap.end())
{
- guidPair.second = ++m_layerId;
- m_guidMap.insert(guidPair);
+ ++m_layerId;
+ m_guidMap.insert(std::make_pair(guid, m_layerId));
+
return m_layerId;
}
return m_guidMap[guid];
auto flatBufferInputBindableBaseLayer = serializer::CreateBindableLayerBase(m_flatBufferBuilder,
flatBufferInputBaseLayer,
id);
- // Push layer Guid to outputIds.
+ // Push layer index to outputIds.
m_inputIds.push_back(GetSerializedId(layer->GetGuid()));
// Create the FlatBuffer InputLayer
auto flatBufferOutputBindableBaseLayer = serializer::CreateBindableLayerBase(m_flatBufferBuilder,
flatBufferOutputBaseLayer,
id);
- // Push layer Guid to outputIds.
+ // Push layer index to outputIds.
m_outputIds.push_back(GetSerializedId(layer->GetGuid()));
// Create the FlatBuffer OutputLayer
#include <ArmnnSchema_generated.h>
+#include <armnn/Types.hpp>
+
namespace armnnSerializer
{
return m_flatBufferBuilder;
}
- std::vector<unsigned int>& GetInputIds()
+ std::vector<uint32_t>& GetInputIds()
{
return m_inputIds;
}
- std::vector<unsigned int>& GetOutputIds()
+ std::vector<uint32_t>& GetOutputIds()
{
return m_outputIds;
}
flatbuffers::Offset<flatbuffers::Vector<T>> CreateDataVector(const void* memory, unsigned int size);
///Function which maps Guid to an index
- uint32_t GetSerializedId(unsigned int guid);
+ uint32_t GetSerializedId(armnn::LayerGuid guid);
/// Creates the serializer InputSlots for the layer.
std::vector<flatbuffers::Offset<armnnSerializer::InputSlot>> CreateInputSlots(
/// AnyLayers required by the SerializedGraph.
std::vector<flatbuffers::Offset<armnnSerializer::AnyLayer>> m_serializedLayers;
- /// Guids of all Input Layers required by the SerializedGraph.
- std::vector<unsigned int> m_inputIds;
+ /// Vector of indexes of all Input Layers required by the SerializedGraph.
+ std::vector<uint32_t> m_inputIds;
- /// Guids of all Output Layers required by the SerializedGraph.
- std::vector<unsigned int> m_outputIds;
+ /// Vector of indexes of all Output Layers required by the SerializedGraph.
+ std::vector<uint32_t> m_outputIds;
/// Mapped Guids of all Layers to match our index.
- std::unordered_map<unsigned int, uint32_t > m_guidMap;
+ std::unordered_map<armnn::LayerGuid, uint32_t > m_guidMap;
/// layer within our FlatBuffer index.
uint32_t m_layerId;
return *this;
}
-DotEdge::DotEdge(std::ostream& stream, unsigned int fromNodeId, unsigned int toNodeId)
+DotEdge::DotEdge(std::ostream& stream, LayerGuid fromNodeId, LayerGuid toNodeId)
: DotBase(stream)
{
std::stringstream ss;
GetStream() << s;
}
-DotNode::DotNode(std::ostream& stream, unsigned int nodeId, const char* label)
+DotNode::DotNode(std::ostream& stream, LayerGuid nodeId, const char* label)
: DotBase(stream)
{
std::stringstream ss;
#pragma once
+#include <armnn/Types.hpp>
+
#include <ostream>
#include <vector>
#include <memory>
class DotEdge : public DotBase
{
public:
- explicit DotEdge(std::ostream& stream, unsigned int fromNodeId, unsigned int toNodeId);
+ explicit DotEdge(std::ostream& stream, LayerGuid fromNodeId, LayerGuid toNodeId);
~DotEdge();
DotAttributeSet& GetAttributeSet() { return *m_Attributes.get(); }
class DotNode : public DotBase
{
public:
- explicit DotNode(std::ostream& stream, unsigned int nodeId, const char* label);
+ explicit DotNode(std::ostream& stream, LayerGuid nodeId, const char* label);
~DotNode();
NodeContent& GetContents() { return *m_Contents.get(); }
struct DebugQueueDescriptor : QueueDescriptor
{
+ DebugQueueDescriptor() : m_Guid(0) {}
+
void Validate(const WorkloadInfo& workloadInfo) const;
LayerGuid m_Guid;
{
case LayerType::Input:
++m_inputLayerCount;
- if (layer->GetGuid() == 0)
+ if (layer->GetGuid() == profiling::ProfilingGuid(0))
{
BOOST_TEST(layer->GetName() == "inLayer0");
}
- else if (layer->GetGuid() == 1)
+ else if (layer->GetGuid() == profiling::ProfilingGuid(1))
{
BOOST_TEST(layer->GetName() == "inLayer1");
}