IVGCVSW-4069 Add ProfilingGuid to Network

Added ProfilingGuid to
    * INetwork,
    * Network,
    * IOptimizedNetwork and
    * OptimizedNetwork

!android-nn-driver:2234
!armnn:2250

Signed-off-by: Jan Eilers <jan.eilers@arm.com>
Change-Id: I235116992cc47b4f385b7eb9da514c6350ca00f4
diff --git a/include/armnn/INetwork.hpp b/include/armnn/INetwork.hpp
index 6efc84f..647f072 100644
--- a/include/armnn/INetwork.hpp
+++ b/include/armnn/INetwork.hpp
@@ -95,6 +95,8 @@
 
     virtual Status PrintGraph() = 0;
 
+    virtual profiling::ProfilingGuid GetGuid() const = 0;
+
     /// Adds an input layer to the network.
     /// @param id - User generated id to uniquely identify a particular input. The same id needs to be specified.
     /// when passing the inputs to the IRuntime::EnqueueWorkload() function.
@@ -540,6 +542,7 @@
     virtual Status PrintGraph() = 0;
     virtual Status SerializeToDot(std::ostream& stream) const = 0;
 
+    virtual profiling::ProfilingGuid GetGuid() const = 0;
 
 protected:
     ~IOptimizedNetwork() {}
diff --git a/src/armnn/Network.cpp b/src/armnn/Network.cpp
index b1cb5a8..573f6a1 100644
--- a/src/armnn/Network.cpp
+++ b/src/armnn/Network.cpp
@@ -22,6 +22,8 @@
 #include <armnn/TypesUtils.hpp>
 #include <armnn/BackendRegistry.hpp>
 
+#include <ProfilingService.hpp>
+
 #include <fcntl.h>
 #include <algorithm>
 #include <fstream>
@@ -53,12 +55,6 @@
     delete boost::polymorphic_downcast<Network*>(network);
 }
 
-Status Network::PrintGraph()
-{
-    m_Graph->Print();
-    return Status::Success;
-}
-
 void IOptimizedNetwork::Destroy(IOptimizedNetwork* network)
 {
     delete boost::polymorphic_downcast<OptimizedNetwork*>(network);
@@ -925,7 +921,8 @@
 }
 
 Network::Network()
-: m_Graph(std::make_unique<Graph>())
+: m_Graph(std::make_unique<Graph>()),
+  m_Guid(profiling::ProfilingService::Instance().NextGuid())
 {
 }
 
@@ -933,6 +930,12 @@
 {
 }
 
+Status Network::PrintGraph()
+{
+    m_Graph->Print();
+    return Status::Success;
+}
+
 IConnectableLayer* Network::AddInputLayer(LayerBindingId id, const char* name)
 {
     return m_Graph->AddLayer<InputLayer>(id, name);
@@ -1563,7 +1566,8 @@
 }
 
 OptimizedNetwork::OptimizedNetwork(std::unique_ptr<Graph> graph)
-    : m_Graph(std::move(graph))
+    : m_Graph(std::move(graph)),
+      m_Guid(profiling::ProfilingService::Instance().NextGuid())
 {
 }
 
diff --git a/src/armnn/Network.hpp b/src/armnn/Network.hpp
index 49cf4da..0a11941 100644
--- a/src/armnn/Network.hpp
+++ b/src/armnn/Network.hpp
@@ -34,6 +34,8 @@
 
     Status PrintGraph() override;
 
+    profiling::ProfilingGuid GetGuid() const final { return m_Guid; };
+
     IConnectableLayer* AddInputLayer(LayerBindingId id, const char* name=nullptr) override;
 
     IConnectableLayer* AddArgMinMaxLayer(const ArgMinMaxDescriptor& desc,
@@ -248,6 +250,7 @@
         const char* name);
 
     std::unique_ptr<Graph> m_Graph;
+    profiling::ProfilingGuid m_Guid;
 };
 
 class OptimizedNetwork final : public IOptimizedNetwork
@@ -259,10 +262,13 @@
     Status PrintGraph() override;
     Status SerializeToDot(std::ostream& stream) const override;
 
+    profiling::ProfilingGuid GetGuid() const final { return m_Guid; };
+
     Graph& GetGraph() { return *m_Graph; }
 
 private:
     std::unique_ptr<Graph> m_Graph;
+    profiling::ProfilingGuid m_Guid;
 };