aboutsummaryrefslogtreecommitdiff
path: root/src/armnnSerializer
diff options
context:
space:
mode:
Diffstat (limited to 'src/armnnSerializer')
-rw-r--r--src/armnnSerializer/ArmnnSchema.fbs9
-rw-r--r--src/armnnSerializer/Serializer.cpp21
-rw-r--r--src/armnnSerializer/Serializer.hpp15
3 files changed, 32 insertions, 13 deletions
diff --git a/src/armnnSerializer/ArmnnSchema.fbs b/src/armnnSerializer/ArmnnSchema.fbs
index 0f8a816093..be6616d1e9 100644
--- a/src/armnnSerializer/ArmnnSchema.fbs
+++ b/src/armnnSerializer/ArmnnSchema.fbs
@@ -826,11 +826,16 @@ table AnyLayer {
layer:Layer;
}
+table FeatureCompatibilityVersions {
+ bindingIdsScheme:uint = 0;
+}
+
// Root type for serialized data is the graph of the network
table SerializedGraph {
layers:[AnyLayer];
- inputIds:[uint];
- outputIds:[uint];
+ inputIds:[int];
+ outputIds:[int];
+ featureVersions:FeatureCompatibilityVersions;
}
root_type SerializedGraph;
diff --git a/src/armnnSerializer/Serializer.cpp b/src/armnnSerializer/Serializer.cpp
index 13ea0f04a9..b43f26c652 100644
--- a/src/armnnSerializer/Serializer.cpp
+++ b/src/armnnSerializer/Serializer.cpp
@@ -91,8 +91,8 @@ void SerializerVisitor::VisitInputLayer(const armnn::IConnectableLayer* layer, L
auto flatBufferInputBindableBaseLayer = serializer::CreateBindableLayerBase(m_flatBufferBuilder,
flatBufferInputBaseLayer,
id);
- // Push layer index to outputIds.
- m_inputIds.push_back(GetSerializedId(layer->GetGuid()));
+ // Push layer binding id to outputIds.
+ m_inputIds.push_back(id);
// Create the FlatBuffer InputLayer
auto flatBufferInputLayer = serializer::CreateInputLayer(m_flatBufferBuilder, flatBufferInputBindableBaseLayer);
@@ -113,8 +113,8 @@ void SerializerVisitor::VisitOutputLayer(const armnn::IConnectableLayer* layer,
auto flatBufferOutputBindableBaseLayer = serializer::CreateBindableLayerBase(m_flatBufferBuilder,
flatBufferOutputBaseLayer,
id);
- // Push layer index to outputIds.
- m_outputIds.push_back(GetSerializedId(layer->GetGuid()));
+ // Push layer binding id to outputIds.
+ m_outputIds.push_back(id);
// Create the FlatBuffer OutputLayer
auto flatBufferOutputLayer = serializer::CreateOutputLayer(m_flatBufferBuilder, flatBufferOutputBindableBaseLayer);
@@ -1449,6 +1449,16 @@ flatbuffers::Offset<serializer::ConstTensor>
return flatBufferConstTensor;
}
+flatbuffers::Offset<armnnSerializer::FeatureCompatibilityVersions> SerializerVisitor::GetVersionTable()
+{
+ flatbuffers::Offset<armnnSerializer::FeatureCompatibilityVersions> versionsTable =
+ serializer::CreateFeatureCompatibilityVersions(
+ m_flatBufferBuilder,
+ 1 // Binding ids scheme version
+ );
+ return versionsTable;
+}
+
std::vector<fb::Offset<serializer::InputSlot>>
SerializerVisitor::CreateInputSlots(const armnn::IConnectableLayer* layer)
{
@@ -1531,7 +1541,8 @@ void Serializer::Serialize(const INetwork& inNetwork)
fbBuilder,
fbBuilder.CreateVector(m_SerializerVisitor.GetSerializedLayers()),
fbBuilder.CreateVector(m_SerializerVisitor.GetInputIds()),
- fbBuilder.CreateVector(m_SerializerVisitor.GetOutputIds()));
+ fbBuilder.CreateVector(m_SerializerVisitor.GetOutputIds()),
+ m_SerializerVisitor.GetVersionTable());
// Serialize the graph
fbBuilder.Finish(serializedGraph);
diff --git a/src/armnnSerializer/Serializer.hpp b/src/armnnSerializer/Serializer.hpp
index d92c93d46c..14d2776147 100644
--- a/src/armnnSerializer/Serializer.hpp
+++ b/src/armnnSerializer/Serializer.hpp
@@ -29,12 +29,12 @@ public:
return m_flatBufferBuilder;
}
- std::vector<uint32_t>& GetInputIds()
+ std::vector<int>& GetInputIds()
{
return m_inputIds;
}
- std::vector<uint32_t>& GetOutputIds()
+ std::vector<int>& GetOutputIds()
{
return m_outputIds;
}
@@ -44,6 +44,9 @@ public:
return m_serializedLayers;
}
+ flatbuffers::Offset<armnnSerializer::FeatureCompatibilityVersions> GetVersionTable();
+
+
ARMNN_DEPRECATED_MSG("Use VisitElementwiseUnaryLayer instead")
void VisitAbsLayer(const armnn::IConnectableLayer* layer,
const char* name = nullptr) override;
@@ -301,11 +304,11 @@ private:
/// AnyLayers required by the SerializedGraph.
std::vector<flatbuffers::Offset<armnnSerializer::AnyLayer>> m_serializedLayers;
- /// Vector of indexes of all Input Layers required by the SerializedGraph.
- std::vector<uint32_t> m_inputIds;
+ /// Vector of the binding ids of all Input Layers required by the SerializedGraph.
+ std::vector<int> m_inputIds;
- /// Vector of indexes of all Output Layers required by the SerializedGraph.
- std::vector<uint32_t> m_outputIds;
+ /// Vector of the binding ids of all Output Layers required by the SerializedGraph.
+ std::vector<int> m_outputIds;
/// Mapped Guids of all Layers to match our index.
std::unordered_map<armnn::LayerGuid, uint32_t > m_guidMap;