From 08d9a1c4c9cbea4e743feefdd310ff038a6c4588 Mon Sep 17 00:00:00 2001 From: Colm Donelan Date: Wed, 9 Sep 2020 17:56:55 +0100 Subject: IVGCVSW-5298 Remove boost::format from Android-nn-driver * Replaced with stringstream, string or filesystem::path Signed-off-by: Colm Donelan Signed-off-by: Jan Eilers Change-Id: I2aa80d88cc0eaff5de4dc6a121370ebf41dcb0a8 --- Android.mk | 9 +++++++++ ArmnnDriverImpl.cpp | 11 ++++++----- ArmnnPreparedModel.cpp | 4 +--- ArmnnPreparedModel_1_2.cpp | 3 +-- ArmnnPreparedModel_1_3.cpp | 3 +-- Utils.cpp | 27 ++++++++++++++------------- Utils.hpp | 3 --- test/Android.mk | 10 ++++++++++ test/UtilsTests.cpp | 11 +++++------ 9 files changed, 47 insertions(+), 34 deletions(-) diff --git a/Android.mk b/Android.mk index 98c89032..673bf325 100644 --- a/Android.mk +++ b/Android.mk @@ -49,6 +49,7 @@ endif # Configure these paths if you move the source or Khronos headers ARMNN_HEADER_PATH := $(LOCAL_PATH)/armnn/include +ARMNN_THIRD_PARTY_PATH := $(LOCAL_PATH)/armnn/third-party ARMNN_UTILS_HEADER_PATH := $(LOCAL_PATH)/armnn/src/armnnUtils OPENCL_HEADER_PATH := $(LOCAL_PATH)/clframework/include NN_HEADER_PATH := $(LOCAL_PATH)/../../../frameworks/ml/nn/runtime/include @@ -104,6 +105,7 @@ LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk LOCAL_C_INCLUDES := \ $(ARMNN_HEADER_PATH) \ + $(ARMNN_THIRD_PARTY_PATH) \ $(ARMNN_UTILS_HEADER_PATH) \ $(OPENCL_HEADER_PATH) \ $(NN_HEADER_PATH) @@ -236,6 +238,7 @@ LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk LOCAL_C_INCLUDES := \ $(ARMNN_HEADER_PATH) \ + $(ARMNN_THIRD_PARTY_PATH) \ $(ARMNN_UTILS_HEADER_PATH) \ $(OPENCL_HEADER_PATH) \ $(NN_HEADER_PATH) @@ -361,6 +364,7 @@ LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk LOCAL_C_INCLUDES := \ $(ARMNN_HEADER_PATH) \ + $(ARMNN_THIRD_PARTY_PATH) \ $(ARMNN_UTILS_HEADER_PATH) \ $(OPENCL_HEADER_PATH) \ $(NN_HEADER_PATH) @@ -481,6 +485,7 @@ LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk LOCAL_C_INCLUDES := \ $(ARMNN_HEADER_PATH) \ + $(ARMNN_THIRD_PARTY_PATH) \ $(ARMNN_UTILS_HEADER_PATH) \ $(OPENCL_HEADER_PATH) \ $(NN_HEADER_PATH) @@ -603,6 +608,7 @@ LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk LOCAL_C_INCLUDES := \ $(ARMNN_HEADER_PATH) \ + $(ARMNN_THIRD_PARTY_PATH) \ $(NN_HEADER_PATH) LOCAL_CFLAGS := \ @@ -707,6 +713,7 @@ LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk LOCAL_C_INCLUDES := \ $(ARMNN_HEADER_PATH) \ + $(ARMNN_THIRD_PARTY_PATH) \ $(NN_HEADER_PATH) LOCAL_CFLAGS := \ @@ -803,6 +810,7 @@ LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk LOCAL_C_INCLUDES := \ $(ARMNN_HEADER_PATH) \ + $(ARMNN_THIRD_PARTY_PATH) \ $(NN_HEADER_PATH) LOCAL_CFLAGS := \ @@ -891,6 +899,7 @@ LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk LOCAL_C_INCLUDES := \ $(ARMNN_HEADER_PATH) \ + $(ARMNN_THIRD_PARTY_PATH) \ $(NN_HEADER_PATH) LOCAL_CFLAGS := \ diff --git a/ArmnnDriverImpl.cpp b/ArmnnDriverImpl.cpp index 936cc6e5..0934e2c3 100644 --- a/ArmnnDriverImpl.cpp +++ b/ArmnnDriverImpl.cpp @@ -20,6 +20,7 @@ #include "ModelToINetworkConverter.hpp" #include "SystemPropertiesUtils.hpp" + #include #include @@ -219,11 +220,11 @@ Return ArmnnDriverImpl::getSupportedOperations(const armnn::IRu std::string timestamp; if (!options.GetRequestInputsAndOutputsDumpDir().empty()) { - timestamp = GetFileTimestamp(); - fileName = boost::str(boost::format("%1%/%2%_getSupportedOperations.txt") - % options.GetRequestInputsAndOutputsDumpDir() - % timestamp); - ss << " : " << fileName; + ss << " : " + << options.GetRequestInputsAndOutputsDumpDir() + << "/" + << GetFileTimestamp() + << "_getSupportedOperations.txt"; } ALOGV(ss.str().c_str()); diff --git a/ArmnnPreparedModel.cpp b/ArmnnPreparedModel.cpp index 8aa28d7e..c6b6b71c 100644 --- a/ArmnnPreparedModel.cpp +++ b/ArmnnPreparedModel.cpp @@ -8,12 +8,10 @@ #include "ArmnnPreparedModel.hpp" #include "Utils.hpp" -#include #include #include #include - #include #include @@ -94,7 +92,7 @@ void ArmnnPreparedModel::DumpTensorsIfRequired(char const* tensorNam { if (!m_RequestInputsAndOutputsDumpDir.empty()) { - const std::string requestName = boost::str(boost::format("%1%_%2%.dump") % m_NetworkId % m_RequestCount); + const std::string requestName = std::to_string(m_NetworkId) + "_" + std::to_string(m_RequestCount) + ".dump"; for (std::size_t i = 0u; i < tensorBindings.size(); ++i) { DumpTensor(m_RequestInputsAndOutputsDumpDir, diff --git a/ArmnnPreparedModel_1_2.cpp b/ArmnnPreparedModel_1_2.cpp index dd5bdae7..c2148ba1 100644 --- a/ArmnnPreparedModel_1_2.cpp +++ b/ArmnnPreparedModel_1_2.cpp @@ -8,7 +8,6 @@ #include "ArmnnPreparedModel_1_2.hpp" #include "Utils.hpp" -#include #include #include #include @@ -127,7 +126,7 @@ void ArmnnPreparedModel_1_2::DumpTensorsIfRequired(char const* tenso { if (!m_RequestInputsAndOutputsDumpDir.empty()) { - const std::string requestName = boost::str(boost::format("%1%_%2%.dump") % m_NetworkId % m_RequestCount); + const std::string requestName = std::to_string(m_NetworkId) + "_" + std::to_string(m_RequestCount) + ".dump"; for (std::size_t i = 0u; i < tensorBindings.size(); ++i) { DumpTensor(m_RequestInputsAndOutputsDumpDir, diff --git a/ArmnnPreparedModel_1_3.cpp b/ArmnnPreparedModel_1_3.cpp index 386cc174..aed4fa14 100644 --- a/ArmnnPreparedModel_1_3.cpp +++ b/ArmnnPreparedModel_1_3.cpp @@ -14,7 +14,6 @@ #include #include -#include #include #include #include @@ -148,7 +147,7 @@ void ArmnnPreparedModel_1_3::DumpTensorsIfRequired(char const* tenso { if (!m_RequestInputsAndOutputsDumpDir.empty()) { - const std::string requestName = boost::str(boost::format("%1%_%2%.dump") % m_NetworkId % m_RequestCount); + const std::string requestName = std::to_string(m_NetworkId) + "_" + std::to_string(m_RequestCount) + ".dump"; for (std::size_t i = 0u; i < tensorBindings.size(); ++i) { DumpTensor(m_RequestInputsAndOutputsDumpDir, diff --git a/Utils.cpp b/Utils.cpp index 77575d70..895278a4 100644 --- a/Utils.cpp +++ b/Utils.cpp @@ -12,6 +12,8 @@ #include #include +#include +#include #include #include @@ -374,10 +376,11 @@ void DumpTensor(const std::string& dumpDir, const armnn::ConstTensor& tensor) { // The dump directory must exist in advance. - const std::string fileName = boost::str(boost::format("%1%/%2%_%3%.dump") % dumpDir % requestName % tensorName); + fs::path dumpPath = dumpDir; + const fs::path fileName = dumpPath / (requestName + "_" + tensorName + ".dump"); std::ofstream fileStream; - fileStream.open(fileName, std::ofstream::out | std::ofstream::trunc); + fileStream.open(fileName.c_str(), std::ofstream::out | std::ofstream::trunc); if (!fileStream.good()) { @@ -512,14 +515,12 @@ void DumpJsonProfilingIfRequired(bool gpuProfilingEnabled, ARMNN_ASSERT(profiler); // Set the name of the output profiling file. - const std::string fileName = boost::str(boost::format("%1%/%2%_%3%.json") - % dumpDir - % std::to_string(networkId) - % "profiling"); + fs::path dumpPath = dumpDir; + const fs::path fileName = dumpPath / (std::to_string(networkId) + "_profiling.json"); // Open the ouput file for writing. std::ofstream fileStream; - fileStream.open(fileName, std::ofstream::out | std::ofstream::trunc); + fileStream.open(fileName.c_str(), std::ofstream::out | std::ofstream::trunc); if (!fileStream.good()) { @@ -548,9 +549,9 @@ std::string ExportNetworkGraphToDotFile(const armnn::IOptimizedNetwork& optimize } // Set the name of the output .dot file. - fileName = boost::str(boost::format("%1%/%2%_networkgraph.dot") - % dumpDir - % timestamp); + fs::path dumpPath = dumpDir; + fs::path tempFilePath = dumpPath / (timestamp + "_networkgraph.dot"); + fileName = tempFilePath.string(); ALOGV("Exporting the optimized network graph to file: %s", fileName.c_str()); @@ -622,9 +623,9 @@ void RenameGraphDotFile(const std::string& oldName, const std::string& dumpDir, { return; } - const std::string newFileName = boost::str(boost::format("%1%/%2%_networkgraph.dot") - % dumpDir - % std::to_string(networkId)); + fs::path dumpPath = dumpDir; + const fs::path newFileName = dumpPath / (std::to_string(networkId) + "_networkgraph.dot"); + int iRet = rename(oldName.c_str(), newFileName.c_str()); if (iRet != 0) { diff --git a/Utils.hpp b/Utils.hpp index 86eb6db4..e3b7d822 100644 --- a/Utils.hpp +++ b/Utils.hpp @@ -10,9 +10,6 @@ #include #include -#include -#include - #include #include #include diff --git a/test/Android.mk b/test/Android.mk index ca940f5b..5e40f0a1 100644 --- a/test/Android.mk +++ b/test/Android.mk @@ -10,6 +10,8 @@ LOCAL_PATH := $(call my-dir) OPENCL_HEADER_PATH := $(LOCAL_PATH)/../../mali/product/khronos/original NN_HEADER_PATH := $(LOCAL_PATH)/../../../../frameworks/ml/nn/runtime/include ARMNN_HEADER_PATH := $(LOCAL_PATH)/../armnn/include +ARMNN_THIRD_PARTY_PATH := $(LOCAL_PATH)/../armnn/third-party +ARMNN_UTILS_HEADER_PATH := $(LOCAL_PATH)/../armnn/src/armnnUtils ARMNN_DRIVER_HEADER_PATH := $(LOCAL_PATH)/.. ########################## @@ -33,6 +35,8 @@ LOCAL_C_INCLUDES := \ $(OPENCL_HEADER_PATH) \ $(NN_HEADER_PATH) \ $(ARMNN_HEADER_PATH) \ + $(ARMNN_THIRD_PARTY_PATH) \ + $(ARMNN_UTILS_HEADER_PATH) \ $(ARMNN_DRIVER_HEADER_PATH) LOCAL_CFLAGS := \ @@ -145,6 +149,8 @@ LOCAL_C_INCLUDES := \ $(OPENCL_HEADER_PATH) \ $(NN_HEADER_PATH) \ $(ARMNN_HEADER_PATH) \ + $(ARMNN_THIRD_PARTY_PATH) \ + $(ARMNN_UTILS_HEADER_PATH) \ $(ARMNN_DRIVER_HEADER_PATH) LOCAL_CFLAGS := \ @@ -253,6 +259,8 @@ LOCAL_C_INCLUDES := \ $(OPENCL_HEADER_PATH) \ $(NN_HEADER_PATH) \ $(ARMNN_HEADER_PATH) \ + $(ARMNN_THIRD_PARTY_PATH) \ + $(ARMNN_UTILS_HEADER_PATH) \ $(ARMNN_DRIVER_HEADER_PATH) LOCAL_CFLAGS := \ @@ -356,6 +364,8 @@ LOCAL_C_INCLUDES := \ $(OPENCL_HEADER_PATH) \ $(NN_HEADER_PATH) \ $(ARMNN_HEADER_PATH) \ + $(ARMNN_THIRD_PARTY_PATH) \ + $(ARMNN_UTILS_HEADER_PATH) \ $(ARMNN_DRIVER_HEADER_PATH) LOCAL_CFLAGS := \ diff --git a/test/UtilsTests.cpp b/test/UtilsTests.cpp index a11c8274..054c0719 100644 --- a/test/UtilsTests.cpp +++ b/test/UtilsTests.cpp @@ -11,9 +11,10 @@ #include #include -#include #include +#include + BOOST_AUTO_TEST_SUITE(UtilsTests) using namespace android; @@ -42,9 +43,7 @@ public: // NOTE: the export now uses a time stamp to name the file so we // can't predict ahead of time what the file name will be. std::string timestamp = "dummy"; - m_FileName = boost::str(boost::format("%1%/%2%_networkgraph.dot") - % m_RequestInputsAndOutputsDumpDir - % timestamp); + m_FileName = m_RequestInputsAndOutputsDumpDir / (timestamp + "_networkgraph.dot"); } // Teardown: delete the dump file regardless of the outcome of the tests. @@ -96,8 +95,8 @@ public: (std::istreambuf_iterator())); } - std::string m_RequestInputsAndOutputsDumpDir; - std::string m_FileName; + fs::path m_RequestInputsAndOutputsDumpDir; + fs::path m_FileName; private: std::ifstream m_FileStream; -- cgit v1.2.1