diff options
author | Teresa Charlin <teresa.charlinreyes@arm.com> | 2020-07-29 09:36:41 +0100 |
---|---|---|
committer | KeithARM <keith.davis@arm.com> | 2020-07-31 11:56:31 +0000 |
commit | 4b10fef654c5d54b73cc6f09327a88976d8c0fc4 (patch) | |
tree | 4a504eacb860bf1ef3feed4b5acbb79225e480fd /src/backends | |
parent | e8ac13308b84b2ee9bc930ac8d27e657300e462d (diff) | |
download | armnn-4b10fef654c5d54b73cc6f09327a88976d8c0fc4.tar.gz |
IVGCVSW-4712 Fill layer datatype adjustments
* Input layer to be int32 instead of same type as output
* Enable float16 end to end tests
* Neon and Cl layer support check for backend
Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com>
Change-Id: I6bc889077c8da63eeff66bd45730ce5d8783c419
Diffstat (limited to 'src/backends')
-rw-r--r-- | src/backends/backendsCommon/test/FillEndToEndTestImpl.hpp | 14 | ||||
-rw-r--r-- | src/backends/backendsCommon/test/layerTests/FillTestImpl.cpp | 7 | ||||
-rw-r--r-- | src/backends/cl/ClLayerSupport.cpp | 14 | ||||
-rw-r--r-- | src/backends/cl/test/ClEndToEndTests.cpp | 5 | ||||
-rw-r--r-- | src/backends/neon/NeonLayerSupport.cpp | 14 | ||||
-rw-r--r-- | src/backends/neon/test/NeonEndToEndTests.cpp | 5 | ||||
-rw-r--r-- | src/backends/reference/RefLayerSupport.cpp | 2 | ||||
-rw-r--r-- | src/backends/reference/test/RefEndToEndTests.cpp | 8 |
8 files changed, 44 insertions, 25 deletions
diff --git a/src/backends/backendsCommon/test/FillEndToEndTestImpl.hpp b/src/backends/backendsCommon/test/FillEndToEndTestImpl.hpp index f734a948ab..5d7601b14b 100644 --- a/src/backends/backendsCommon/test/FillEndToEndTestImpl.hpp +++ b/src/backends/backendsCommon/test/FillEndToEndTestImpl.hpp @@ -39,27 +39,31 @@ void FillEndToEnd(const std::vector<armnn::BackendId>& backends) FillDescriptor descriptor; descriptor.m_Value = 9; - std::vector<T> inputData{ + std::vector<int32_t> inputData { 1, 1, 5, 3 }; - std::vector<T> expectedOutputData{ + std::vector<float> floatExpectedOutputData { 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 }; + std::vector<T> expectedOutputData = armnnUtils::QuantizedVector<T>(floatExpectedOutputData); - TensorInfo inputInfo ({ 4 }, ArmnnType); + TensorInfo inputInfo ({ 4 }, DataType::Signed32); TensorInfo outputInfo({ 1, 1, 5, 3 }, ArmnnType); armnn::INetworkPtr network = CreateFillNetwork(inputInfo, outputInfo, descriptor); BOOST_TEST_CHECKPOINT("create a network"); - std::map<int, std::vector<T>> inputTensorData = {{ 0, inputData }}; + std::map<int, std::vector<int32_t>> inputTensorData = {{ 0, inputData }}; std::map<int, std::vector<T>> expectedOutputTensorData = {{ 0, expectedOutputData }}; - EndToEndLayerTestImpl<ArmnnType, ArmnnType>(move(network), inputTensorData, expectedOutputTensorData, backends); + EndToEndLayerTestImpl<DataType::Signed32, ArmnnType>(move(network), + inputTensorData, + expectedOutputTensorData, + backends); } } // anonymous namespace
\ No newline at end of file diff --git a/src/backends/backendsCommon/test/layerTests/FillTestImpl.cpp b/src/backends/backendsCommon/test/layerTests/FillTestImpl.cpp index 64970fecdf..040a988729 100644 --- a/src/backends/backendsCommon/test/layerTests/FillTestImpl.cpp +++ b/src/backends/backendsCommon/test/layerTests/FillTestImpl.cpp @@ -17,13 +17,10 @@ LayerTestResult<T, 4> SimpleFillTest( const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) { IgnoreUnused(memoryManager); - armnn::TensorInfo inputTensorInfo({4}, ArmnnType); - inputTensorInfo.SetQuantizationScale(0.0f); - + armnn::TensorInfo inputTensorInfo({4}, armnn::DataType::Signed32); armnn::TensorInfo outputTensorInfo({2, 2, 3, 2}, ArmnnType); - outputTensorInfo.SetQuantizationScale(0.0f); - auto input = MakeTensor<T, 1>(inputTensorInfo, ConvertToDataType<ArmnnType>( + auto input = MakeTensor<int32_t, 1>(inputTensorInfo, ConvertToDataType<armnn::DataType::Signed32>( {2, 2, 3, 2}, inputTensorInfo)); diff --git a/src/backends/cl/ClLayerSupport.cpp b/src/backends/cl/ClLayerSupport.cpp index 74b5aadb03..1af5c91fc5 100644 --- a/src/backends/cl/ClLayerSupport.cpp +++ b/src/backends/cl/ClLayerSupport.cpp @@ -430,12 +430,16 @@ bool ClLayerSupport::IsElementwiseUnarySupported(const TensorInfo& input, } } -bool ClLayerSupport::IsFillSupported(const TensorInfo&, - const TensorInfo&, - const FillDescriptor&, - Optional<std::string&>) const +bool ClLayerSupport::IsFillSupported(const TensorInfo& input, + const TensorInfo& output, + const FillDescriptor& descriptor, + Optional<std::string&> reasonIfUnsupported) const { - return true; + armnn::IgnoreUnused(input); + armnn::IgnoreUnused(output); + armnn::IgnoreUnused(descriptor); + + return IsClBackendSupported(reasonIfUnsupported); } bool ClLayerSupport::IsFloorSupported(const TensorInfo& input, diff --git a/src/backends/cl/test/ClEndToEndTests.cpp b/src/backends/cl/test/ClEndToEndTests.cpp index 0ac1b2a1e6..edee368fa9 100644 --- a/src/backends/cl/test/ClEndToEndTests.cpp +++ b/src/backends/cl/test/ClEndToEndTests.cpp @@ -237,6 +237,11 @@ BOOST_AUTO_TEST_CASE(ClFillEndToEndTest) FillEndToEnd<armnn::DataType::Float32>(defaultBackends); } +BOOST_AUTO_TEST_CASE(RefFillEndToEndTestFloat16) +{ + FillEndToEnd<armnn::DataType::Float16>(defaultBackends); +} + BOOST_AUTO_TEST_CASE(ClFillEndToEndTestInt32) { FillEndToEnd<armnn::DataType::Signed32>(defaultBackends); diff --git a/src/backends/neon/NeonLayerSupport.cpp b/src/backends/neon/NeonLayerSupport.cpp index b848f0c10f..9dc8a01778 100644 --- a/src/backends/neon/NeonLayerSupport.cpp +++ b/src/backends/neon/NeonLayerSupport.cpp @@ -406,12 +406,16 @@ bool NeonLayerSupport::IsElementwiseUnarySupported(const TensorInfo& input, } } -bool NeonLayerSupport::IsFillSupported(const TensorInfo&, - const TensorInfo&, - const FillDescriptor&, - Optional<std::string&>) const +bool NeonLayerSupport::IsFillSupported(const TensorInfo& input, + const TensorInfo& output, + const FillDescriptor& descriptor, + Optional<std::string&> reasonIfUnsupported) const { - return true; + armnn::IgnoreUnused(input); + armnn::IgnoreUnused(output); + armnn::IgnoreUnused(descriptor); + + return IsNeonBackendSupported(reasonIfUnsupported); } bool NeonLayerSupport::IsFloorSupported(const TensorInfo& input, diff --git a/src/backends/neon/test/NeonEndToEndTests.cpp b/src/backends/neon/test/NeonEndToEndTests.cpp index e89718a05e..ffbae51df6 100644 --- a/src/backends/neon/test/NeonEndToEndTests.cpp +++ b/src/backends/neon/test/NeonEndToEndTests.cpp @@ -452,6 +452,11 @@ BOOST_AUTO_TEST_CASE(NeonFillEndToEndTest) FillEndToEnd<armnn::DataType::Float32>(defaultBackends); } +BOOST_AUTO_TEST_CASE(RefFillEndToEndTestFloat16) +{ + FillEndToEnd<armnn::DataType::Float16>(defaultBackends); +} + BOOST_AUTO_TEST_CASE(NeonFillEndToEndTestInt32) { FillEndToEnd<armnn::DataType::Signed32>(defaultBackends); diff --git a/src/backends/reference/RefLayerSupport.cpp b/src/backends/reference/RefLayerSupport.cpp index 80527bdcb2..f6c214e2c6 100644 --- a/src/backends/reference/RefLayerSupport.cpp +++ b/src/backends/reference/RefLayerSupport.cpp @@ -874,7 +874,7 @@ bool RefLayerSupport::IsFillSupported(const TensorInfo& input, DataType::Signed32 }; - supported &= CheckSupportRule(TypeAnyOf(input, supportedTypes), reasonIfUnsupported, + supported &= CheckSupportRule(TypeIs(input, DataType::Signed32), reasonIfUnsupported, "Reference Fill: input type not supported."); supported &= CheckSupportRule(TypeAnyOf(output, supportedTypes), reasonIfUnsupported, diff --git a/src/backends/reference/test/RefEndToEndTests.cpp b/src/backends/reference/test/RefEndToEndTests.cpp index 027b621c23..4598568070 100644 --- a/src/backends/reference/test/RefEndToEndTests.cpp +++ b/src/backends/reference/test/RefEndToEndTests.cpp @@ -589,10 +589,10 @@ BOOST_AUTO_TEST_CASE(RefFillEndToEndTest) FillEndToEnd<armnn::DataType::Float32>(defaultBackends); } -//BOOST_AUTO_TEST_CASE(RefFillEndToEndTestFloat16) -//{ -// FillEndToEnd<armnn::DataType::Float16>(defaultBackends); -//} +BOOST_AUTO_TEST_CASE(RefFillEndToEndTestFloat16) +{ + FillEndToEnd<armnn::DataType::Float16>(defaultBackends); +} BOOST_AUTO_TEST_CASE(RefFillEndToEndTestInt32) { |