aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjimfly01 <jim.flynn@arm.com>2018-10-31 14:43:53 +0000
committerMatteo Martincigh <matteo.martincigh@arm.com>2018-11-01 12:13:37 +0000
commit7af00da9068c71ae6f66eaa488048feea62e7aa9 (patch)
tree1c0808b0a1beeb85a3103f8fe01d561b1011ecc5
parent1b417c4970462d08e8e80d2f2462230ca5b91515 (diff)
downloadarmnn-7af00da9068c71ae6f66eaa488048feea62e7aa9.tar.gz
IVGCVSW-2074: Updated CompareDepthwiseConvolution2dTest for NHWC
Change-Id: Ib0568024b4f43ae17e6c75ac35d31cf103ce3482
-rwxr-xr-xsrc/backends/cl/test/ClLayerTests.cpp15
-rw-r--r--src/backends/neon/test/NeonLayerTests.cpp15
-rwxr-xr-xsrc/backends/test/Conv2dTestImpl.hpp38
-rwxr-xr-xsrc/backends/test/LayerTests.cpp9
-rw-r--r--src/backends/test/LayerTests.hpp3
5 files changed, 62 insertions, 18 deletions
diff --git a/src/backends/cl/test/ClLayerTests.cpp b/src/backends/cl/test/ClLayerTests.cpp
index 198bddd1e4..f2a28ec06e 100755
--- a/src/backends/cl/test/ClLayerTests.cpp
+++ b/src/backends/cl/test/ClLayerTests.cpp
@@ -314,8 +314,19 @@ ARMNN_AUTO_TEST_CASE(MeanVtsFloat3, MeanVtsFloat3Test)
ARMNN_COMPARE_REF_AUTO_TEST_CASE(CompareConv2dWithReference, CompareConvolution2dTest)
-ARMNN_COMPARE_REF_AUTO_TEST_CASE(CompareDepthwiseConv2dWithReferenceFloat32, CompareDepthwiseConvolution2dTest<float>)
-ARMNN_COMPARE_REF_AUTO_TEST_CASE(CompareDepthwiseConv2dWithReferenceUint8, CompareDepthwiseConvolution2dTest<uint8_t>)
+ARMNN_COMPARE_REF_AUTO_TEST_CASE(CompareDepthwiseConv2dWithReferenceFloat32,
+ CompareDepthwiseConvolution2dTest<float>,
+ armnn::DataLayout::NCHW)
+ARMNN_COMPARE_REF_AUTO_TEST_CASE(CompareDepthwiseConv2dWithReferenceUint8,
+ CompareDepthwiseConvolution2dTest<uint8_t>,
+ armnn::DataLayout::NCHW)
+
+ARMNN_COMPARE_REF_AUTO_TEST_CASE(CompareDepthwiseConv2dWithReferenceFloat32Nhwc,
+ CompareDepthwiseConvolution2dTest<float>,
+ armnn::DataLayout::NHWC)
+ARMNN_COMPARE_REF_AUTO_TEST_CASE(CompareDepthwiseConv2dWithReferenceUint8Nhwc,
+ CompareDepthwiseConvolution2dTest<uint8_t>,
+ armnn::DataLayout::NHWC)
ARMNN_COMPARE_REF_AUTO_TEST_CASE(CompareNormalizationWithinWithReference, CompareNormalizationTest,
armnn::NormalizationAlgorithmChannel::Within,
diff --git a/src/backends/neon/test/NeonLayerTests.cpp b/src/backends/neon/test/NeonLayerTests.cpp
index d242245ba0..8fda825618 100644
--- a/src/backends/neon/test/NeonLayerTests.cpp
+++ b/src/backends/neon/test/NeonLayerTests.cpp
@@ -439,8 +439,19 @@ ARMNN_AUTO_TEST_CASE(SimpleNormalizationAcrossNhwc, SimpleNormalizationAcrossNhw
ARMNN_COMPARE_REF_AUTO_TEST_CASE(CompareConv2dWithReference, CompareConvolution2dTest)
-ARMNN_COMPARE_REF_AUTO_TEST_CASE(CompareDepthwiseConv2dWithReferenceFloat32, CompareDepthwiseConvolution2dTest<float>)
-ARMNN_COMPARE_REF_AUTO_TEST_CASE(CompareDepthwiseConv2dWithReferenceUint8, CompareDepthwiseConvolution2dTest<uint8_t>)
+ARMNN_COMPARE_REF_AUTO_TEST_CASE(CompareDepthwiseConv2dWithReferenceFloat32,
+ CompareDepthwiseConvolution2dTest<float>,
+ armnn::DataLayout::NCHW)
+ARMNN_COMPARE_REF_AUTO_TEST_CASE(CompareDepthwiseConv2dWithReferenceUint8,
+ CompareDepthwiseConvolution2dTest<uint8_t>,
+ armnn::DataLayout::NCHW)
+
+ARMNN_COMPARE_REF_AUTO_TEST_CASE(CompareDepthwiseConv2dWithReferenceFloat32Nhwc,
+ CompareDepthwiseConvolution2dTest<float>,
+ armnn::DataLayout::NHWC)
+ARMNN_COMPARE_REF_AUTO_TEST_CASE(CompareDepthwiseConv2dWithReferenceUint8Nhwc,
+ CompareDepthwiseConvolution2dTest<uint8_t>,
+ armnn::DataLayout::NHWC)
ARMNN_COMPARE_REF_AUTO_TEST_CASE(CompareNormalizationWithinWithReference, CompareNormalizationTest,
armnn::NormalizationAlgorithmChannel::Within,
diff --git a/src/backends/test/Conv2dTestImpl.hpp b/src/backends/test/Conv2dTestImpl.hpp
index ce3e435d1a..9bb36fb344 100755
--- a/src/backends/test/Conv2dTestImpl.hpp
+++ b/src/backends/test/Conv2dTestImpl.hpp
@@ -1095,7 +1095,8 @@ LayerTestResult<T,4> CompareConvolution2dTestImpl(armnn::IWorkloadFactory& workl
template<typename T>
LayerTestResult<T, 4> CompareDepthwiseConvolution2dTestImpl(armnn::IWorkloadFactory& workloadFactory,
- armnn::IWorkloadFactory& refWorkloadFactory)
+ armnn::IWorkloadFactory& refWorkloadFactory,
+ const armnn::DataLayoutIndexed& layout)
{
unsigned int inputHeight = 8;
unsigned int inputWidth = 16;
@@ -1121,19 +1122,37 @@ LayerTestResult<T, 4> CompareDepthwiseConvolution2dTestImpl(armnn::IWorkloadFact
armnn::TensorInfo kernelDesc;
armnn::TensorInfo biasDesc;
- unsigned int inputShape[] = { inputNum, inputChannels, inputHeight, inputWidth };
- unsigned int outputShape[] = { outputNum, outputChannels, outputHeight, outputWidth };
- unsigned int kernelShape[] = { channelMultiplier, inputChannels, kernelHeight, kernelWidth };
- unsigned int biasShape[] = { outputChannels };
+
+ std::vector<unsigned int> inputShape;
+ std::vector<unsigned int> outputShape;
+ std::vector<unsigned int> kernelShape;
+ std::vector<unsigned int> biasShape= { outputChannels };
+ switch (layout.GetDataLayout())
+ {
+ case armnn::DataLayout::NCHW:
+ inputShape = { inputNum, inputChannels, inputHeight, inputWidth };
+ outputShape = { outputNum, outputChannels, outputHeight, outputWidth };
+ kernelShape = { channelMultiplier, inputChannels, kernelHeight, kernelWidth };
+ break;
+ case armnn::DataLayout ::NHWC:
+ inputShape = { inputNum, inputHeight, inputWidth, inputChannels };
+ outputShape = { outputNum, outputHeight, outputWidth, outputChannels };
+ kernelShape = { channelMultiplier, kernelHeight, kernelWidth, inputChannels };
+ break;
+ default:
+ throw armnn::InvalidArgumentException("unknown data layout ["
+ + std::to_string(static_cast<int>(layout.GetDataLayout())) + "]");
+ }
float inputsQScale = armnn::IsQuantizedType<T>() ? 1.0f : 0;
float outputQScale = armnn::IsQuantizedType<T>() ? 2.0f : 0;
int32_t qOffset = 0;
- inputTensorInfo = armnn::TensorInfo(4, inputShape, armnn::GetDataType<T>(), inputsQScale, qOffset);
- outputTensorInfo = armnn::TensorInfo(4, outputShape, armnn::GetDataType<T>(), outputQScale, qOffset);
- kernelDesc = armnn::TensorInfo(4, kernelShape, armnn::GetDataType<T>(), inputsQScale, qOffset);
- biasDesc = armnn::TensorInfo(1, biasShape, armnn::GetBiasDataType(armnn::GetDataType<T>()), inputsQScale, qOffset);
+ inputTensorInfo = armnn::TensorInfo(4, inputShape.data(), armnn::GetDataType<T>(), inputsQScale, qOffset);
+ outputTensorInfo = armnn::TensorInfo(4, outputShape.data(), armnn::GetDataType<T>(), outputQScale, qOffset);
+ kernelDesc = armnn::TensorInfo(4, kernelShape.data(), armnn::GetDataType<T>(), inputsQScale, qOffset);
+ biasDesc = armnn::TensorInfo(
+ 1, biasShape.data(), armnn::GetBiasDataType(armnn::GetDataType<T>()), inputsQScale, qOffset);
LayerTestResult<T, 4> ret(outputTensorInfo);
@@ -1164,6 +1183,7 @@ LayerTestResult<T, 4> CompareDepthwiseConvolution2dTestImpl(armnn::IWorkloadFact
data.m_Parameters.m_PadTop = padY;
data.m_Parameters.m_PadBottom = padY;
data.m_Parameters.m_BiasEnabled = true;
+ data.m_Parameters.m_DataLayout = layout.GetDataLayout();
std::unique_ptr<armnn::ITensorHandle> outputHandleRef = refWorkloadFactory.CreateTensorHandle(outputTensorInfo);
std::unique_ptr<armnn::ITensorHandle> inputHandleRef = refWorkloadFactory.CreateTensorHandle(inputTensorInfo);
diff --git a/src/backends/test/LayerTests.cpp b/src/backends/test/LayerTests.cpp
index abe3704a17..49c6d30b6d 100755
--- a/src/backends/test/LayerTests.cpp
+++ b/src/backends/test/LayerTests.cpp
@@ -683,15 +683,16 @@ LayerTestResult<float,4> CompareConvolution2dTest(armnn::IWorkloadFactory& workl
template<typename T>
LayerTestResult<T,4> CompareDepthwiseConvolution2dTest(armnn::IWorkloadFactory& workloadFactory,
- armnn::IWorkloadFactory& refWorkloadFactory)
+ armnn::IWorkloadFactory& refWorkloadFactory,
+ const armnn::DataLayoutIndexed& layout)
{
- return CompareDepthwiseConvolution2dTestImpl<T>(workloadFactory, refWorkloadFactory);
+ return CompareDepthwiseConvolution2dTestImpl<T>(workloadFactory, refWorkloadFactory, layout);
}
template LayerTestResult<float, 4> CompareDepthwiseConvolution2dTest<float>(
- armnn::IWorkloadFactory&, armnn::IWorkloadFactory&);
+ armnn::IWorkloadFactory&, armnn::IWorkloadFactory&, const armnn::DataLayoutIndexed&);
template LayerTestResult<uint8_t, 4> CompareDepthwiseConvolution2dTest<uint8_t>(
- armnn::IWorkloadFactory&, armnn::IWorkloadFactory&);
+ armnn::IWorkloadFactory&, armnn::IWorkloadFactory&, const armnn::DataLayoutIndexed&);
LayerTestResult<float,4> SimpleNormalizationAcrossTest(armnn::IWorkloadFactory& workloadFactory)
{
diff --git a/src/backends/test/LayerTests.hpp b/src/backends/test/LayerTests.hpp
index 392d3bf34e..006425ae5f 100644
--- a/src/backends/test/LayerTests.hpp
+++ b/src/backends/test/LayerTests.hpp
@@ -187,7 +187,8 @@ LayerTestResult<float, 4> CompareConvolution2dTest(armnn::IWorkloadFactory& work
template<typename T>
LayerTestResult<T, 4> CompareDepthwiseConvolution2dTest(armnn::IWorkloadFactory& workloadFactory,
- armnn::IWorkloadFactory& refWorkloadFactory);
+ armnn::IWorkloadFactory& refWorkloadFactory,
+ const armnn::DataLayoutIndexed& layout);
LayerTestResult<float, 4> CompareNormalizationTest(armnn::IWorkloadFactory& workloadFactory,
armnn::IWorkloadFactory& refWorkloadFactory,