IVGCVSW-7104: BatchMatMul Serializer/Deserializer Support
* Updated FlatBuffers schema for BatchMatMul layer type
* Added Serializer and Deserializer implementations for BatchMatMul
* Added unit tests for BatchMatMul serialization and deserialization
* Updated CMakeLists and docs
Signed-off-by: Samuel Yap <samuel.yap@arm.com>
Change-Id: Iad63afbd036a3eb648683eb7416a475561aa20cb
diff --git a/src/armnnSerializer/Serializer.cpp b/src/armnnSerializer/Serializer.cpp
index 488dac6..c9a3022 100644
--- a/src/armnnSerializer/Serializer.cpp
+++ b/src/armnnSerializer/Serializer.cpp
@@ -218,6 +218,33 @@
CreateAnyLayer(flatBufferLayer.o, serializer::Layer::Layer_ArgMinMaxLayer);
}
+void SerializerStrategy::SerializeBatchMatMulLayer(const armnn::IConnectableLayer* layer,
+ const armnn::BatchMatMulDescriptor& descriptor,
+ const char* name)
+{
+ IgnoreUnused(name);
+
+ // Create FlatBuffer BaseLayer
+ auto flatBufferBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_BatchMatMul);
+
+ // Create the FlatBuffer BatchMatMulDescriptor
+ auto flatBufferDescriptor = CreateBatchMatMulDescriptor(m_flatBufferBuilder,
+ descriptor.m_TransposeX,
+ descriptor.m_TransposeY,
+ descriptor.m_AdjointX,
+ descriptor.m_AdjointY,
+ GetFlatBufferDataLayout(descriptor.m_DataLayoutX),
+ GetFlatBufferDataLayout(descriptor.m_DataLayoutY));
+
+ // Create the FlatBuffer BatchMatMulLayer
+ auto flatBufferBatchMatMulLayer = CreateBatchMatMulLayer(m_flatBufferBuilder,
+ flatBufferBaseLayer,
+ flatBufferDescriptor);
+
+ // Add the AnyLayer to the FlatBufferLayers
+ CreateAnyLayer(flatBufferBatchMatMulLayer.o, serializer::Layer::Layer_BatchMatMulLayer);
+}
+
// Build FlatBuffer for BatchToSpaceNd Layer
void SerializerStrategy::SerializeBatchToSpaceNdLayer(const armnn::IConnectableLayer* layer,
const armnn::BatchToSpaceNdDescriptor& descriptor,
@@ -1971,6 +1998,15 @@
SerializeArgMinMaxLayer(layer, layerDescriptor, name);
break;
}
+ case armnn::LayerType::BatchMatMul:
+ {
+ const armnn::BatchMatMulDescriptor& layerDescriptor =
+ static_cast<const armnn::BatchMatMulDescriptor&>(descriptor);
+ SerializeBatchMatMulLayer(layer,
+ layerDescriptor,
+ name);
+ break;
+ }
case armnn::LayerType::BatchNormalization :
{
const armnn::BatchNormalizationDescriptor& layerDescriptor =