diff options
Diffstat (limited to 'src/armnnSerializer')
-rw-r--r-- | src/armnnSerializer/ArmnnSchema.fbs | 9 | ||||
-rw-r--r-- | src/armnnSerializer/Serializer.cpp | 21 | ||||
-rw-r--r-- | src/armnnSerializer/Serializer.hpp | 15 |
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; |