From 483c811ea6fd0e7801aac1afd979ed02a649064b Mon Sep 17 00:00:00 2001 From: Sadik Armagan Date: Tue, 1 Jun 2021 09:24:52 +0100 Subject: IVGCVSW-5962 Remove boost::multi_array * Replaced all instances of boost::multi_array with flat vectors. * Updated LayerTestResult struct with new member variables. * Updated CompareTensor function to compare flat vectors and the shape. * Removed MakeTensor function from TensorHelpers.hpp. * Removed GetTensorShapeAsArray function from LayerTestResult.hpp. * Removed boost::array usage. * Removed boost::extents usages. * Removed boost::random usages. Signed-off-by: Matthew Sloyan Signed-off-by: Sadik Armagan Change-Id: Iccde9d6640b534940292ff048fb80c00b38c4743 --- .../test/layerTests/AdditionTestImpl.cpp | 129 +++++++++++---------- 1 file changed, 66 insertions(+), 63 deletions(-) (limited to 'src/backends/backendsCommon/test/layerTests/AdditionTestImpl.cpp') diff --git a/src/backends/backendsCommon/test/layerTests/AdditionTestImpl.cpp b/src/backends/backendsCommon/test/layerTests/AdditionTestImpl.cpp index 0e1b7336de..ce8f74d2e0 100644 --- a/src/backends/backendsCommon/test/layerTests/AdditionTestImpl.cpp +++ b/src/backends/backendsCommon/test/layerTests/AdditionTestImpl.cpp @@ -186,7 +186,7 @@ LayerTestResult AdditionBroadcastTestImpl( outputTensorInfo.SetQuantizationOffset(qOffset); } - auto input1 = MakeTensor(inputTensorInfo1, armnnUtils::QuantizedVector( + auto input1 = armnnUtils::QuantizedVector( { 0.0f, 1.0f, @@ -197,17 +197,18 @@ LayerTestResult AdditionBroadcastTestImpl( 4.0f, 5.0f, }, - qScale, qOffset)); + qScale, qOffset); - auto input2 = MakeTensor(inputTensorInfo2, armnnUtils::QuantizedVector( + auto input2 = armnnUtils::QuantizedVector( { 0.5f, 1.5f, 2.5f, 3.5f, 4.5f, 5.5f, }, - qScale, qOffset)); + qScale, qOffset); - LayerTestResult ret(outputTensorInfo); - ret.outputExpected = MakeTensor(outputTensorInfo, armnnUtils::QuantizedVector( + std::vector actualOutput(outputTensorInfo.GetNumElements()); + + auto expectedOutput = armnnUtils::QuantizedVector( { 0.5f, 1.5f, 2.5f, 4.5f, 5.5f, 6.5f, @@ -218,7 +219,7 @@ LayerTestResult AdditionBroadcastTestImpl( 4.5f, 5.5f, 6.5f, 8.5f, 9.5f, 10.5f, }, - qScale, qOffset)); + qScale, qOffset); std::unique_ptr inputHandle1 = tensorHandleFactory.CreateTensorHandle(inputTensorInfo1); std::unique_ptr inputHandle2 = tensorHandleFactory.CreateTensorHandle(inputTensorInfo2); @@ -236,15 +237,18 @@ LayerTestResult AdditionBroadcastTestImpl( inputHandle2->Allocate(); outputHandle->Allocate(); - CopyDataToITensorHandle(inputHandle1.get(), &input1[0][0][0][0]); - CopyDataToITensorHandle(inputHandle2.get(), &input2[0][0][0][0]); + CopyDataToITensorHandle(inputHandle1.get(), input1.data()); + CopyDataToITensorHandle(inputHandle2.get(), input2.data()); workload->PostAllocationConfigure(); workload->Execute(); - CopyDataFromITensorHandle(&ret.output[0][0][0][0], outputHandle.get()); + CopyDataFromITensorHandle(actualOutput.data(), outputHandle.get()); - return ret; + return LayerTestResult(actualOutput, + expectedOutput, + outputHandle->GetShape(), + outputTensorInfo.GetShape()); } template> @@ -270,7 +274,7 @@ LayerTestResult AdditionBroadcast1ElementTestImpl( outputTensorInfo.SetQuantizationOffset(qOffset); } - auto input1 = MakeTensor(inputTensorInfo1, armnnUtils::QuantizedVector( + auto input1 = armnnUtils::QuantizedVector( { 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, @@ -279,16 +283,17 @@ LayerTestResult AdditionBroadcast1ElementTestImpl( 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, }, - qScale, qOffset)); + qScale, qOffset); - auto input2 = MakeTensor(inputTensorInfo2, armnnUtils::QuantizedVector( + auto input2 = armnnUtils::QuantizedVector( { 0.5f, }, - qScale, qOffset)); + qScale, qOffset); + + std::vector actualOutput(outputTensorInfo.GetNumElements()); - LayerTestResult ret(outputTensorInfo); - ret.outputExpected = MakeTensor(outputTensorInfo, armnnUtils::QuantizedVector( + auto expectedOutput = armnnUtils::QuantizedVector( { 0.5f, 1.5f, 2.5f, 3.5f, 4.5f, 5.5f, @@ -297,7 +302,7 @@ LayerTestResult AdditionBroadcast1ElementTestImpl( 12.5f, 13.5f, 14.5f, 15.5f, 16.5f, 17.5f, }, - qScale, qOffset)); + qScale, qOffset); std::unique_ptr inputHandle1 = tensorHandleFactory.CreateTensorHandle(inputTensorInfo1); std::unique_ptr inputHandle2 = tensorHandleFactory.CreateTensorHandle(inputTensorInfo2); @@ -315,15 +320,18 @@ LayerTestResult AdditionBroadcast1ElementTestImpl( inputHandle2->Allocate(); outputHandle->Allocate(); - CopyDataToITensorHandle(inputHandle1.get(), &input1[0][0][0][0]); - CopyDataToITensorHandle(inputHandle2.get(), &input2[0][0][0][0]); + CopyDataToITensorHandle(inputHandle1.get(), input1.data()); + CopyDataToITensorHandle(inputHandle2.get(), input2.data()); workload->PostAllocationConfigure(); workload->Execute(); - CopyDataFromITensorHandle(&ret.output[0][0][0][0], outputHandle.get()); + CopyDataFromITensorHandle(actualOutput.data(), outputHandle.get()); - return ret; + return LayerTestResult(actualOutput, + expectedOutput, + outputHandle->GetShape(), + outputTensorInfo.GetShape()); } LayerTestResult AdditionBroadcastTest( @@ -545,11 +553,10 @@ LayerTestResult AdditionAfterMaxPoolTest( armnn::TensorInfo poolingInputTensorInfo({ 1, 1, 3, 3}, armnn::DataType::Float32); armnn::TensorInfo poolingOutputTensorInfo({ 1, 1, 2, 2}, armnn::DataType::Float32); - boost::multi_array poolingInput = MakeTensor(poolingInputTensorInfo, - {1, 2, 3, - 4, 5, 6, - 7, 8, 9 - }); + std::vector poolingInput = {1, 2, 3, + 4, 5, 6, + 7, 8, 9 + }; std::unique_ptr poolingInputHandle = tensorHandleFactory.CreateTensorHandle(poolingInputTensorInfo); std::unique_ptr poolingOutputHandle = @@ -575,37 +582,26 @@ LayerTestResult AdditionAfterMaxPoolTest( // Create the MaxPool std::unique_ptr workload = workloadFactory.CreatePooling2d(queueDescriptor, workloadInfo); - //LayerTestResult result(poolingOutputTensorInfo); - auto shape( GetTensorShapeAsArray<4>(poolingOutputTensorInfo)); - boost::multi_array resultMaxPool; - resultMaxPool.resize(shape); - + std::vector resultMaxPool(poolingOutputTensorInfo.GetNumElements()); // Create addition with another tensor the same size // This would be the result to apply a Conv2d with kernel ones(2) and stride 1x1 // with the initial tensor. // 12, 16 // 24, 28 + armnn::TensorInfo addInputTensorInfo({ 1,1,2,2 }, armnn::DataType::Float32); + armnn::TensorInfo addOutputTensorInfo({ 1,1,2,2 }, armnn::DataType::Float32); - armnn::TensorInfo addInputTensorInfo({ 1,1,2,2}, armnn::DataType::Float32); - armnn::TensorInfo addOutputTensorInfo({ 1,1,2,2}, armnn::DataType::Float32); - - boost::multi_array addInput = MakeTensor(addInputTensorInfo, - {12, 16, - 24, 28, - }); + std::vector addInput = { 12, 16, + 24, 28 }; // Expected output tensor after MaxPool and Addition. - LayerTestResult addRet(addOutputTensorInfo); - addRet.outputExpected = MakeTensor(addOutputTensorInfo, std::vector( - { - 13, 19, - 31, 37 - })); + std::vector actualOutput(addOutputTensorInfo.GetNumElements()); + std::vector expectedOutput = { 13, 19, + 31, 37 }; std::unique_ptr addInputHandle = tensorHandleFactory.CreateTensorHandle(addInputTensorInfo); - std::unique_ptr addOutputHandle = - tensorHandleFactory.CreateTensorHandle(addOutputTensorInfo); + std::unique_ptr addOutputHandle = tensorHandleFactory.CreateTensorHandle(addOutputTensorInfo); armnn::AdditionQueueDescriptor data; armnn::WorkloadInfo info; @@ -622,20 +618,23 @@ LayerTestResult AdditionAfterMaxPoolTest( addInputHandle->Allocate(); addOutputHandle->Allocate(); - CopyDataToITensorHandle(poolingInputHandle.get(), &poolingInput[0][0][0][0]); - CopyDataFromITensorHandle(&resultMaxPool[0][0][0][0], poolingOutputHandle.get()); + CopyDataToITensorHandle(poolingInputHandle.get(), poolingInput.data()); + CopyDataFromITensorHandle(resultMaxPool.data(), poolingOutputHandle.get()); - CopyDataToITensorHandle(poolingOutputHandle.get(), &resultMaxPool[0][0][0][0]); - CopyDataToITensorHandle(addInputHandle.get(), &addInput[0][0][0][0]); + CopyDataToITensorHandle(poolingOutputHandle.get(), resultMaxPool.data()); + CopyDataToITensorHandle(addInputHandle.get(), addInput.data()); workload->PostAllocationConfigure(); workload->Execute(); addWorkload->PostAllocationConfigure(); addWorkload->Execute(); - CopyDataFromITensorHandle(&addRet.output[0][0][0][0], addOutputHandle.get()); + CopyDataFromITensorHandle(actualOutput.data(), addOutputHandle.get()); - return addRet; + return LayerTestResult(actualOutput, + expectedOutput, + addOutputHandle->GetShape(), + addOutputTensorInfo.GetShape()); } LayerTestResult CompareAdditionTest( @@ -660,10 +659,11 @@ LayerTestResult CompareAdditionTest( inputTensorInfo2 = armnn::TensorInfo(4, shape, armnn::DataType::Float32); outputTensorInfo = armnn::TensorInfo(4, shape, armnn::DataType::Float32); - auto input1 = MakeRandomTensor(inputTensorInfo1, 1232); - auto input2 = MakeRandomTensor(inputTensorInfo2, 456); + auto input1 = MakeRandomTensor(inputTensorInfo1, 1232); + auto input2 = MakeRandomTensor(inputTensorInfo2, 456); - LayerTestResult ret(outputTensorInfo); + std::vector actualOutput(outputTensorInfo.GetNumElements()); + std::vector expectedOutput(outputTensorInfo.GetNumElements()); std::unique_ptr inputHandle1 = tensorHandleFactory.CreateTensorHandle(inputTensorInfo1); std::unique_ptr inputHandle2 = tensorHandleFactory.CreateTensorHandle(inputTensorInfo2); @@ -695,18 +695,21 @@ LayerTestResult CompareAdditionTest( inputHandle2Ref->Allocate(); outputHandleRef->Allocate(); - CopyDataToITensorHandle(inputHandle1.get(), &input1[0][0][0][0]); - CopyDataToITensorHandle(inputHandle2.get(), &input2[0][0][0][0]); - CopyDataToITensorHandle(inputHandle1Ref.get(), &input1[0][0][0][0]); - CopyDataToITensorHandle(inputHandle2Ref.get(), &input2[0][0][0][0]); + CopyDataToITensorHandle(inputHandle1.get(), input1.data()); + CopyDataToITensorHandle(inputHandle2.get(), input2.data()); + CopyDataToITensorHandle(inputHandle1Ref.get(), input1.data()); + CopyDataToITensorHandle(inputHandle2Ref.get(), input2.data()); workload->PostAllocationConfigure(); workload->Execute(); workloadRef->PostAllocationConfigure(); workloadRef->Execute(); - CopyDataFromITensorHandle(&ret.output[0][0][0][0], outputHandle.get()); - CopyDataFromITensorHandle(&ret.outputExpected[0][0][0][0], outputHandleRef.get()); + CopyDataFromITensorHandle(actualOutput.data(), outputHandle.get()); + CopyDataFromITensorHandle(expectedOutput.data(), outputHandleRef.get()); - return ret; + return LayerTestResult(actualOutput, + expectedOutput, + outputHandle->GetShape(), + outputTensorInfo.GetShape()); } \ No newline at end of file -- cgit v1.2.1