diff options
author | Keith Davis <keith.davis@arm.com> | 2020-10-23 17:20:05 +0100 |
---|---|---|
committer | Keith Davis <keith.davis@arm.com> | 2020-11-09 10:54:30 +0000 |
commit | df04d23a6608fa3d5d1c1ffae4abc43582034d22 (patch) | |
tree | 3bb1caa7cb73937f31b77156824872ad78255363 /src/backends/reference/test | |
parent | 90231b8c9f680d323e4b93dcd0820a47925e6d24 (diff) | |
download | armnn-df04d23a6608fa3d5d1c1ffae4abc43582034d22.tar.gz |
IVGCVSW-5327 Add to Layer a binary blob to host the activation layer info
Signed-off-by: Keith Davis <keith.davis@arm.com>
Change-Id: I0a07dea96a86849701ba387dbea148909a6d729b
Diffstat (limited to 'src/backends/reference/test')
-rw-r--r-- | src/backends/reference/test/RefCreateWorkloadTests.cpp | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/src/backends/reference/test/RefCreateWorkloadTests.cpp b/src/backends/reference/test/RefCreateWorkloadTests.cpp index 6e2217c919..0f86e7eeff 100644 --- a/src/backends/reference/test/RefCreateWorkloadTests.cpp +++ b/src/backends/reference/test/RefCreateWorkloadTests.cpp @@ -89,6 +89,55 @@ static void RefCreateElementwiseWorkloadTest() TensorInfo({ 2, 3 }, DataType)); } +BOOST_AUTO_TEST_CASE(CreateSubtractionWorkloadWithBlobTest) +{ + Graph graph; + RefWorkloadFactory factory = GetFactory(); + armnn::DataType DataType = armnn::DataType::Float32; + + auto workload = CreateSubtractionWithBlobWorkloadTest<RefSubtractionWorkload<>, + SubtractionQueueDescriptor, + armnn::DataType::Float32> + (factory, graph); + + CheckInputsOutput(std::move(workload), + TensorInfo({ 2, 3 }, DataType), + TensorInfo({ 2, 3 }, DataType), + TensorInfo({ 2, 3 }, DataType)); +} + +BOOST_AUTO_TEST_CASE(CreateAdditionWorkloadWithBlobTest) +{ + Graph graph; + RefWorkloadFactory factory = GetFactory(); + armnn::DataType DataType = armnn::DataType::Float32; + + auto workload = CreateAdditionWithBlobWorkloadTest<RefAdditionWorkload<>, + AdditionQueueDescriptor, + armnn::DataType::Float32>(factory, graph); + + CheckInputsOutput(std::move(workload), + TensorInfo({ 2, 3 }, DataType), + TensorInfo({ 2, 3 }, DataType), + TensorInfo({ 2, 3 }, DataType)); +} + +BOOST_AUTO_TEST_CASE(CreateMultiplicationWorkloadWithBlobTest) +{ + Graph graph; + RefWorkloadFactory factory = GetFactory(); + armnn::DataType DataType = armnn::DataType::Float32; + + auto workload = CreateMultiplicationWithBlobWorkloadTest<RefMultiplicationWorkload<>, + MultiplicationQueueDescriptor, + armnn::DataType::Float32>(factory, graph); + + CheckInputsOutput(std::move(workload), + TensorInfo({2, 3}, DataType), + TensorInfo({2, 3}, DataType), + TensorInfo({2, 3}, DataType)); +} + BOOST_AUTO_TEST_CASE(CreateAdditionFloatWorkload) { RefCreateElementwiseWorkloadTest<RefAdditionWorkload<>, @@ -262,6 +311,24 @@ static void RefCreateBatchNormalizationWorkloadTest(DataLayout dataLayout) CheckInputOutput(std::move(workload), TensorInfo(inputShape, DataType), TensorInfo(outputShape, DataType)); } +BOOST_AUTO_TEST_CASE(CreateBatchNormalizationWithBlobFloat32Workload) +{ + Graph graph; + RefWorkloadFactory factory = GetFactory(); + auto dataType = armnn::DataType::Float32; + auto workload = CreateBatchNormalizationWorkloadTest<RefBatchNormalizationWorkload, + armnn::DataType::Float32>(factory, graph, DataLayout::NHWC); + + TensorShape inputShape; + TensorShape outputShape; + + inputShape = { 2, 4, 4, 3 }; + outputShape = { 2, 4, 4, 3 }; + + // Checks that outputs and inputs are as we expect them (see definition of CreateBatchNormalizationWorkloadTest). + CheckInputOutput(std::move(workload), TensorInfo(inputShape, dataType), TensorInfo(outputShape, dataType)); +} + BOOST_AUTO_TEST_CASE(CreateBatchNormalizationFloat32Workload) { RefCreateBatchNormalizationWorkloadTest<RefBatchNormalizationWorkload,armnn::DataType::Float32> @@ -360,6 +427,25 @@ BOOST_AUTO_TEST_CASE(CreateConvolution2dFloatNhwcWorkload) RefCreateConvolution2dWorkloadTest(DataLayout::NHWC); } +BOOST_AUTO_TEST_CASE(CreateConvolution2dWithBlobWorkload) +{ + DataLayout dataLayout = DataLayout::NHWC; + Graph graph; + RefWorkloadFactory factory = GetFactory(); + auto workload = CreateConvolution2dFusedActivationWithBlobWorkloadTest<RefConvolution2dWorkload, DataType::Float32> + (factory, graph, dataLayout); + + TensorShape inputShape = (dataLayout == DataLayout::NCHW) ? std::initializer_list<unsigned int>({2, 3, 8, 16}) + : std::initializer_list<unsigned int>({2, 8, 16, 3}); + TensorShape outputShape = (dataLayout == DataLayout::NCHW) ? std::initializer_list<unsigned int>({2, 2, 2, 10}) + : std::initializer_list<unsigned int>({2, 2, 10, 2}); + + // Checks that outputs and inputs are as we expect them (see definition of CreateConvolution2dWorkloadTest). + CheckInputOutput(std::move(workload), + TensorInfo(inputShape, DataType::Float32), + TensorInfo(outputShape, DataType::Float32)); +} + static void RefCreateDepthwiseConvolutionWorkloadTest(DataLayout dataLayout) { Graph graph; @@ -383,6 +469,21 @@ BOOST_AUTO_TEST_CASE(CreateDepthwiseConvolutionFloat32NhwcWorkload) RefCreateDepthwiseConvolutionWorkloadTest(DataLayout::NHWC); } +BOOST_AUTO_TEST_CASE(RefCreateFullyConnectedWithBlobWorkloadTest) +{ + Graph graph; + RefWorkloadFactory factory = GetFactory(); + auto workload = CreateFullyConnectedWithBlobWorkloadTest<RefFullyConnectedWorkload, + armnn::DataType::Float32>(factory, graph); + + // Checks that outputs and inputs are as we expect them (see definition of CreateFullyConnectedWorkloadTest). + float inputsQScale = 0.0f; + float outputQScale = 0.0f; + CheckInputOutput(std::move(workload), + TensorInfo({ 3, 1, 4, 5 }, armnn::DataType::Float32, inputsQScale), + TensorInfo({ 3, 7 }, armnn::DataType::Float32, outputQScale)); +} + template <typename FullyConnectedWorkloadType, armnn::DataType DataType> static void RefCreateFullyConnectedWorkloadTest() { |