From edc5ffa62ab7c552539956eba8bb1d56fb48057c Mon Sep 17 00:00:00 2001 From: Kevin May Date: Wed, 22 May 2019 12:02:53 +0100 Subject: IVGCVSW-3116 Fix failing NN Driver Tests on Android Q * Refactor Convolution2d Unit test for fp16Enabled * Disable GpuAcc for Unit tests in Android Q Signed-off-by: Kevin May Change-Id: I9613eb325841bdf7d25abf51259fe2f5d973c929 --- test/1.1/Mean.cpp | 6 +++++- test/1.1/Transpose.cpp | 6 +++++- test/Convolution2D.hpp | 38 +++++++++++++++++++------------------- test/Lstm.cpp | 7 +++++-- test/Merger.cpp | 6 +++++- 5 files changed, 39 insertions(+), 24 deletions(-) diff --git a/test/1.1/Mean.cpp b/test/1.1/Mean.cpp index 7d482433..cf9ddcb2 100644 --- a/test/1.1/Mean.cpp +++ b/test/1.1/Mean.cpp @@ -18,7 +18,11 @@ using namespace armnn_driver; namespace { -static const boost::array COMPUTE_DEVICES = {{ armnn::Compute::CpuRef, armnn::Compute::GpuAcc }}; +#ifndef ARMCOMPUTECL_ENABLED + static const boost::array COMPUTE_DEVICES = {{ armnn::Compute::CpuRef }}; +#else + static const boost::array COMPUTE_DEVICES = {{ armnn::Compute::CpuRef, armnn::Compute::GpuAcc }}; +#endif void MeanTestImpl(const TestTensor& input, const hidl_vec& axisDimensions, diff --git a/test/1.1/Transpose.cpp b/test/1.1/Transpose.cpp index 6dc3e0ee..e32a25fe 100644 --- a/test/1.1/Transpose.cpp +++ b/test/1.1/Transpose.cpp @@ -21,7 +21,11 @@ using namespace armnn_driver; namespace { -static const boost::array COMPUTE_DEVICES = {{ armnn::Compute::CpuRef, armnn::Compute::GpuAcc }}; +#ifndef ARMCOMPUTECL_ENABLED + static const boost::array COMPUTE_DEVICES = {{ armnn::Compute::CpuRef }}; +#else + static const boost::array COMPUTE_DEVICES = {{ armnn::Compute::CpuRef, armnn::Compute::GpuAcc }}; +#endif void TransposeTestImpl(const TestTensor & inputs, int32_t perm[], const TestTensor & expectedOutputTensor, armnn::Compute computeDevice) diff --git a/test/Convolution2D.hpp b/test/Convolution2D.hpp index 3fda29bc..c8d573d7 100644 --- a/test/Convolution2D.hpp +++ b/test/Convolution2D.hpp @@ -20,6 +20,15 @@ using namespace armnn_driver; namespace driverTestHelpers { +#define ARMNN_ANDROID_FP16_TEST(result, fp16Expectation, fp32Expectation, fp16Enabled) \ + if (fp16Enabled) \ + { \ + BOOST_TEST((result == fp16Expectation || result == fp32Expectation), result << \ + " does not match either " << fp16Expectation << "[fp16] or " << fp32Expectation << "[fp32]"); \ + } else \ + { \ + BOOST_TEST(result == fp32Expectation); \ + } void SetModelFp16Flag(V1_0::Model& model, bool fp16Enabled); @@ -33,7 +42,13 @@ void PaddingTestImpl(android::nn::PaddingScheme paddingScheme, bool fp16Enabled using HalModel = typename HalPolicy::Model; using HalOperationType = typename HalPolicy::OperationType; - auto driver = std::make_unique(DriverOptions(armnn::Compute::GpuAcc, fp16Enabled)); + armnn::Compute computeDevice = armnn::Compute::GpuAcc; + +#ifndef ARMCOMPUTECL_ENABLED + computeDevice = armnn::Compute::CpuRef; +#endif + + auto driver = std::make_unique(DriverOptions(computeDevice, fp16Enabled)); HalModel model = {}; uint32_t outSize = paddingScheme == android::nn::kPaddingSame ? 2 : 1; @@ -97,26 +112,11 @@ void PaddingTestImpl(android::nn::PaddingScheme paddingScheme, bool fp16Enabled switch (paddingScheme) { case android::nn::kPaddingValid: - if (fp16Enabled) - { - BOOST_TEST(outdata[0] == 1022.f); - } - else - { - BOOST_TEST(outdata[0] == 1022.25f); - } + ARMNN_ANDROID_FP16_TEST(outdata[0], 1022.f, 1022.25f, fp16Enabled) break; case android::nn::kPaddingSame: - if (fp16Enabled) - { - BOOST_TEST(outdata[0] == 1022.f); - BOOST_TEST(outdata[1] == 0.f); - } - else - { - BOOST_TEST(outdata[0] == 1022.25f); - BOOST_TEST(outdata[1] == 0.f); - } + ARMNN_ANDROID_FP16_TEST(outdata[0], 1022.f, 1022.25f, fp16Enabled) + BOOST_TEST(outdata[1] == 0.f); break; default: BOOST_TEST(false); diff --git a/test/Lstm.cpp b/test/Lstm.cpp index b1b7c9d5..56812326 100644 --- a/test/Lstm.cpp +++ b/test/Lstm.cpp @@ -1491,8 +1491,11 @@ void LstmCifgPeepholeNoProjectionBatch2(armnn::Compute compute) outputDimensions, outputValue, compute); } - -static const boost::array COMPUTE_DEVICES = {{ armnn::Compute::CpuRef, armnn::Compute::GpuAcc }}; +#ifndef ARMCOMPUTECL_ENABLED + static const boost::array COMPUTE_DEVICES = {{ armnn::Compute::CpuRef }}; +#else + static const boost::array COMPUTE_DEVICES = {{ armnn::Compute::CpuRef, armnn::Compute::GpuAcc }}; +#endif BOOST_DATA_TEST_CASE(LstmNoCifgNoPeepholeNoProjectionTest, COMPUTE_DEVICES) { diff --git a/test/Merger.cpp b/test/Merger.cpp index 16ac451c..9b3d847a 100644 --- a/test/Merger.cpp +++ b/test/Merger.cpp @@ -19,7 +19,11 @@ using namespace armnn_driver; namespace { -static const boost::array COMPUTE_DEVICES = {{ armnn::Compute::CpuRef, armnn::Compute::GpuAcc }}; +#ifndef ARMCOMPUTECL_ENABLED + static const boost::array COMPUTE_DEVICES = {{ armnn::Compute::CpuRef }}; +#else + static const boost::array COMPUTE_DEVICES = {{ armnn::Compute::CpuRef, armnn::Compute::GpuAcc }}; +#endif void MergerTestImpl(const std::vector & inputs, -- cgit v1.2.1