aboutsummaryrefslogtreecommitdiff
path: root/src/backends/reference/test
diff options
context:
space:
mode:
authorJames Conroy <james.conroy@arm.com>2020-04-29 20:01:10 +0100
committerJames Conroy <james.conroy@arm.com>2020-05-02 16:44:33 +0000
commit4f1f899da140bb0490cf7e404daeaf1206f4db8b (patch)
treedc6d1215440e0efa677d47a4b944882d72e12cc9 /src/backends/reference/test
parent56e1a5f68213c9134826ad14c6e1fb4c0d41fb46 (diff)
downloadarmnn-4f1f899da140bb0490cf7e404daeaf1206f4db8b.tar.gz
IVGCVSW-4449 Add QLstm ref implementation
* Adds ref implemenation for new HAL 1.3 operator, QLstm. * Adds Layer and CreateWorkload unit tests. * Adds WorkloadData validate for QLstm. Signed-off-by: James Conroy <james.conroy@arm.com> Change-Id: I8a721f07ff06105e6495a1a0561b9503aa8146dc
Diffstat (limited to 'src/backends/reference/test')
-rw-r--r--src/backends/reference/test/RefCreateWorkloadTests.cpp29
-rw-r--r--src/backends/reference/test/RefLayerTests.cpp3
2 files changed, 32 insertions, 0 deletions
diff --git a/src/backends/reference/test/RefCreateWorkloadTests.cpp b/src/backends/reference/test/RefCreateWorkloadTests.cpp
index 4a57df7d6a..437366a753 100644
--- a/src/backends/reference/test/RefCreateWorkloadTests.cpp
+++ b/src/backends/reference/test/RefCreateWorkloadTests.cpp
@@ -1089,4 +1089,33 @@ BOOST_AUTO_TEST_CASE(CreateStackUint16Workload)
RefCreateStackWorkloadTest<armnn::DataType::QSymmS16>({ 3, 4, 5 }, { 3, 4, 2, 5 }, 2, 2);
}
+template <typename QLstmWorkloadType>
+static void RefCreateQLstmWorkloadTest()
+{
+ Graph graph;
+ RefWorkloadFactory factory;
+
+ auto workload = CreateQLstmWorkloadTest<QLstmWorkloadType>(factory, graph);
+
+ armnn::TensorInfo inputInfo({2 , 4}, armnn::DataType::QAsymmS8, 0.0078125f, 0);
+
+ armnn::TensorInfo cellStateInfo({2 , 4}, armnn::DataType::QSymmS16, 3.05176e-05f, 0);
+
+ armnn::TensorInfo outputInfo({2 , 4}, armnn::DataType::QAsymmS8, 0.007f, 0);
+
+ QLstmQueueDescriptor queueDescriptor = workload->GetData();
+ auto inputHandle = boost::polymorphic_downcast<RefTensorHandle*>(queueDescriptor.m_Inputs[0]);
+ auto cellStateOutHandle = boost::polymorphic_downcast<RefTensorHandle*>(queueDescriptor.m_Outputs[1]);
+ auto outputHandle = boost::polymorphic_downcast<RefTensorHandle*>(queueDescriptor.m_Outputs[2]);
+
+ BOOST_TEST((inputHandle->GetTensorInfo() == inputInfo));
+ BOOST_TEST((cellStateOutHandle->GetTensorInfo() == cellStateInfo));
+ BOOST_TEST((outputHandle->GetTensorInfo() == outputInfo));
+}
+
+BOOST_AUTO_TEST_CASE(CreateQLstmWorkloadTest)
+{
+ RefCreateQLstmWorkloadTest<RefQLstmWorkload>();
+}
+
BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/backends/reference/test/RefLayerTests.cpp b/src/backends/reference/test/RefLayerTests.cpp
index f50051aaac..d8dab3d04e 100644
--- a/src/backends/reference/test/RefLayerTests.cpp
+++ b/src/backends/reference/test/RefLayerTests.cpp
@@ -1255,6 +1255,9 @@ ARMNN_AUTO_TEST_CASE(LstmLayerInt16NoCifgWithPeepholeWithProjection,
ARMNN_AUTO_TEST_CASE(LstmLayerInt16NoCifgNoPeepholeNoProjectionInt16Constant,
LstmLayerInt16NoCifgNoPeepholeNoProjectionInt16ConstantTest)
+// QLstm
+ARMNN_AUTO_TEST_CASE(QLstm, QLstmTest)
+
// Convert from BFloat16 to Float32
ARMNN_AUTO_TEST_CASE(ConvertBf16ToFp32, ConvertBf16ToFp32Test)