From 9150bff63a690caa743c471943afe509ebed1044 Mon Sep 17 00:00:00 2001 From: Sadik Armagan Date: Wed, 26 May 2021 15:40:53 +0100 Subject: IVGCVSW-4618 'Transition Units Test Suites' * Used doctest in android-nn-driver unit tests. Signed-off-by: Sadik Armagan Change-Id: I9b5d4dfd77d53c7ebee7f8c43628a1d6ff74d1a3 --- test/1.1/Convolution2D.cpp | 18 ++-- test/1.1/Lstm.cpp | 56 ++++++++----- test/1.1/Mean.cpp | 201 ++++++++++++++++++++++++++++++++++----------- test/1.1/Transpose.cpp | 108 +++++++++++++++++------- 4 files changed, 278 insertions(+), 105 deletions(-) (limited to 'test/1.1') diff --git a/test/1.1/Convolution2D.cpp b/test/1.1/Convolution2D.cpp index 32d5018c..0daa4728 100644 --- a/test/1.1/Convolution2D.cpp +++ b/test/1.1/Convolution2D.cpp @@ -7,12 +7,12 @@ #include "../Convolution2D.hpp" #include "../../1.1/HalPolicy.hpp" -#include +#include #include #include -BOOST_AUTO_TEST_SUITE(Convolution2DTests) + using namespace android::hardware; using namespace driverTestHelpers; @@ -29,24 +29,28 @@ void SetModelFp16Flag(V1_1::Model& model, bool fp16Enabled) } // namespace driverTestHelpers -BOOST_AUTO_TEST_CASE(ConvValidPadding_Hal_1_1) + +TEST_SUITE("Convolution2DTests_1.1") +{ + +TEST_CASE("ConvValidPadding_Hal_1_1") { PaddingTestImpl(android::nn::kPaddingValid); } -BOOST_AUTO_TEST_CASE(ConvSamePadding_Hal_1_1) +TEST_CASE("ConvSamePadding_Hal_1_1") { PaddingTestImpl(android::nn::kPaddingSame); } -BOOST_AUTO_TEST_CASE(ConvValidPaddingFp16Flag_Hal_1_1) +TEST_CASE("ConvValidPaddingFp16Flag_Hal_1_1") { PaddingTestImpl(android::nn::kPaddingValid, true); } -BOOST_AUTO_TEST_CASE(ConvSamePaddingFp16Flag_Hal_1_1) +TEST_CASE("ConvSamePaddingFp16Flag_Hal_1_1") { PaddingTestImpl(android::nn::kPaddingSame, true); } -BOOST_AUTO_TEST_SUITE_END() +} diff --git a/test/1.1/Lstm.cpp b/test/1.1/Lstm.cpp index 703597e5..2699ec4c 100644 --- a/test/1.1/Lstm.cpp +++ b/test/1.1/Lstm.cpp @@ -5,30 +5,46 @@ #include "../Lstm.hpp" -#include - -BOOST_AUTO_TEST_SUITE(LstmTests) - using namespace armnn_driver; -BOOST_DATA_TEST_CASE(LstmNoCifgNoPeepholeNoProjectionTest, COMPUTE_DEVICES) -{ - LstmNoCifgNoPeepholeNoProjection(sample); -} - -BOOST_DATA_TEST_CASE(LstmCifgPeepholeNoProjectionTest, COMPUTE_DEVICES) +TEST_SUITE("LstmTests_1.1_CpuRef") { - LstmCifgPeepholeNoProjection(sample); + TEST_CASE("LstmNoCifgNoPeepholeNoProjectionTest_1.1_armnn::Compute::CpuRef") + { + LstmNoCifgNoPeepholeNoProjection(armnn::Compute::CpuRef); + } + TEST_CASE("LstmCifgPeepholeNoProjectionTest_1.1_CpuRef") + { + LstmCifgPeepholeNoProjection(armnn::Compute::CpuRef); + } + TEST_CASE("LstmNoCifgPeepholeProjectionTest_1.1_CpuRef") + { + LstmNoCifgPeepholeProjection(armnn::Compute::CpuRef); + } + TEST_CASE("LstmCifgPeepholeNoProjectionBatch2Test_1.1_CpuRef") + { + LstmCifgPeepholeNoProjectionBatch2(armnn::Compute::CpuRef); + } } -BOOST_DATA_TEST_CASE(LstmNoCifgPeepholeProjectionTest, COMPUTE_DEVICES) +#if defined(ARMCOMPUTECL_ENABLED) +TEST_SUITE("LstmTests_1.1_GpuAcc") { - LstmNoCifgPeepholeProjection(sample); + TEST_CASE("LstmNoCifgNoPeepholeNoProjectionTest_1.1_GpuAcc") + { + LstmNoCifgNoPeepholeNoProjection(armnn::Compute::GpuAcc); + } + TEST_CASE("LstmCifgPeepholeNoProjectionTest_1.1_GpuAcc") + { + LstmCifgPeepholeNoProjection(armnn::Compute::GpuAcc); + } + TEST_CASE("LstmNoCifgPeepholeProjectionTest_1.1_GpuAcc") + { + LstmNoCifgPeepholeProjection(armnn::Compute::GpuAcc); + } + TEST_CASE("LstmCifgPeepholeNoProjectionBatch2Test_1.1_GpuAcc") + { + LstmCifgPeepholeNoProjectionBatch2(armnn::Compute::GpuAcc); + } } - -BOOST_DATA_TEST_CASE(LstmCifgPeepholeNoProjectionBatch2Test, COMPUTE_DEVICES) -{ - LstmCifgPeepholeNoProjectionBatch2(sample); -} - -BOOST_AUTO_TEST_SUITE_END() +#endif diff --git a/test/1.1/Mean.cpp b/test/1.1/Mean.cpp index c9a5a6d3..c7c5a9b5 100644 --- a/test/1.1/Mean.cpp +++ b/test/1.1/Mean.cpp @@ -8,12 +8,10 @@ #include "../1.1/HalPolicy.hpp" -#include +#include #include -BOOST_AUTO_TEST_SUITE(MeanTests) - using namespace android::hardware; using namespace driverTestHelpers; using namespace armnn_driver; @@ -24,12 +22,6 @@ using RequestArgument = V1_0::RequestArgument; namespace { -#ifndef ARMCOMPUTECL_ENABLED - static const std::array COMPUTE_DEVICES = {{ armnn::Compute::CpuRef }}; -#else - static const std::array COMPUTE_DEVICES = {{ armnn::Compute::CpuRef, armnn::Compute::GpuAcc }}; -#endif - void MeanTestImpl(const TestTensor& input, const hidl_vec& axisDimensions, const int32_t* axisValues, @@ -94,64 +86,175 @@ void MeanTestImpl(const TestTensor& input, if (preparedModel.get() != nullptr) { V1_0::ErrorStatus execStatus = Execute(preparedModel, request); - BOOST_TEST(execStatus == V1_0::ErrorStatus::NONE); + CHECK((int)execStatus == (int)V1_0::ErrorStatus::NONE); } const float* expectedOutputData = expectedOutput.GetData(); for (unsigned int i = 0; i < expectedOutput.GetNumElements(); i++) { - BOOST_TEST(outputData[i] == expectedOutputData[i]); + CHECK(outputData[i] == expectedOutputData[i]); } } } // anonymous namespace -BOOST_DATA_TEST_CASE(MeanNoKeepDimsTest, COMPUTE_DEVICES) +TEST_SUITE("MeanTests_CpuRef") { - TestTensor input{ armnn::TensorShape{ 4, 3, 2 }, { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, - 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, - 20.0f, 21.0f, 22.0f, 23.0f, 24.0f } }; - hidl_vec axisDimensions = { 2 }; - int32_t axisValues[] = { 0, 1 }; - int32_t keepDims = 0; - TestTensor expectedOutput{ armnn::TensorShape{ 2 }, { 12.0f, 13.0f } }; - - MeanTestImpl(input, axisDimensions, axisValues, keepDims, expectedOutput, false, sample); -} + TEST_CASE("MeanNoKeepDimsTest_CpuRef") + { + TestTensor input{ armnn::TensorShape{ 4, 3, 2 }, + { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, + 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, + 20.0f, 21.0f, 22.0f, 23.0f, 24.0f } }; + hidl_vec axisDimensions = { 2 }; + int32_t axisValues[] = { 0, 1 }; + int32_t keepDims = 0; + TestTensor expectedOutput{ armnn::TensorShape{ 2 }, { 12.0f, 13.0f } }; + + MeanTestImpl(input, axisDimensions, axisValues, keepDims, expectedOutput, false, armnn::Compute::CpuRef); + } -BOOST_DATA_TEST_CASE(MeanKeepDimsTest, COMPUTE_DEVICES) -{ - TestTensor input{ armnn::TensorShape{ 1, 1, 3, 2 }, { 1.0f, 1.0f, 2.0f, 2.0f, 3.0f, 3.0f } }; - hidl_vec axisDimensions = { 1 }; - int32_t axisValues[] = { 2 }; - int32_t keepDims = 1; - TestTensor expectedOutput{ armnn::TensorShape{ 1, 1, 1, 2 }, { 2.0f, 2.0f } }; + TEST_CASE("MeanKeepDimsTest_CpuRef") + { + TestTensor input{ armnn::TensorShape{ 1, 1, 3, 2 }, { 1.0f, 1.0f, 2.0f, 2.0f, 3.0f, 3.0f } }; + hidl_vec axisDimensions = { 1 }; + int32_t axisValues[] = { 2 }; + int32_t keepDims = 1; + TestTensor expectedOutput{ armnn::TensorShape{ 1, 1, 1, 2 }, { 2.0f, 2.0f } }; + + MeanTestImpl(input, axisDimensions, axisValues, keepDims, expectedOutput, false, armnn::Compute::CpuRef); + } + + TEST_CASE("MeanFp16NoKeepDimsTest_CpuRef") + { + TestTensor input{ armnn::TensorShape{ 4, 3, 2 }, + { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, + 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, + 20.0f, 21.0f, 22.0f, 23.0f, 24.0f } }; + hidl_vec axisDimensions = { 2 }; + int32_t axisValues[] = { 0, 1 }; + int32_t keepDims = 0; + TestTensor expectedOutput{ armnn::TensorShape{ 2 }, { 12.0f, 13.0f } }; + + MeanTestImpl(input, axisDimensions, axisValues, keepDims, expectedOutput, true, armnn::Compute::CpuRef); + } + + TEST_CASE("MeanFp16KeepDimsTest_CpuRef") + { + TestTensor input{ armnn::TensorShape{ 1, 1, 3, 2 }, { 1.0f, 1.0f, 2.0f, 2.0f, 3.0f, 3.0f } }; + hidl_vec axisDimensions = { 1 }; + int32_t axisValues[] = { 2 }; + int32_t keepDims = 1; + TestTensor expectedOutput{ armnn::TensorShape{ 1, 1, 1, 2 }, { 2.0f, 2.0f } }; - MeanTestImpl(input, axisDimensions, axisValues, keepDims, expectedOutput, false, sample); + MeanTestImpl(input, axisDimensions, axisValues, keepDims, expectedOutput, true, armnn::Compute::CpuRef); + } } -BOOST_DATA_TEST_CASE(MeanFp16NoKeepDimsTest, COMPUTE_DEVICES) +#ifdef ARMCOMPUTECL_ENABLED +TEST_SUITE("MeanTests_CpuAcc") { - TestTensor input{ armnn::TensorShape{ 4, 3, 2 }, { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, - 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, - 20.0f, 21.0f, 22.0f, 23.0f, 24.0f } }; - hidl_vec axisDimensions = { 2 }; - int32_t axisValues[] = { 0, 1 }; - int32_t keepDims = 0; - TestTensor expectedOutput{ armnn::TensorShape{ 2 }, { 12.0f, 13.0f } }; - - MeanTestImpl(input, axisDimensions, axisValues, keepDims, expectedOutput, true, sample); + TEST_CASE("MeanNoKeepDimsTest_CpuAcc") + { + TestTensor input{ armnn::TensorShape{ 4, 3, 2 }, + { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, + 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, + 20.0f, 21.0f, 22.0f, 23.0f, 24.0f } }; + hidl_vec axisDimensions = { 2 }; + int32_t axisValues[] = { 0, 1 }; + int32_t keepDims = 0; + TestTensor expectedOutput{ armnn::TensorShape{ 2 }, { 12.0f, 13.0f } }; + + MeanTestImpl(input, axisDimensions, axisValues, keepDims, expectedOutput, false, armnn::Compute::CpuAcc); + } + + TEST_CASE("MeanKeepDimsTest_CpuAcc") + { + TestTensor input{ armnn::TensorShape{ 1, 1, 3, 2 }, { 1.0f, 1.0f, 2.0f, 2.0f, 3.0f, 3.0f } }; + hidl_vec axisDimensions = { 1 }; + int32_t axisValues[] = { 2 }; + int32_t keepDims = 1; + TestTensor expectedOutput{ armnn::TensorShape{ 1, 1, 1, 2 }, { 2.0f, 2.0f } }; + + MeanTestImpl(input, axisDimensions, axisValues, keepDims, expectedOutput, false, armnn::Compute::CpuAcc); + } + + TEST_CASE("MeanFp16NoKeepDimsTest_CpuAcc") + { + TestTensor input{ armnn::TensorShape{ 4, 3, 2 }, + { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, + 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, + 20.0f, 21.0f, 22.0f, 23.0f, 24.0f } }; + hidl_vec axisDimensions = { 2 }; + int32_t axisValues[] = { 0, 1 }; + int32_t keepDims = 0; + TestTensor expectedOutput{ armnn::TensorShape{ 2 }, { 12.0f, 13.0f } }; + + MeanTestImpl(input, axisDimensions, axisValues, keepDims, expectedOutput, true, armnn::Compute::CpuAcc); + } + + TEST_CASE("MeanFp16KeepDimsTest_CpuAcc") + { + TestTensor input{ armnn::TensorShape{ 1, 1, 3, 2 }, { 1.0f, 1.0f, 2.0f, 2.0f, 3.0f, 3.0f } }; + hidl_vec axisDimensions = { 1 }; + int32_t axisValues[] = { 2 }; + int32_t keepDims = 1; + TestTensor expectedOutput{ armnn::TensorShape{ 1, 1, 1, 2 }, { 2.0f, 2.0f } }; + + MeanTestImpl(input, axisDimensions, axisValues, keepDims, expectedOutput, true, armnn::Compute::CpuAcc); + } } -BOOST_DATA_TEST_CASE(MeanFp16KeepDimsTest, COMPUTE_DEVICES) +TEST_SUITE("MeanTests_GpuAcc") { - TestTensor input{ armnn::TensorShape{ 1, 1, 3, 2 }, { 1.0f, 1.0f, 2.0f, 2.0f, 3.0f, 3.0f } }; - hidl_vec axisDimensions = { 1 }; - int32_t axisValues[] = { 2 }; - int32_t keepDims = 1; - TestTensor expectedOutput{ armnn::TensorShape{ 1, 1, 1, 2 }, { 2.0f, 2.0f } }; + TEST_CASE("MeanNoKeepDimsTest_GpuAcc") + { + TestTensor input{ armnn::TensorShape{ 4, 3, 2 }, + { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, + 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, + 20.0f, 21.0f, 22.0f, 23.0f, 24.0f } }; + hidl_vec axisDimensions = { 2 }; + int32_t axisValues[] = { 0, 1 }; + int32_t keepDims = 0; + TestTensor expectedOutput{ armnn::TensorShape{ 2 }, { 12.0f, 13.0f } }; + + MeanTestImpl(input, axisDimensions, axisValues, keepDims, expectedOutput, false, armnn::Compute::GpuAcc); + } - MeanTestImpl(input, axisDimensions, axisValues, keepDims, expectedOutput, true, sample); -} + TEST_CASE("MeanKeepDimsTest_GpuAcc") + { + TestTensor input{ armnn::TensorShape{ 1, 1, 3, 2 }, { 1.0f, 1.0f, 2.0f, 2.0f, 3.0f, 3.0f } }; + hidl_vec axisDimensions = { 1 }; + int32_t axisValues[] = { 2 }; + int32_t keepDims = 1; + TestTensor expectedOutput{ armnn::TensorShape{ 1, 1, 1, 2 }, { 2.0f, 2.0f } }; -BOOST_AUTO_TEST_SUITE_END() + MeanTestImpl(input, axisDimensions, axisValues, keepDims, expectedOutput, false, armnn::Compute::GpuAcc); + } + + TEST_CASE("MeanFp16NoKeepDimsTest_GpuAcc") + { + TestTensor input{ armnn::TensorShape{ 4, 3, 2 }, + { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, + 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, + 20.0f, 21.0f, 22.0f, 23.0f, 24.0f } }; + hidl_vec axisDimensions = { 2 }; + int32_t axisValues[] = { 0, 1 }; + int32_t keepDims = 0; + TestTensor expectedOutput{ armnn::TensorShape{ 2 }, { 12.0f, 13.0f } }; + + MeanTestImpl(input, axisDimensions, axisValues, keepDims, expectedOutput, true, armnn::Compute::GpuAcc); + } + + TEST_CASE("MeanFp16KeepDimsTest_GpuAcc") + { + TestTensor input{ armnn::TensorShape{ 1, 1, 3, 2 }, { 1.0f, 1.0f, 2.0f, 2.0f, 3.0f, 3.0f } }; + hidl_vec axisDimensions = { 1 }; + int32_t axisValues[] = { 2 }; + int32_t keepDims = 1; + TestTensor expectedOutput{ armnn::TensorShape{ 1, 1, 1, 2 }, { 2.0f, 2.0f } }; + + MeanTestImpl(input, axisDimensions, axisValues, keepDims, expectedOutput, true, armnn::Compute::GpuAcc); + } +} +#endif diff --git a/test/1.1/Transpose.cpp b/test/1.1/Transpose.cpp index 206f9b98..4c4dc349 100644 --- a/test/1.1/Transpose.cpp +++ b/test/1.1/Transpose.cpp @@ -9,16 +9,13 @@ #include "../1.1/HalPolicy.hpp" -#include -#include +#include #include #include #include -BOOST_AUTO_TEST_SUITE(TransposeTests) - using namespace android::hardware; using namespace driverTestHelpers; using namespace armnn_driver; @@ -29,12 +26,6 @@ using RequestArgument = V1_0::RequestArgument; namespace { -#ifndef ARMCOMPUTECL_ENABLED - static const std::array COMPUTE_DEVICES = {{ armnn::Compute::CpuRef }}; -#else - static const std::array COMPUTE_DEVICES = {{ armnn::Compute::CpuRef, armnn::Compute::GpuAcc }}; -#endif - void TransposeTestImpl(const TestTensor & inputs, int32_t perm[], const TestTensor & expectedOutputTensor, armnn::Compute computeDevice) { @@ -98,38 +89,97 @@ void TransposeTestImpl(const TestTensor & inputs, int32_t perm[], const float * expectedOutput = expectedOutputTensor.GetData(); for (unsigned int i = 0; i < expectedOutputTensor.GetNumElements(); ++i) { - BOOST_TEST(outdata[i] == expectedOutput[i]); + CHECK(outdata[i] == expectedOutput[i]); } } } // namespace -BOOST_DATA_TEST_CASE(Transpose , COMPUTE_DEVICES) +TEST_SUITE("TransposeTests_CpuRef") { - int32_t perm[] = {2, 3, 1, 0}; - TestTensor input{armnn::TensorShape{1, 2, 2, 2},{1, 2, 3, 4, 5, 6, 7, 8}}; - TestTensor expected{armnn::TensorShape{2, 2, 2, 1},{1, 5, 2, 6, 3, 7, 4, 8}}; + TEST_CASE("Transpose_CpuRef") + { + int32_t perm[] = {2, 3, 1, 0}; + TestTensor input{armnn::TensorShape{1, 2, 2, 2},{1, 2, 3, 4, 5, 6, 7, 8}}; + TestTensor expected{armnn::TensorShape{2, 2, 2, 1},{1, 5, 2, 6, 3, 7, 4, 8}}; - TransposeTestImpl(input, perm, expected, sample); -} + TransposeTestImpl(input, perm, expected, armnn::Compute::CpuRef); + } -BOOST_DATA_TEST_CASE(TransposeNHWCToArmNN , COMPUTE_DEVICES) -{ - int32_t perm[] = {0, 3, 1, 2}; - TestTensor input{armnn::TensorShape{1, 2, 2, 3},{1, 2, 3, 11, 12, 13, 21, 22, 23, 31, 32, 33}}; - TestTensor expected{armnn::TensorShape{1, 3, 2, 2},{1, 11, 21, 31, 2, 12, 22, 32, 3, 13, 23, 33}}; + TEST_CASE("TransposeNHWCToArmNN_CpuRef") + { + int32_t perm[] = {0, 3, 1, 2}; + TestTensor input{armnn::TensorShape{1, 2, 2, 3},{1, 2, 3, 11, 12, 13, 21, 22, 23, 31, 32, 33}}; + TestTensor expected{armnn::TensorShape{1, 3, 2, 2},{1, 11, 21, 31, 2, 12, 22, 32, 3, 13, 23, 33}}; - TransposeTestImpl(input, perm, expected, sample); + TransposeTestImpl(input, perm, expected, armnn::Compute::CpuRef); + } + TEST_CASE("TransposeArmNNToNHWC_CpuRef") + { + int32_t perm[] = {0, 2, 3, 1}; + TestTensor input{armnn::TensorShape{1, 2, 2, 2},{1, 2, 3, 4, 5, 6, 7, 8}}; + TestTensor expected{armnn::TensorShape{1, 2, 2, 2},{1, 5, 2, 6, 3, 7, 4, 8}}; + + TransposeTestImpl(input, perm, expected, armnn::Compute::CpuRef); + } } -BOOST_DATA_TEST_CASE(TransposeArmNNToNHWC , COMPUTE_DEVICES) +#ifdef ARMCOMPUTECL_ENABLED +TEST_SUITE("TransposeTests_CpuAcc") { - int32_t perm[] = {0, 2, 3, 1}; - TestTensor input{armnn::TensorShape{1, 2, 2, 2},{1, 2, 3, 4, 5, 6, 7, 8}}; - TestTensor expected{armnn::TensorShape{1, 2, 2, 2},{1, 5, 2, 6, 3, 7, 4, 8}}; + TEST_CASE("Transpose_CpuAcc") + { + int32_t perm[] = {2, 3, 1, 0}; + TestTensor input{armnn::TensorShape{1, 2, 2, 2},{1, 2, 3, 4, 5, 6, 7, 8}}; + TestTensor expected{armnn::TensorShape{2, 2, 2, 1},{1, 5, 2, 6, 3, 7, 4, 8}}; + + TransposeTestImpl(input, perm, expected, armnn::Compute::CpuAcc); + } + + TEST_CASE("TransposeNHWCToArmNN_CpuAcc") + { + int32_t perm[] = {0, 3, 1, 2}; + TestTensor input{armnn::TensorShape{1, 2, 2, 3},{1, 2, 3, 11, 12, 13, 21, 22, 23, 31, 32, 33}}; + TestTensor expected{armnn::TensorShape{1, 3, 2, 2},{1, 11, 21, 31, 2, 12, 22, 32, 3, 13, 23, 33}}; - TransposeTestImpl(input, perm, expected, sample); + TransposeTestImpl(input, perm, expected, armnn::Compute::CpuAcc); + } + TEST_CASE("TransposeArmNNToNHWC_CpuAcc") + { + int32_t perm[] = {0, 2, 3, 1}; + TestTensor input{armnn::TensorShape{1, 2, 2, 2},{1, 2, 3, 4, 5, 6, 7, 8}}; + TestTensor expected{armnn::TensorShape{1, 2, 2, 2},{1, 5, 2, 6, 3, 7, 4, 8}}; + + TransposeTestImpl(input, perm, expected, armnn::Compute::CpuAcc); + } } +TEST_SUITE("TransposeTests_GpuAcc") +{ + TEST_CASE("Transpose_GpuAcc") + { + int32_t perm[] = {2, 3, 1, 0}; + TestTensor input{armnn::TensorShape{1, 2, 2, 2},{1, 2, 3, 4, 5, 6, 7, 8}}; + TestTensor expected{armnn::TensorShape{2, 2, 2, 1},{1, 5, 2, 6, 3, 7, 4, 8}}; + + TransposeTestImpl(input, perm, expected, armnn::Compute::GpuAcc); + } -BOOST_AUTO_TEST_SUITE_END() + TEST_CASE("TransposeNHWCToArmNN_GpuAcc") + { + int32_t perm[] = {0, 3, 1, 2}; + TestTensor input{armnn::TensorShape{1, 2, 2, 3},{1, 2, 3, 11, 12, 13, 21, 22, 23, 31, 32, 33}}; + TestTensor expected{armnn::TensorShape{1, 3, 2, 2},{1, 11, 21, 31, 2, 12, 22, 32, 3, 13, 23, 33}}; + + TransposeTestImpl(input, perm, expected, armnn::Compute::GpuAcc); + } + TEST_CASE("TransposeArmNNToNHWC_GpuAcc") + { + int32_t perm[] = {0, 2, 3, 1}; + TestTensor input{armnn::TensorShape{1, 2, 2, 2},{1, 2, 3, 4, 5, 6, 7, 8}}; + TestTensor expected{armnn::TensorShape{1, 2, 2, 2},{1, 5, 2, 6, 3, 7, 4, 8}}; + + TransposeTestImpl(input, perm, expected, armnn::Compute::GpuAcc); + } +} +#endif -- cgit v1.2.1