IVGCVSW-6292 Allow profiling details to be switched off during profiling

 * Add switch for network details during profiling

Signed-off-by: Keith Davis <keith.davis@arm.com>
Change-Id: I8bd49fd58f0e0255598106e9ab36806ee78391d6
diff --git a/tests/ExecuteNetwork/ExecuteNetwork.cpp b/tests/ExecuteNetwork/ExecuteNetwork.cpp
index e757d2c..64296d3 100644
--- a/tests/ExecuteNetwork/ExecuteNetwork.cpp
+++ b/tests/ExecuteNetwork/ExecuteNetwork.cpp
@@ -324,6 +324,7 @@
         inferenceModelParams.m_MLGOTuningFilePath             = params.m_MLGOTuningFilePath;
         inferenceModelParams.m_AsyncEnabled                   = params.m_Concurrent;
         inferenceModelParams.m_ThreadPoolSize                 = params.m_ThreadPoolSize;
+        inferenceModelParams.m_OutputDetailsToStdOut          = params.m_OutputDetailsToStdOut;
 
         for(const std::string& inputName: params.m_InputNames)
         {
@@ -768,6 +769,12 @@
         return EXIT_FAILURE;
     }
 
+    if (ProgramOptions.m_ExNetParams.m_OutputDetailsToStdOut && !ProgramOptions.m_ExNetParams.m_EnableProfiling)
+    {
+        ARMNN_LOG(fatal) << "You must enable profiling if you would like to output layer details";
+        return EXIT_FAILURE;
+    }
+
     // Create runtime
     std::shared_ptr<armnn::IRuntime> runtime(armnn::IRuntime::Create(ProgramOptions.m_RuntimeOptions));
 
diff --git a/tests/ExecuteNetwork/ExecuteNetworkParams.hpp b/tests/ExecuteNetwork/ExecuteNetworkParams.hpp
index fe0c446..97c605b 100644
--- a/tests/ExecuteNetwork/ExecuteNetworkParams.hpp
+++ b/tests/ExecuteNetwork/ExecuteNetworkParams.hpp
@@ -43,6 +43,7 @@
     std::string                   m_ModelFormat;
     std::string                   m_ModelPath;
     unsigned int                  m_NumberOfThreads;
+    bool                          m_OutputDetailsToStdOut;
     std::vector<std::string>      m_OutputNames;
     std::vector<std::string>      m_OutputTensorFiles;
     std::vector<std::string>      m_OutputTypes;
diff --git a/tests/ExecuteNetwork/ExecuteNetworkProgramOptions.cpp b/tests/ExecuteNetwork/ExecuteNetworkProgramOptions.cpp
index 6ac64ff..1fd4b3d 100644
--- a/tests/ExecuteNetwork/ExecuteNetworkProgramOptions.cpp
+++ b/tests/ExecuteNetwork/ExecuteNetworkProgramOptions.cpp
@@ -407,7 +407,12 @@
 
                 ("u,counter-capture-period",
                  "If profiling is enabled in 'file-only' mode this is the capture period that will be used in the test",
-                 cxxopts::value<uint32_t>(m_RuntimeOptions.m_ProfilingOptions.m_CapturePeriod)->default_value("150"));
+                 cxxopts::value<uint32_t>(m_RuntimeOptions.m_ProfilingOptions.m_CapturePeriod)->default_value("150"))
+
+                ("output-network-details",
+                 "Outputs layer tensor infos and descriptors to std out. Defaults to off.",
+                 cxxopts::value<bool>(m_ExNetParams.m_OutputDetailsToStdOut)->default_value("false")
+                                                                            ->implicit_value("true"));
     }
     catch (const std::exception& e)
     {
diff --git a/tests/InferenceModel.hpp b/tests/InferenceModel.hpp
index 4d2b167..1db287f 100644
--- a/tests/InferenceModel.hpp
+++ b/tests/InferenceModel.hpp
@@ -100,6 +100,7 @@
     bool                            m_InferOutputShape;
     bool                            m_EnableFastMath;
     bool                            m_SaveCachedNetwork;
+    bool                            m_OutputDetailsToStdOut;
     std::string                     m_CachedNetworkFilePath;
     unsigned int                    m_NumberOfThreads;
     std::string                     m_MLGOTuningFilePath;
@@ -119,6 +120,7 @@
         , m_InferOutputShape(false)
         , m_EnableFastMath(false)
         , m_SaveCachedNetwork(false)
+        , m_OutputDetailsToStdOut(false)
         , m_CachedNetworkFilePath("")
         , m_NumberOfThreads(0)
         , m_MLGOTuningFilePath("")
@@ -489,7 +491,8 @@
             armnn::INetworkProperties networkProperties(params.m_AsyncEnabled,
                                                         armnn::MemorySource::Undefined,
                                                         armnn::MemorySource::Undefined,
-                                                        enableProfiling);
+                                                        enableProfiling,
+                                                        params.m_OutputDetailsToStdOut);
             std::string errorMessage;
             ret = m_Runtime->LoadNetwork(m_NetworkIdentifier, std::move(optNet), errorMessage, networkProperties);