aboutsummaryrefslogtreecommitdiff
path: root/src/armnnSerializer/Serializer.cpp
diff options
context:
space:
mode:
authorJim Flynn <jim.flynn@arm.com>2019-02-28 10:40:49 +0000
committerJim Flynn <jim.flynn@arm.com>2019-03-07 15:43:47 +0000
commitac25a1beda8da71a82c0cf2795e2a6eaaeaa26b1 (patch)
tree2f186eac90aa72f224bd0eccaee3cffa83dea164 /src/armnnSerializer/Serializer.cpp
parentd469faf863f4ecd3ba56f27e51884ef0dfeac7bf (diff)
downloadarmnn-ac25a1beda8da71a82c0cf2795e2a6eaaeaa26b1.tar.gz
IVGCVSW-2697 Add Serialize/Deserialize for the Merger Layer
* Force generation of schema header in every build * Also fixed typo in OriginsDescriptor comment (Descriptors.hpp) * Added Serialize/Deserialize check on Addition Layer * Added Serialize/Deserialize check on Floor Layer * Added Serialize/Deserialize check on Minimum Layer * Added Serialize/Deserialize check on Maximum Layer * Added Serialize/Deserialize check on Multiplication Layer * Added Serialize/Deserialize check on Division Layer Change-Id: I1358ea4db7ca506d8bcec2ee64e1fbad6005e723 Signed-off-by: Jim Flynn <jim.flynn@arm.com>
Diffstat (limited to 'src/armnnSerializer/Serializer.cpp')
-rw-r--r--src/armnnSerializer/Serializer.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/armnnSerializer/Serializer.cpp b/src/armnnSerializer/Serializer.cpp
index 56c4281a87..3b71e5fc7d 100644
--- a/src/armnnSerializer/Serializer.cpp
+++ b/src/armnnSerializer/Serializer.cpp
@@ -361,6 +361,39 @@ void SerializerVisitor::VisitMinimumLayer(const armnn::IConnectableLayer* layer,
CreateAnyLayer(fbMinimumLayer.o, serializer::Layer::Layer_MinimumLayer);
}
+void SerializerVisitor::VisitMergerLayer(const armnn::IConnectableLayer* layer,
+ const armnn::OriginsDescriptor& mergerDescriptor,
+ const char* name)
+{
+ auto flatBufferMergerBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Merger);
+
+ std::vector<flatbuffers::Offset<UintVector>> views;
+ for (unsigned int v = 0; v < mergerDescriptor.GetNumViews(); ++v)
+ {
+ const uint32_t* origin = mergerDescriptor.GetViewOrigin(v);
+ std::vector<uint32_t> origins;
+ for (unsigned int d = 0; d < mergerDescriptor.GetNumDimensions(); ++d)
+ {
+ origins.push_back(origin[d]);
+ }
+ auto view = m_flatBufferBuilder.CreateVector(origins);
+ auto uintVector = CreateUintVector(m_flatBufferBuilder, view);
+ views.push_back(uintVector);
+ }
+
+ auto flatBufferMergerDescriptor = CreateOriginsDescriptor(m_flatBufferBuilder,
+ mergerDescriptor.GetConcatAxis(),
+ mergerDescriptor.GetNumViews(),
+ mergerDescriptor.GetNumDimensions(),
+ m_flatBufferBuilder.CreateVector(views));
+
+ auto flatBufferLayer = CreateMergerLayer(m_flatBufferBuilder,
+ flatBufferMergerBaseLayer,
+ flatBufferMergerDescriptor);
+
+ CreateAnyLayer(flatBufferLayer.o, serializer::Layer::Layer_MergerLayer);
+}
+
void SerializerVisitor::VisitMultiplicationLayer(const armnn::IConnectableLayer* layer, const char* name)
{
auto fbMultiplicationBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Multiplication);