From 40d2741b459fb7d55ff034d615678848a8e0af7c Mon Sep 17 00:00:00 2001 From: Francis Murtagh Date: Thu, 28 Oct 2021 11:11:35 +0100 Subject: IVGCVSW-6513: Compilation failure in armnn-mobilenet-quant in ML-Examples * Move TContainer to armnnUtils library Signed-off-by: Francis Murtagh Change-Id: I3c0f895d11b66f6ee224ac689a19d0477f990b98 --- CMakeLists.txt | 2 +- include/armnn/Utils.hpp | 8 +------- include/armnnUtils/TContainer.hpp | 20 ++++++++++++++++++++ src/armnn/test/ModelAccuracyCheckerTest.cpp | 20 ++++++++++---------- tests/ExecuteNetwork/ExecuteNetwork.cpp | 14 +++++++------- tests/ImageTensorGenerator/ImageTensorGenerator.cpp | 2 +- tests/ImageTensorGenerator/ImageTensorGenerator.hpp | 2 +- tests/InferenceModel.hpp | 16 +++++++++------- tests/InferenceTest.hpp | 11 ++++++----- tests/InferenceTest.inl | 4 +++- .../ModelAccuracyTool-Armnn.cpp | 8 ++++---- .../NetworkExecutionUtils/NetworkExecutionUtils.cpp | 2 +- .../NetworkExecutionUtils/NetworkExecutionUtils.hpp | 4 ++-- 13 files changed, 66 insertions(+), 47 deletions(-) create mode 100644 include/armnnUtils/TContainer.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 2def5fe8e0..3d6f663b42 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -76,6 +76,7 @@ list(APPEND armnnUtils_sources include/armnnUtils/Filesystem.hpp include/armnnUtils/FloatingPointComparison.hpp include/armnnUtils/FloatingPointConverter.hpp + include/armnnUtils/TContainer.hpp include/armnnUtils/TensorUtils.hpp include/armnnUtils/Threads.hpp include/armnnUtils/Transpose.hpp @@ -108,7 +109,6 @@ list(APPEND armnnUtils_sources src/armnnUtils/TensorUtils.cpp src/armnnUtils/Threads.cpp src/armnnUtils/Transpose.cpp - third-party/mapbox/variant.hpp ) add_library_ex(armnnUtils STATIC ${armnnUtils_sources}) diff --git a/include/armnn/Utils.hpp b/include/armnn/Utils.hpp index 533117c5d9..7d442ba4b5 100644 --- a/include/armnn/Utils.hpp +++ b/include/armnn/Utils.hpp @@ -4,9 +4,8 @@ // #pragma once -#include "armnn/TypesUtils.hpp" +#include -#include #include namespace armnn @@ -42,9 +41,4 @@ bool NeonDetected(); const std::string GetVersion(); -// Standard definition of TContainer used by ArmNN, use this definition or add alternative definitions here instead of -// defining your own. -using TContainer = - mapbox::util::variant, std::vector, std::vector, std::vector>; - } // namespace armnn diff --git a/include/armnnUtils/TContainer.hpp b/include/armnnUtils/TContainer.hpp new file mode 100644 index 0000000000..a55f9df488 --- /dev/null +++ b/include/armnnUtils/TContainer.hpp @@ -0,0 +1,20 @@ +// +// Copyright © 2020 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include + +#include + +namespace armnnUtils +{ + +// Standard definition of TContainer used by ArmNN, use this definition or add alternative definitions here instead of +// defining your own. + using TContainer = + mapbox::util::variant, std::vector, std::vector, std::vector>; + +} // namespace armnnUtils diff --git a/src/armnn/test/ModelAccuracyCheckerTest.cpp b/src/armnn/test/ModelAccuracyCheckerTest.cpp index 47ae3f4b0a..59711a5397 100644 --- a/src/armnn/test/ModelAccuracyCheckerTest.cpp +++ b/src/armnn/test/ModelAccuracyCheckerTest.cpp @@ -3,7 +3,7 @@ // SPDX-License-Identifier: MIT // #include "ModelAccuracyChecker.hpp" -#include +#include #include @@ -60,12 +60,12 @@ TEST_CASE_FIXTURE(TestHelper, "TestFloat32OutputTensorAccuracy") // Add image 1 and check accuracy std::vector inferenceOutputVector1 = {0.05f, 0.10f, 0.70f, 0.15f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}; - armnn::TContainer inference1Container(inferenceOutputVector1); - std::vector outputTensor1; + armnnUtils::TContainer inference1Container(inferenceOutputVector1); + std::vector outputTensor1; outputTensor1.push_back(inference1Container); std::string imageName = "val_01.JPEG"; - checker.AddImageResult(imageName, outputTensor1); + checker.AddImageResult(imageName, outputTensor1); // Top 1 Accuracy float totalAccuracy = checker.GetAccuracy(1); @@ -73,12 +73,12 @@ TEST_CASE_FIXTURE(TestHelper, "TestFloat32OutputTensorAccuracy") // Add image 2 and check accuracy std::vector inferenceOutputVector2 = {0.10f, 0.0f, 0.0f, 0.0f, 0.05f, 0.70f, 0.0f, 0.0f, 0.0f, 0.15f}; - armnn::TContainer inference2Container(inferenceOutputVector2); - std::vector outputTensor2; + armnnUtils::TContainer inference2Container(inferenceOutputVector2); + std::vector outputTensor2; outputTensor2.push_back(inference2Container); imageName = "val_02.JPEG"; - checker.AddImageResult(imageName, outputTensor2); + checker.AddImageResult(imageName, outputTensor2); // Top 1 Accuracy totalAccuracy = checker.GetAccuracy(1); @@ -90,12 +90,12 @@ TEST_CASE_FIXTURE(TestHelper, "TestFloat32OutputTensorAccuracy") // Add image 3 and check accuracy std::vector inferenceOutputVector3 = {0.0f, 0.10f, 0.0f, 0.0f, 0.05f, 0.70f, 0.0f, 0.0f, 0.0f, 0.15f}; - armnn::TContainer inference3Container(inferenceOutputVector3); - std::vector outputTensor3; + armnnUtils::TContainer inference3Container(inferenceOutputVector3); + std::vector outputTensor3; outputTensor3.push_back(inference3Container); imageName = "val_03.JPEG"; - checker.AddImageResult(imageName, outputTensor3); + checker.AddImageResult(imageName, outputTensor3); // Top 1 Accuracy totalAccuracy = checker.GetAccuracy(1); diff --git a/tests/ExecuteNetwork/ExecuteNetwork.cpp b/tests/ExecuteNetwork/ExecuteNetwork.cpp index db15872ad6..dd3c0a32a1 100644 --- a/tests/ExecuteNetwork/ExecuteNetwork.cpp +++ b/tests/ExecuteNetwork/ExecuteNetwork.cpp @@ -9,8 +9,8 @@ #include #include -#include #include +#include #include #if defined(ARMNN_SERIALIZER) @@ -370,8 +370,8 @@ int MainImpl(const ExecuteNetworkParams& params, { using namespace std::chrono; - std::vector> inputs; - std::vector> outputs; + std::vector> inputs; + std::vector> outputs; try { @@ -436,7 +436,7 @@ int MainImpl(const ExecuteNetworkParams& params, for(unsigned int j = 0; j < params.m_Iterations ; ++j) { - std::vector inputDataContainers; + std::vector inputDataContainers; for(unsigned int i = 0; i < numInputs; ++i) { // If there are less input files given than required for the execution of @@ -460,7 +460,7 @@ int MainImpl(const ExecuteNetworkParams& params, numElements = params.m_InputTensorShapes[i]->GetNumElements(); } - armnn::TContainer tensorData; + armnnUtils::TContainer tensorData; PopulateTensorWithData(tensorData, numElements, params.m_InputTypes[i], @@ -476,7 +476,7 @@ int MainImpl(const ExecuteNetworkParams& params, for (unsigned int j = 0; j < params.m_Iterations; ++j) { - std::vector outputDataContainers; + std::vector outputDataContainers; for (unsigned int i = 0; i < numOutputs; ++i) { if (params.m_OutputTypes[i].compare("float") == 0) @@ -596,7 +596,7 @@ int MainImpl(const ExecuteNetworkParams& params, { ARMNN_LOG(info) << "Asynchronous execution with Arm NN thread pool... \n"; armnn::AsyncCallbackManager callbackManager; - std::unordered_map&> inferenceOutputMap; + std::unordered_map&> inferenceOutputMap; // Declare the latest and earliest inference times here to be used when calculating overall time std::chrono::high_resolution_clock::time_point earliestStartTime; diff --git a/tests/ImageTensorGenerator/ImageTensorGenerator.cpp b/tests/ImageTensorGenerator/ImageTensorGenerator.cpp index a69a098eb4..0f1cf6d890 100644 --- a/tests/ImageTensorGenerator/ImageTensorGenerator.cpp +++ b/tests/ImageTensorGenerator/ImageTensorGenerator.cpp @@ -296,7 +296,7 @@ int main(int argc, char* argv[]) const unsigned int batchSize = 1; const armnn::DataLayout outputLayout(cmdline.GetLayout()); - std::vector imageDataContainers; + std::vector imageDataContainers; const NormalizationParameters& normParams = GetNormalizationParameters(modelFormat, outputType); try { diff --git a/tests/ImageTensorGenerator/ImageTensorGenerator.hpp b/tests/ImageTensorGenerator/ImageTensorGenerator.hpp index c668608f1d..b9579e7636 100644 --- a/tests/ImageTensorGenerator/ImageTensorGenerator.hpp +++ b/tests/ImageTensorGenerator/ImageTensorGenerator.hpp @@ -5,9 +5,9 @@ #include "../InferenceTestImage.hpp" -#include #include +#include #include #include diff --git a/tests/InferenceModel.hpp b/tests/InferenceModel.hpp index e2cd5d9868..13f7d74e8d 100644 --- a/tests/InferenceModel.hpp +++ b/tests/InferenceModel.hpp @@ -7,13 +7,15 @@ #include -#include #include #include #include #include #include #include + +#include + #include #if defined(ARMNN_SERIALIZER) @@ -584,8 +586,8 @@ public: } std::chrono::duration Run( - const std::vector& inputContainers, - std::vector& outputContainers) + const std::vector& inputContainers, + std::vector& outputContainers) { for (unsigned int i = 0; i < outputContainers.size(); ++i) { @@ -633,8 +635,8 @@ public: std::tuple> RunAsync( armnn::experimental::IWorkingMemHandle& workingMemHandleRef, - const std::vector& inputContainers, - std::vector& outputContainers, + const std::vector& inputContainers, + std::vector& outputContainers, unsigned int inferenceID) { for (unsigned int i = 0; i < outputContainers.size(); ++i) @@ -684,8 +686,8 @@ public: } } - void RunAsync(const std::vector& inputContainers, - std::vector& outputContainers, + void RunAsync(const std::vector& inputContainers, + std::vector& outputContainers, std::shared_ptr cb) { for (unsigned int i = 0; i < outputContainers.size(); ++i) diff --git a/tests/InferenceTest.hpp b/tests/InferenceTest.hpp index d0bb0c00f3..fb9c048488 100644 --- a/tests/InferenceTest.hpp +++ b/tests/InferenceTest.hpp @@ -7,11 +7,12 @@ #include "InferenceModel.hpp" #include -#include #include #include #include +#include + #include #include @@ -114,7 +115,7 @@ public: InferenceModelTestCase(TModel& model, unsigned int testCaseId, - const std::vector& inputs, + const std::vector& inputs, const std::vector& outputSizes) : m_Model(model) , m_TestCaseId(testCaseId) @@ -137,13 +138,13 @@ public: protected: unsigned int GetTestCaseId() const { return m_TestCaseId; } - const std::vector& GetOutputs() const { return m_Outputs; } + const std::vector& GetOutputs() const { return m_Outputs; } private: TModel& m_Model; unsigned int m_TestCaseId; - std::vector m_Inputs; - std::vector m_Outputs; + std::vector m_Inputs; + std::vector m_Outputs; }; template diff --git a/tests/InferenceTest.inl b/tests/InferenceTest.inl index 91a90f3820..b6087c5e5a 100644 --- a/tests/InferenceTest.inl +++ b/tests/InferenceTest.inl @@ -7,6 +7,8 @@ #include #include #include +#include + #include "CxxoptsUtils.hpp" #include @@ -38,7 +40,7 @@ ClassifierTestCase::ClassifierTestCase( unsigned int label, std::vector modelInput) : InferenceModelTestCase( - model, testCaseId, std::vector{ modelInput }, { model.GetOutputSize() }) + model, testCaseId, std::vector{ modelInput }, { model.GetOutputSize() }) , m_Label(label) , m_QuantizationParams(model.GetQuantizationParams()) , m_NumInferencesRef(numInferencesRef) diff --git a/tests/ModelAccuracyTool-Armnn/ModelAccuracyTool-Armnn.cpp b/tests/ModelAccuracyTool-Armnn/ModelAccuracyTool-Armnn.cpp index d1d31f48a1..c08d88e053 100644 --- a/tests/ModelAccuracyTool-Armnn/ModelAccuracyTool-Armnn.cpp +++ b/tests/ModelAccuracyTool-Armnn/ModelAccuracyTool-Armnn.cpp @@ -9,7 +9,7 @@ #include "armnnDeserializer/IDeserializer.hpp" #include -#include +#include #include #include @@ -325,8 +325,8 @@ int main(int argc, char* argv[]) const std::string imageName = imageEntry.first; std::cout << "Processing image: " << imageName << "\n"; - vector inputDataContainers; - vector outputDataContainers; + vector inputDataContainers; + vector outputDataContainers; auto imagePath = pathToDataDir / fs::path(imageName); switch (inputTensorDataType) @@ -370,7 +370,7 @@ int main(int argc, char* argv[]) ARMNN_LOG(fatal) << "armnn::IRuntime: Failed to enqueue workload for image: " << imageName; } - checker.AddImageResult(imageName, outputDataContainers); + checker.AddImageResult(imageName, outputDataContainers); } } else diff --git a/tests/NetworkExecutionUtils/NetworkExecutionUtils.cpp b/tests/NetworkExecutionUtils/NetworkExecutionUtils.cpp index 323e9fb812..6c74aaa6ed 100644 --- a/tests/NetworkExecutionUtils/NetworkExecutionUtils.cpp +++ b/tests/NetworkExecutionUtils/NetworkExecutionUtils.cpp @@ -228,7 +228,7 @@ void TensorPrinter::WriteToFile(const std::vector& values) } } -void PopulateTensorWithData(armnn::TContainer& tensorData, +void PopulateTensorWithData(armnnUtils::TContainer& tensorData, unsigned int numElements, const std::string& dataTypeStr, const armnn::Optional& qParams, diff --git a/tests/NetworkExecutionUtils/NetworkExecutionUtils.hpp b/tests/NetworkExecutionUtils/NetworkExecutionUtils.hpp index d9e2459703..bc2868ab35 100644 --- a/tests/NetworkExecutionUtils/NetworkExecutionUtils.hpp +++ b/tests/NetworkExecutionUtils/NetworkExecutionUtils.hpp @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include #include @@ -53,7 +53,7 @@ private: using QuantizationParams = std::pair; -void PopulateTensorWithData(armnn::TContainer& tensorData, +void PopulateTensorWithData(armnnUtils::TContainer& tensorData, unsigned int numElements, const std::string& dataTypeStr, const armnn::Optional& qParams, -- cgit v1.2.1