Update Doxygen for 23.11

Signed-off-by: Nikhil Raj <nikhil.raj@arm.com>
Change-Id: I47cd933f5002cb94a73aa97689d7b3d9c93cb849
diff --git a/latest/classarmnn_1_1_graph.html b/latest/classarmnn_1_1_graph.html
index 6e54a6d..60d877d 100644
--- a/latest/classarmnn_1_1_graph.html
+++ b/latest/classarmnn_1_1_graph.html
@@ -36,7 +36,7 @@
   <img alt="ArmNN" src="Arm_NN_horizontal_blue.png" style="max-width: 15rem; margin-top: .5rem; margin-left 13px"/>
   <td id="projectalign" style="padding-left: 0.9em;">
    <div id="projectname">
-   &#160;<span id="projectnumber">23.08</span>
+   &#160;<span id="projectnumber">23.11</span>
    </div>
   </td>
  </tr>
@@ -155,8 +155,8 @@
 <tr class="separator:a04b47532de485737e97066d3cb29c957"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:af5a604e5e9e4d68dbc10b312e59f678f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_graph.html#af5a604e5e9e4d68dbc10b312e59f678f">~Graph</a> ()</td></tr>
 <tr class="separator:af5a604e5e9e4d68dbc10b312e59f678f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afd329ee7d721aa6cdaacb8391308e34f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_graph.html#afd329ee7d721aa6cdaacb8391308e34f">Print</a> () const</td></tr>
-<tr class="separator:afd329ee7d721aa6cdaacb8391308e34f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5dbbfed3b6d0bf3126abfc34e93a69f0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_graph.html#a5dbbfed3b6d0bf3126abfc34e93a69f0">Print</a> (bool extended=false) const</td></tr>
+<tr class="separator:a5dbbfed3b6d0bf3126abfc34e93a69f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a131873e7a706fc7ca0637027236916e9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_graph.html#a131873e7a706fc7ca0637027236916e9">SerializeToDot</a> (std::ostream &amp;stream)</td></tr>
 <tr class="separator:a131873e7a706fc7ca0637027236916e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a7563c5b899e7d0ada08fd0fdb202f205"><td class="memTemplParams" colspan="2">template&lt;typename LayerT , typename... Args&gt; </td></tr>
@@ -555,140 +555,140 @@
 
 <p>Modifies the graph in-place, removing edges connecting layers using different compute devices, and relinking them via an intermediary copy layers. </p>
 
-<p class="definition">Definition at line <a class="el" href="_graph_8cpp_source.html#l00308">308</a> of file <a class="el" href="_graph_8cpp_source.html">Graph.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;{</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;    <span class="comment">// Returns true if the given layer could potentially need an intermediate copy/import layer (depending on its</span></div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;    <span class="comment">// connections to other layers).</span></div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;    <span class="keyword">auto</span> MayNeedCompatibilityLayer = [](<span class="keyword">const</span> Layer&amp; layer)</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;    {</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;        <span class="comment">// All layers should have been associated with a valid compute device at this point.</span></div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;        <a class="code" href="_assert_8hpp.html#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(layer.GetBackendId() != <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Compute::Undefined</a>);</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;        <span class="comment">// Does not need another compatibility layer if a copy or import layer is already present.</span></div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;        <span class="keywordflow">return</span> layer.GetType() != <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">LayerType::MemCopy</a> &amp;&amp;</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;               layer.GetType() != <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a115bfc5d633eae55c67f9588acdd2bf9">LayerType::MemImport</a>;</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;    };</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160; </div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;    <span class="keyword">auto</span> IsCompatibilityStrategy = [](<a class="code" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016">EdgeStrategy</a> strategy)</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;    {</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;        <span class="keywordflow">return</span> strategy == <a class="code" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852">EdgeStrategy::CopyToTarget</a> ||</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;               strategy == <a class="code" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189">EdgeStrategy::ExportToTarget</a>;</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;    };</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160; </div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;    <a class="code" href="classarmnn_1_1_graph.html#ad6521013ad981519904822f2ada2c4ec">ForEachLayer</a>([<span class="keyword">this</span>, &amp;backends, &amp;registry, MayNeedCompatibilityLayer, IsCompatibilityStrategy](Layer* srcLayer)</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;    {</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;        <a class="code" href="_assert_8hpp.html#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(srcLayer);</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160; </div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;        <span class="keywordflow">if</span> (!MayNeedCompatibilityLayer(*srcLayer))</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;        {</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;            <span class="comment">// The current layer does not need copy layers, move to the next one</span></div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;            <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;        }</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160; </div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;        <span class="keyword">const</span> std::vector&lt;OutputSlot&gt;&amp; srcOutputSlots = srcLayer-&gt;GetOutputSlots();</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> srcOutputIndex = 0; srcOutputIndex &lt; srcOutputSlots.size(); srcOutputIndex++)</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;        {</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;            OutputSlot&amp; srcOutputSlot = srcLayer-&gt;GetOutputSlot(srcOutputIndex);</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;            <span class="keyword">const</span> std::vector&lt;InputSlot*&gt; srcConnections = srcOutputSlot.GetConnections();</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;            <span class="keyword">const</span> std::vector&lt;EdgeStrategy&gt; srcEdgeStrategies = srcOutputSlot.GetEdgeStrategies();</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;            <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> srcConnectionIndex = 0; srcConnectionIndex &lt; srcConnections.size(); srcConnectionIndex++)</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;            {</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;                InputSlot* dstInputSlot = srcConnections[srcConnectionIndex];</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;                <a class="code" href="_assert_8hpp.html#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(dstInputSlot);</div>
+<p class="definition">Definition at line <a class="el" href="_graph_8cpp_source.html#l00329">329</a> of file <a class="el" href="_graph_8cpp_source.html">Graph.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;{</div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;    <span class="comment">// Returns true if the given layer could potentially need an intermediate copy/import layer (depending on its</span></div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;    <span class="comment">// connections to other layers).</span></div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;    <span class="keyword">auto</span> MayNeedCompatibilityLayer = [](<span class="keyword">const</span> Layer&amp; layer)</div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;    {</div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;        <span class="comment">// All layers should have been associated with a valid compute device at this point.</span></div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;        <a class="code" href="_assert_8hpp.html#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(layer.GetBackendId() != <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Compute::Undefined</a>);</div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;        <span class="comment">// Does not need another compatibility layer if a copy or import layer is already present.</span></div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;        <span class="keywordflow">return</span> layer.GetType() != <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">LayerType::MemCopy</a> &amp;&amp;</div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;               layer.GetType() != <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a115bfc5d633eae55c67f9588acdd2bf9">LayerType::MemImport</a>;</div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;    };</div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160; </div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;    <span class="keyword">auto</span> IsCompatibilityStrategy = [](<a class="code" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016">EdgeStrategy</a> strategy)</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;    {</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;        <span class="keywordflow">return</span> strategy == <a class="code" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852">EdgeStrategy::CopyToTarget</a> ||</div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;               strategy == <a class="code" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189">EdgeStrategy::ExportToTarget</a>;</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;    };</div>
 <div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160; </div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;                <a class="code" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016">EdgeStrategy</a> strategy = srcEdgeStrategies[srcConnectionIndex];</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;                <a class="code" href="_assert_8hpp.html#a91c4dfde57907d7698c7531785690a7f">ARMNN_ASSERT_MSG</a>(strategy != <a class="code" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016aec0fc0100c4fc1ce4eea230c3dc10360">EdgeStrategy::Undefined</a>,</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;                                 <span class="stringliteral">&quot;Undefined memory strategy found while adding copy layers for compatibility&quot;</span>);</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;    <a class="code" href="classarmnn_1_1_graph.html#ad6521013ad981519904822f2ada2c4ec">ForEachLayer</a>([<span class="keyword">this</span>, &amp;backends, &amp;registry, MayNeedCompatibilityLayer, IsCompatibilityStrategy](Layer* srcLayer)</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;    {</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;        <a class="code" href="_assert_8hpp.html#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(srcLayer);</div>
 <div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160; </div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;                <span class="keyword">const</span> Layer&amp; dstLayer = dstInputSlot-&gt;GetOwningLayer();</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;                <span class="keywordflow">if</span> (MayNeedCompatibilityLayer(dstLayer) &amp;&amp;</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;                    IsCompatibilityStrategy(strategy))</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;                {</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;                    <span class="comment">// A copy layer is needed in between the source and destination layers.</span></div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;                    <span class="comment">// Record the operation rather than attempting to modify the graph as we go.</span></div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;                    <span class="comment">// (invalidating iterators)</span></div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;                    <span class="keyword">const</span> std::string compLayerName = fmt::format(<span class="stringliteral">&quot;[ {} ({}) -&gt; {} ({}) ]&quot;</span>,</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;                                                                  srcLayer-&gt;GetName(),</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;                                                                  srcOutputIndex,</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;                                                                  dstLayer.GetName(),</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;                                                                  dstInputSlot-&gt;GetSlotIndex());</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;                    Layer* compLayer = <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;                    <span class="keywordflow">if</span> (strategy == <a class="code" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852">EdgeStrategy::CopyToTarget</a>)</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;                    {</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;                        compLayer = InsertNewLayer&lt;MemCopyLayer&gt;(*dstInputSlot, compLayerName.c_str());</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;                    }</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;                    <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;                    {</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;                        <a class="code" href="_assert_8hpp.html#a91c4dfde57907d7698c7531785690a7f">ARMNN_ASSERT_MSG</a>(strategy == <a class="code" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189">EdgeStrategy::ExportToTarget</a>, <span class="stringliteral">&quot;Invalid edge strategy found.&quot;</span>);</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;                        compLayer = InsertNewLayer&lt;MemImportLayer&gt;(*dstInputSlot, compLayerName.c_str());</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;                    }</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160; </div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;                    compLayer-&gt;SetBackendId(dstLayer.GetBackendId());</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160; </div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;                    OutputSlot&amp; compOutputSlot = compLayer-&gt;GetOutputSlot(0);</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;                    <span class="keyword">auto</span> backendIt = backends.find(dstLayer.GetBackendId());</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;                    <span class="keywordflow">if</span> (backendIt != backends.end() &amp;&amp;</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;                        backendIt-&gt;second &amp;&amp;</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;                        backendIt-&gt;second-&gt;SupportsTensorAllocatorAPI())</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;                    {</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;                        <span class="keyword">auto</span> backend = backendIt-&gt;second.get();</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;                        <span class="keyword">auto</span> tensorHandleFactoryIds = backend-&gt;GetHandleFactoryPreferences();</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;                        <span class="keywordtype">bool</span> found = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160; </div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;                        <span class="keywordflow">for</span> (<span class="keyword">auto</span> preference : tensorHandleFactoryIds)</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;                        {</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;                            <span class="keyword">auto</span> factory = registry.GetFactory(preference);</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;                            <span class="keywordflow">if</span> (factory)</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;                            {</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;                                <span class="keyword">auto</span> srcPref = srcOutputSlot.GetTensorHandleFactoryId();</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;                                <span class="keyword">auto</span> srcFactory = registry.GetFactory(srcPref);</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160; </div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;                                <span class="keywordflow">if</span> (srcFactory)</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;                                {</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;                                    <span class="keywordtype">bool</span> canExportImport =</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;                                        (factory-&gt;GetImportFlags() &amp; srcFactory-&gt;GetExportFlags()) != 0;</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160; </div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;                                    <span class="keywordflow">if</span> (factory-&gt;SupportsMapUnmap() || canExportImport)</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;                                    {</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;                                        compOutputSlot.SetTensorHandleFactory(preference);</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;                                        found = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;                                        <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;                                    }</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;                                }</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;                            }</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;                        }</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160; </div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;                        <span class="keywordflow">if</span> (!found)</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;                        {</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;                            compOutputSlot.SetTensorHandleFactory(<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.html#a9c95f90eb40e31f629e0e2947b8bc6f9">ITensorHandleFactory::LegacyFactoryId</a>);</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;                        }</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;                    }</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;                    <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;                    {</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;                        compOutputSlot.SetTensorHandleFactory(<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.html#a9c95f90eb40e31f629e0e2947b8bc6f9">ITensorHandleFactory::LegacyFactoryId</a>);</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;                    }</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160; </div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;                    <span class="comment">// The output strategy of a compatibility layer is always DirectCompatibility.</span></div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;                    compOutputSlot.SetEdgeStrategy(0, <a class="code" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650">EdgeStrategy::DirectCompatibility</a>);</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160; </div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;                    <span class="comment">// Recalculate the connection index on the previous layer as we have just inserted into it.</span></div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;                    <span class="keyword">const</span> std::vector&lt;InputSlot*&gt;&amp; newSourceConnections = srcOutputSlot.GetConnections();</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;                    <span class="keyword">auto</span> newSrcConnectionIndex = std::distance(newSourceConnections.begin(),</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;                                                               std::find(newSourceConnections.begin(),</div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;                                                                         newSourceConnections.end(),</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;                                                                         &amp;compLayer-&gt;GetInputSlot(0)));</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160; </div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;                    <span class="comment">// The input strategy of a compatibility layer is always DirectCompatibilty.</span></div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;                    srcOutputSlot.SetEdgeStrategy(armnn::numeric_cast&lt;unsigned int&gt;(newSrcConnectionIndex),</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;                                                    <a class="code" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650">EdgeStrategy::DirectCompatibility</a>);</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;                }</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;            }</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;        }</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;    });</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;}</div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;        <span class="keywordflow">if</span> (!MayNeedCompatibilityLayer(*srcLayer))</div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;        {</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;            <span class="comment">// The current layer does not need copy layers, move to the next one</span></div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;            <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;        }</div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160; </div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;        <span class="keyword">const</span> std::vector&lt;OutputSlot&gt;&amp; srcOutputSlots = srcLayer-&gt;GetOutputSlots();</div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> srcOutputIndex = 0; srcOutputIndex &lt; srcOutputSlots.size(); srcOutputIndex++)</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;        {</div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;            OutputSlot&amp; srcOutputSlot = srcLayer-&gt;GetOutputSlot(srcOutputIndex);</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;            <span class="keyword">const</span> std::vector&lt;InputSlot*&gt; srcConnections = srcOutputSlot.GetConnections();</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;            <span class="keyword">const</span> std::vector&lt;EdgeStrategy&gt; srcEdgeStrategies = srcOutputSlot.GetEdgeStrategies();</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;            <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> srcConnectionIndex = 0; srcConnectionIndex &lt; srcConnections.size(); srcConnectionIndex++)</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;            {</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;                InputSlot* dstInputSlot = srcConnections[srcConnectionIndex];</div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;                <a class="code" href="_assert_8hpp.html#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(dstInputSlot);</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160; </div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;                <a class="code" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016">EdgeStrategy</a> strategy = srcEdgeStrategies[srcConnectionIndex];</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;                <a class="code" href="_assert_8hpp.html#a91c4dfde57907d7698c7531785690a7f">ARMNN_ASSERT_MSG</a>(strategy != <a class="code" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016aec0fc0100c4fc1ce4eea230c3dc10360">EdgeStrategy::Undefined</a>,</div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;                                 <span class="stringliteral">&quot;Undefined memory strategy found while adding copy layers for compatibility&quot;</span>);</div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160; </div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;                <span class="keyword">const</span> Layer&amp; dstLayer = dstInputSlot-&gt;GetOwningLayer();</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;                <span class="keywordflow">if</span> (MayNeedCompatibilityLayer(dstLayer) &amp;&amp;</div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;                    IsCompatibilityStrategy(strategy))</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;                {</div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;                    <span class="comment">// A copy layer is needed in between the source and destination layers.</span></div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;                    <span class="comment">// Record the operation rather than attempting to modify the graph as we go.</span></div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;                    <span class="comment">// (invalidating iterators)</span></div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;                    <span class="keyword">const</span> std::string compLayerName = fmt::format(<span class="stringliteral">&quot;[ {} ({}) -&gt; {} ({}) ]&quot;</span>,</div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;                                                                  srcLayer-&gt;GetName(),</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;                                                                  srcOutputIndex,</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;                                                                  dstLayer.GetName(),</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;                                                                  dstInputSlot-&gt;GetSlotIndex());</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;                    Layer* compLayer = <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;                    <span class="keywordflow">if</span> (strategy == <a class="code" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852">EdgeStrategy::CopyToTarget</a>)</div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;                    {</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;                        compLayer = InsertNewLayer&lt;MemCopyLayer&gt;(*dstInputSlot, compLayerName.c_str());</div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;                    }</div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;                    <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;                    {</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;                        <a class="code" href="_assert_8hpp.html#a91c4dfde57907d7698c7531785690a7f">ARMNN_ASSERT_MSG</a>(strategy == <a class="code" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189">EdgeStrategy::ExportToTarget</a>, <span class="stringliteral">&quot;Invalid edge strategy found.&quot;</span>);</div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;                        compLayer = InsertNewLayer&lt;MemImportLayer&gt;(*dstInputSlot, compLayerName.c_str());</div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;                    }</div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160; </div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;                    compLayer-&gt;SetBackendId(dstLayer.GetBackendId());</div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160; </div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;                    OutputSlot&amp; compOutputSlot = compLayer-&gt;GetOutputSlot(0);</div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;                    <span class="keyword">auto</span> backendIt = backends.find(dstLayer.GetBackendId());</div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;                    <span class="keywordflow">if</span> (backendIt != backends.end() &amp;&amp;</div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;                        backendIt-&gt;second &amp;&amp;</div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;                        backendIt-&gt;second-&gt;SupportsTensorAllocatorAPI())</div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;                    {</div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;                        <span class="keyword">auto</span> backend = backendIt-&gt;second.get();</div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;                        <span class="keyword">auto</span> tensorHandleFactoryIds = backend-&gt;GetHandleFactoryPreferences();</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;                        <span class="keywordtype">bool</span> found = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160; </div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;                        <span class="keywordflow">for</span> (<span class="keyword">auto</span> preference : tensorHandleFactoryIds)</div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;                        {</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;                            <span class="keyword">auto</span> factory = registry.GetFactory(preference);</div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;                            <span class="keywordflow">if</span> (factory)</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;                            {</div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;                                <span class="keyword">auto</span> srcPref = srcOutputSlot.GetTensorHandleFactoryId();</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;                                <span class="keyword">auto</span> srcFactory = registry.GetFactory(srcPref);</div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160; </div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;                                <span class="keywordflow">if</span> (srcFactory)</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;                                {</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;                                    <span class="keywordtype">bool</span> canExportImport =</div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;                                        (factory-&gt;GetImportFlags() &amp; srcFactory-&gt;GetExportFlags()) != 0;</div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160; </div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;                                    <span class="keywordflow">if</span> (factory-&gt;SupportsMapUnmap() || canExportImport)</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;                                    {</div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;                                        compOutputSlot.SetTensorHandleFactory(preference);</div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;                                        found = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;                                        <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;                                    }</div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;                                }</div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;                            }</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;                        }</div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160; </div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;                        <span class="keywordflow">if</span> (!found)</div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;                        {</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;                            compOutputSlot.SetTensorHandleFactory(<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.html#a9c95f90eb40e31f629e0e2947b8bc6f9">ITensorHandleFactory::LegacyFactoryId</a>);</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;                        }</div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;                    }</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;                    <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;                    {</div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;                        compOutputSlot.SetTensorHandleFactory(<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.html#a9c95f90eb40e31f629e0e2947b8bc6f9">ITensorHandleFactory::LegacyFactoryId</a>);</div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;                    }</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160; </div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;                    <span class="comment">// The output strategy of a compatibility layer is always DirectCompatibility.</span></div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;                    compOutputSlot.SetEdgeStrategy(0, <a class="code" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650">EdgeStrategy::DirectCompatibility</a>);</div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160; </div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;                    <span class="comment">// Recalculate the connection index on the previous layer as we have just inserted into it.</span></div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;                    <span class="keyword">const</span> std::vector&lt;InputSlot*&gt;&amp; newSourceConnections = srcOutputSlot.GetConnections();</div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;                    <span class="keyword">auto</span> newSrcConnectionIndex = std::distance(newSourceConnections.begin(),</div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;                                                               std::find(newSourceConnections.begin(),</div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;                                                                         newSourceConnections.end(),</div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;                                                                         &amp;compLayer-&gt;GetInputSlot(0)));</div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160; </div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;                    <span class="comment">// The input strategy of a compatibility layer is always DirectCompatibilty.</span></div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;                    srcOutputSlot.SetEdgeStrategy(armnn::numeric_cast&lt;unsigned int&gt;(newSrcConnectionIndex),</div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;                                                    <a class="code" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650">EdgeStrategy::DirectCompatibility</a>);</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;                }</div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;            }</div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;        }</div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;    });</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;}</div>
 </div><!-- fragment -->
 <p class="reference">References <a class="el" href="_assert_8hpp_source.html#l00014">ARMNN_ASSERT</a>, <a class="el" href="_assert_8hpp_source.html#l00015">ARMNN_ASSERT_MSG</a>, <a class="el" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852">armnn::CopyToTarget</a>, <a class="el" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650">armnn::DirectCompatibility</a>, <a class="el" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189">armnn::ExportToTarget</a>, <a class="el" href="_graph_8hpp_source.html#l00040">Graph::ForEachLayer()</a>, <a class="el" href="_layer_8hpp_source.html#l00290">Layer::GetBackendId()</a>, <a class="el" href="_layer_8hpp_source.html#l00145">OutputSlot::GetConnections()</a>, <a class="el" href="_layer_8hpp_source.html#l00146">OutputSlot::GetEdgeStrategies()</a>, <a class="el" href="_tensor_handle_factory_registry_8cpp_source.html#l00039">TensorHandleFactoryRegistry::GetFactory()</a>, <a class="el" href="_layer_8hpp_source.html#l00337">Layer::GetInputSlot()</a>, <a class="el" href="_layer_8hpp_source.html#l00332">Layer::GetName()</a>, <a class="el" href="_layer_8hpp_source.html#l00339">Layer::GetOutputSlot()</a>, <a class="el" href="_layer_8hpp_source.html#l00259">Layer::GetOutputSlots()</a>, <a class="el" href="_layer_8hpp_source.html#l00053">InputSlot::GetOwningLayer()</a>, <a class="el" href="_layer_8hpp_source.html#l00054">InputSlot::GetSlotIndex()</a>, <a class="el" href="_layer_8cpp_source.html#l00205">OutputSlot::GetTensorHandleFactoryId()</a>, <a class="el" href="_i_tensor_handle_factory_8hpp_source.html#l00050">ITensorHandleFactory::LegacyFactoryId</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">armnn::MemCopy</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a115bfc5d633eae55c67f9588acdd2bf9">armnn::MemImport</a>, <a class="el" href="_layer_8hpp_source.html#l00291">Layer::SetBackendId()</a>, <a class="el" href="_layer_8cpp_source.html#l00210">OutputSlot::SetEdgeStrategy()</a>, <a class="el" href="_layer_8cpp_source.html#l00200">OutputSlot::SetTensorHandleFactory()</a>, and <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Undefined</a>.</p>
 
-<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l01869">armnn::Optimize()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l01896">armnn::Optimize()</a>.</p>
 
 </div>
 </div>
@@ -755,104 +755,104 @@
 
 <p>Allocates memory for all tensors under output tensor handers of each layer. </p>
 
-<p class="definition">Definition at line <a class="el" href="_graph_8cpp_source.html#l00186">186</a> of file <a class="el" href="_graph_8cpp_source.html">Graph.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;{</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    <span class="comment">// Layers must be sorted in topological order</span></div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;    <a class="code" href="_assert_8hpp.html#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(m_LayersInOrder);</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;    <a class="code" href="_profiling_8hpp.html#a5ccc65e2c464ac05ce311fdae7ede03a">ARMNN_SCOPED_PROFILING_EVENT</a>(<a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Compute::Undefined</a>, <span class="stringliteral">&quot;LoadNetwork_AllocateDynamicBuffers&quot;</span>);</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160; </div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;    std::unordered_set&lt;const ITensorHandle*&gt; preallocatedTensors;</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;    std::unordered_map&lt;const ITensorHandle*, unsigned int&gt; handleReferenceCounts;</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160; </div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;    <span class="comment">// Finds the first TensorHandle ancestor of a SubTensorHandle. If the ITensorHandle provided</span></div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;    <span class="comment">// is a TensorHandle, the function just returns it</span></div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;    <span class="keyword">auto</span> TraceSubTensorHandleAncestry = [](ITensorHandle* <span class="keyword">const</span> subTensorHandle)</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;    {</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;        ITensorHandle* ancestor = subTensorHandle;</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;        <span class="keywordflow">while</span> (ancestor &amp;&amp; ancestor-&gt;GetParent())</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;        {</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;            ancestor = ancestor-&gt;GetParent();</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;        }</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;        <span class="keywordflow">return</span> ancestor;</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;    };</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160; </div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;    <span class="comment">// Checks whether a TensorHandle has been pre-allocated</span></div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    <span class="keyword">auto</span> IsPreallocated = [&amp;](ITensorHandle* <span class="keyword">const</span> tensorHandle)</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;    {</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;        <span class="keywordflow">return</span> tensorHandle &amp;&amp; preallocatedTensors.find(tensorHandle) != preallocatedTensors.end();</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;    };</div>
+<p class="definition">Definition at line <a class="el" href="_graph_8cpp_source.html#l00207">207</a> of file <a class="el" href="_graph_8cpp_source.html">Graph.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;{</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;    <span class="comment">// Layers must be sorted in topological order</span></div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;    <a class="code" href="_assert_8hpp.html#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(m_LayersInOrder);</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;    <a class="code" href="_profiling_8hpp.html#a5ccc65e2c464ac05ce311fdae7ede03a">ARMNN_SCOPED_PROFILING_EVENT</a>(<a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Compute::Undefined</a>, <span class="stringliteral">&quot;LoadNetwork_AllocateDynamicBuffers&quot;</span>);</div>
 <div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160; </div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    <span class="comment">// Constant tensor handles need to last from the beginning of execution till the end,</span></div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;    <span class="comment">// therefore we pre-allocate them upfront</span></div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; layer : m_Layers)</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;    {</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;        <span class="keywordflow">if</span> (layer-&gt;GetType() == <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">LayerType::Constant</a>)</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;        {</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;            <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; slot = layer-&gt;BeginOutputSlots(); slot != layer-&gt;EndOutputSlots(); ++slot)</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;            {</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;                ITensorHandle *tensorHandle = TraceSubTensorHandleAncestry(slot-&gt;GetOutputHandler().GetData());</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160; </div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;                <span class="keywordflow">if</span> (tensorHandle &amp;&amp; !IsPreallocated(tensorHandle))</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;                {</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;                    tensorHandle-&gt;Allocate();</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;                    preallocatedTensors.insert(tensorHandle);</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;                }</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;            }</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;        }</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    }</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160; </div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    <span class="comment">// Iterate over the network in topological order</span></div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; layer : m_Layers)</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;    {</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;        <span class="comment">// Count the amount of times each output slot references a certain buffer (ITensorHandle).</span></div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;        <span class="comment">// The first time we encounter a new tensor handle, we start managing its lifetime.</span></div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; slot = layer-&gt;BeginOutputSlots(); slot != layer-&gt;EndOutputSlots(); ++slot)</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;        {</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;            ITensorHandle *tensorHandle = TraceSubTensorHandleAncestry(slot-&gt;GetOutputHandler().GetData());</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160; </div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;            <span class="keywordflow">if</span> (tensorHandle &amp;&amp; !IsPreallocated(tensorHandle))</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;            {</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;                <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numConnections = slot-&gt;GetNumConnections();</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;                <span class="keywordflow">if</span> (handleReferenceCounts.find(tensorHandle) == handleReferenceCounts.end())</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    std::unordered_set&lt;const ITensorHandle*&gt; preallocatedTensors;</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;    std::unordered_map&lt;const ITensorHandle*, unsigned int&gt; handleReferenceCounts;</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160; </div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;    <span class="comment">// Finds the first TensorHandle ancestor of a SubTensorHandle. If the ITensorHandle provided</span></div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    <span class="comment">// is a TensorHandle, the function just returns it</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;    <span class="keyword">auto</span> TraceSubTensorHandleAncestry = [](ITensorHandle* <span class="keyword">const</span> subTensorHandle)</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;    {</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;        ITensorHandle* ancestor = subTensorHandle;</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;        <span class="keywordflow">while</span> (ancestor &amp;&amp; ancestor-&gt;GetParent())</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;        {</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;            ancestor = ancestor-&gt;GetParent();</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;        }</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;        <span class="keywordflow">return</span> ancestor;</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    };</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160; </div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;    <span class="comment">// Checks whether a TensorHandle has been pre-allocated</span></div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    <span class="keyword">auto</span> IsPreallocated = [&amp;](ITensorHandle* <span class="keyword">const</span> tensorHandle)</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    {</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;        <span class="keywordflow">return</span> tensorHandle &amp;&amp; preallocatedTensors.find(tensorHandle) != preallocatedTensors.end();</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    };</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160; </div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;    <span class="comment">// Constant tensor handles need to last from the beginning of execution till the end,</span></div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;    <span class="comment">// therefore we pre-allocate them upfront</span></div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; layer : m_Layers)</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    {</div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;        <span class="keywordflow">if</span> (layer-&gt;GetType() == <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">LayerType::Constant</a>)</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;        {</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;            <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; slot = layer-&gt;BeginOutputSlots(); slot != layer-&gt;EndOutputSlots(); ++slot)</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;            {</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;                ITensorHandle *tensorHandle = TraceSubTensorHandleAncestry(slot-&gt;GetOutputHandler().GetData());</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160; </div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;                <span class="keywordflow">if</span> (tensorHandle &amp;&amp; !IsPreallocated(tensorHandle))</div>
 <div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;                {</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;                    handleReferenceCounts[tensorHandle] = numConnections;</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;                    tensorHandle-&gt;Manage();</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;                    <span class="keywordflow">if</span> (handleReferenceCounts[tensorHandle] == 0u)</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;                    {</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;                          <span class="comment">// if nobody consumes this tensor we call Allocate()</span></div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;                          tensorHandle-&gt;Allocate();</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;                    }</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;                }</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;                <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;                {</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;                    handleReferenceCounts[tensorHandle] += numConnections;</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;                }</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;            }</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;        }</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160; </div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;        <span class="comment">// Loop through the input slots in the same layer and decrement the reference counter associated</span></div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;        <span class="comment">// to each tensor handle we encounter. Once it reaches zero, we end the lifetime of the tensor handle</span></div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; slot = layer-&gt;BeginInputSlots(); slot != layer-&gt;EndInputSlots(); ++slot)</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;        {</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;            ITensorHandle *tensorHandle = TraceSubTensorHandleAncestry(</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;                slot-&gt;GetConnectedOutputSlot()-&gt;GetOutputHandler().GetData());</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160; </div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;            <span class="keywordflow">if</span> (tensorHandle &amp;&amp; !IsPreallocated(tensorHandle))</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;            {</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;                --handleReferenceCounts[tensorHandle];</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160; </div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;                <span class="keywordflow">if</span> (handleReferenceCounts[tensorHandle] == 0u)</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;                {</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;                    <span class="comment">// Stop managing lifetime of tensor handle</span></div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;                    tensorHandle-&gt;Allocate();</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;                    handleReferenceCounts.erase(tensorHandle);</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;                }</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;            }</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;        }</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;    }</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;                    tensorHandle-&gt;Allocate();</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;                    preallocatedTensors.insert(tensorHandle);</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;                }</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;            }</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;        }</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;    }</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160; </div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;    <span class="comment">// Iterate over the network in topological order</span></div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; layer : m_Layers)</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;    {</div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;        <span class="comment">// Count the amount of times each output slot references a certain buffer (ITensorHandle).</span></div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;        <span class="comment">// The first time we encounter a new tensor handle, we start managing its lifetime.</span></div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; slot = layer-&gt;BeginOutputSlots(); slot != layer-&gt;EndOutputSlots(); ++slot)</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;        {</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;            ITensorHandle *tensorHandle = TraceSubTensorHandleAncestry(slot-&gt;GetOutputHandler().GetData());</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160; </div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;            <span class="keywordflow">if</span> (tensorHandle &amp;&amp; !IsPreallocated(tensorHandle))</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;            {</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;                <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numConnections = slot-&gt;GetNumConnections();</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;                <span class="keywordflow">if</span> (handleReferenceCounts.find(tensorHandle) == handleReferenceCounts.end())</div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;                {</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;                    handleReferenceCounts[tensorHandle] = numConnections;</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;                    tensorHandle-&gt;Manage();</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;                    <span class="keywordflow">if</span> (handleReferenceCounts[tensorHandle] == 0u)</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;                    {</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;                          <span class="comment">// if nobody consumes this tensor we call Allocate()</span></div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;                          tensorHandle-&gt;Allocate();</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;                    }</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;                }</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;                <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;                {</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;                    handleReferenceCounts[tensorHandle] += numConnections;</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;                }</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;            }</div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;        }</div>
 <div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160; </div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">Status::Success</a>;</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;}</div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;        <span class="comment">// Loop through the input slots in the same layer and decrement the reference counter associated</span></div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;        <span class="comment">// to each tensor handle we encounter. Once it reaches zero, we end the lifetime of the tensor handle</span></div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; slot = layer-&gt;BeginInputSlots(); slot != layer-&gt;EndInputSlots(); ++slot)</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;        {</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;            ITensorHandle *tensorHandle = TraceSubTensorHandleAncestry(</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;                slot-&gt;GetConnectedOutputSlot()-&gt;GetOutputHandler().GetData());</div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160; </div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;            <span class="keywordflow">if</span> (tensorHandle &amp;&amp; !IsPreallocated(tensorHandle))</div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;            {</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;                --handleReferenceCounts[tensorHandle];</div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160; </div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;                <span class="keywordflow">if</span> (handleReferenceCounts[tensorHandle] == 0u)</div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;                {</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;                    <span class="comment">// Stop managing lifetime of tensor handle</span></div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;                    tensorHandle-&gt;Allocate();</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;                    handleReferenceCounts.erase(tensorHandle);</div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;                }</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;            }</div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;        }</div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;    }</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160; </div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">Status::Success</a>;</div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;}</div>
 </div><!-- fragment -->
 <p class="reference">References <a class="el" href="classarmnn_1_1_i_tensor_handle.html#a5cceed8b707a09bf27eb61f17acf8a88">ITensorHandle::Allocate()</a>, <a class="el" href="_assert_8hpp_source.html#l00014">ARMNN_ASSERT</a>, <a class="el" href="_profiling_8hpp_source.html#l00220">ARMNN_SCOPED_PROFILING_EVENT</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">armnn::Constant</a>, <a class="el" href="classarmnn_1_1_i_tensor_handle.html#a437893b8dcf58a0b68b70e1ad7933be6">ITensorHandle::GetParent()</a>, <a class="el" href="classarmnn_1_1_i_tensor_handle.html#a04149d0f9b9c54c05e95693111490daf">ITensorHandle::Manage()</a>, <a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">armnn::Success</a>, and <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Undefined</a>.</p>
 
@@ -929,7 +929,7 @@
 <p class="definition">Definition at line <a class="el" href="_graph_8hpp_source.html#l00169">169</a> of file <a class="el" href="_graph_8hpp_source.html">Graph.hpp</a>.</p>
 <div class="fragment"><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;{ <span class="keywordflow">return</span> m_Layers.begin(); }</div>
 </div><!-- fragment -->
-<p class="reference">Referenced by <a class="el" href="_graph_8hpp_source.html#l00179">Graph::cbegin()</a>, <a class="el" href="_network_8cpp_source.html#l01869">armnn::Optimize()</a>, and <a class="el" href="_optimizer_8cpp_source.html#l00016">Optimizer::Pass()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_graph_8hpp_source.html#l00179">Graph::cbegin()</a>, <a class="el" href="_network_8cpp_source.html#l01896">armnn::Optimize()</a>, and <a class="el" href="_optimizer_8cpp_source.html#l00016">Optimizer::Pass()</a>.</p>
 
 </div>
 </div>
@@ -1098,7 +1098,7 @@
 <p class="definition">Definition at line <a class="el" href="_graph_8hpp_source.html#l00171">171</a> of file <a class="el" href="_graph_8hpp_source.html">Graph.hpp</a>.</p>
 <div class="fragment"><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;{ <span class="keywordflow">return</span> m_Layers.end(); }</div>
 </div><!-- fragment -->
-<p class="reference">Referenced by <a class="el" href="_graph_8hpp_source.html#l00181">Graph::cend()</a>, <a class="el" href="_network_8cpp_source.html#l01869">armnn::Optimize()</a>, and <a class="el" href="_optimizer_8cpp_source.html#l00016">Optimizer::Pass()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_graph_8hpp_source.html#l00181">Graph::cend()</a>, <a class="el" href="_network_8cpp_source.html#l01896">armnn::Optimize()</a>, and <a class="el" href="_optimizer_8cpp_source.html#l00016">Optimizer::Pass()</a>.</p>
 
 </div>
 </div>
@@ -1167,7 +1167,7 @@
 </div><!-- fragment -->
 <p class="reference">References <a class="el" href="namespacearmnn.html#a34eaed09302a4d7bfe930c13a7673e0bad6e393dc30fd33cbcb5f6ab199093528">armnn::LayerErased</a>.</p>
 
-<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l01301">armnn::ApplyBackendOptimizations()</a>, <a class="el" href="_graph_8hpp_source.html#l00512">Graph::EraseLayer()</a>, <a class="el" href="_optimizer_8cpp_source.html#l00016">Optimizer::Pass()</a>, <a class="el" href="_optimization_8hpp_source.html#l00084">OptimizeForConnectionImpl&lt; BaseType, ChildType, Wrapped &gt;::Run()</a>, and <a class="el" href="_optimization_8hpp_source.html#l00136">OptimizeForExclusiveConnectionImpl&lt; BaseType, ChildType, Wrapped &gt;::Run()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l01328">armnn::ApplyBackendOptimizations()</a>, <a class="el" href="_graph_8hpp_source.html#l00512">Graph::EraseLayer()</a>, <a class="el" href="_optimizer_8cpp_source.html#l00016">Optimizer::Pass()</a>, <a class="el" href="_optimization_8hpp_source.html#l00084">OptimizeForConnectionImpl&lt; BaseType, ChildType, Wrapped &gt;::Run()</a>, and <a class="el" href="_optimization_8hpp_source.html#l00136">OptimizeForExclusiveConnectionImpl&lt; BaseType, ChildType, Wrapped &gt;::Run()</a>.</p>
 
 </div>
 </div>
@@ -1243,7 +1243,7 @@
 <div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;        }</div>
 <div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    }</div>
 </div><!-- fragment -->
-<p class="reference">Referenced by <a class="el" href="_graph_8cpp_source.html#l00308">Graph::AddCompatibilityLayers()</a>, <a class="el" href="_network_8cpp_source.html#l01785">armnn::SelectTensorHandleStrategy()</a>, and <a class="el" href="_graph_8hpp_source.html#l00135">Graph::~Graph()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_graph_8cpp_source.html#l00329">Graph::AddCompatibilityLayers()</a>, <a class="el" href="_network_8cpp_source.html#l01812">armnn::SelectTensorHandleStrategy()</a>, and <a class="el" href="_graph_8hpp_source.html#l00135">Graph::~Graph()</a>.</p>
 
 </div>
 </div>
@@ -1455,12 +1455,12 @@
       </table>
 </div><div class="memdoc">
 
-<p class="definition">Definition at line <a class="el" href="_graph_8cpp_source.html#l00671">671</a> of file <a class="el" href="_graph_8cpp_source.html">Graph.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;{</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;    <span class="keywordflow">return</span> m_Profiler;</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;}</div>
+<p class="definition">Definition at line <a class="el" href="_graph_8cpp_source.html#l00692">692</a> of file <a class="el" href="_graph_8cpp_source.html">Graph.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;{</div>
+<div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;    <span class="keywordflow">return</span> m_Profiler;</div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;}</div>
 </div><!-- fragment -->
-<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l01869">armnn::Optimize()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l01896">armnn::Optimize()</a>.</p>
 
 </div>
 </div>
@@ -1479,41 +1479,41 @@
       </table>
 </div><div class="memdoc">
 
-<p class="definition">Definition at line <a class="el" href="_graph_8cpp_source.html#l00583">583</a> of file <a class="el" href="_graph_8cpp_source.html">Graph.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;{</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; layer : <a class="code" href="classarmnn_1_1_graph.html#af497e16cf92179b5e55543741351b8bf">TopologicalSort</a>())</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;    {</div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; input : layer-&gt;GetInputSlots())</div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;        {</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;            <span class="keyword">const</span> IOutputSlot* source = input.GetConnectedOutputSlot();</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;            <span class="keywordflow">if</span> (source == NULL)</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;            {</div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;                <span class="comment">// Throws exception due to a layer input not being connected to an output slot.</span></div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;                <span class="comment">// Verifies input slot weights and bias are set for FullyConnected layers.</span></div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;                ConstructErrorMessageForUnconnectedInputs(layer, input.GetSlotIndex());</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;            }</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160; </div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;            <span class="keywordflow">if</span> (!source-&gt;IsTensorInfoSet())</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;            {</div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;                std::ostringstream message;</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;                message &lt;&lt; <span class="stringliteral">&quot;Output slot TensorInfo not set on &quot;</span></div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;                        &lt;&lt; <a class="code" href="namespacearmnn.html#addb6b14dd1b632263ffe77430259a7c4">GetLayerTypeAsCString</a>(layer-&gt;GetType())</div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;                        &lt;&lt; <span class="stringliteral">&quot; layer &quot;</span></div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;                        &lt;&lt; std::quoted(layer-&gt;GetName());</div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;                <span class="keywordflow">throw</span> LayerValidationException(message.str());</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;            }</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;        }</div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160; </div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;        <span class="keywordflow">if</span> (layer-&gt;m_ShapeInferenceMethod == <a class="code" href="namespacearmnn.html#adf57837d00e8352d9b5cc5ab1fb5fee9af6486a22a9bb11959bfae60a3e5174b1">ShapeInferenceMethod::ValidateOnly</a>)</div>
+<p class="definition">Definition at line <a class="el" href="_graph_8cpp_source.html#l00604">604</a> of file <a class="el" href="_graph_8cpp_source.html">Graph.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;{</div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; layer : <a class="code" href="classarmnn_1_1_graph.html#af497e16cf92179b5e55543741351b8bf">TopologicalSort</a>())</div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;    {</div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; input : layer-&gt;GetInputSlots())</div>
 <div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;        {</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;            layer-&gt;ValidateTensorShapesFromInputs();</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;        }</div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;    }</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;}</div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;            <span class="keyword">const</span> IOutputSlot* source = input.GetConnectedOutputSlot();</div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;            <span class="keywordflow">if</span> (source == NULL)</div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;            {</div>
+<div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;                <span class="comment">// Throws exception due to a layer input not being connected to an output slot.</span></div>
+<div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;                <span class="comment">// Verifies input slot weights and bias are set for FullyConnected layers.</span></div>
+<div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;                ConstructErrorMessageForUnconnectedInputs(layer, input.GetSlotIndex());</div>
+<div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;            }</div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160; </div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;            <span class="keywordflow">if</span> (!source-&gt;IsTensorInfoSet())</div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;            {</div>
+<div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;                std::ostringstream message;</div>
+<div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;                message &lt;&lt; <span class="stringliteral">&quot;Output slot TensorInfo not set on &quot;</span></div>
+<div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;                        &lt;&lt; <a class="code" href="namespacearmnn.html#addb6b14dd1b632263ffe77430259a7c4">GetLayerTypeAsCString</a>(layer-&gt;GetType())</div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;                        &lt;&lt; <span class="stringliteral">&quot; layer &quot;</span></div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;                        &lt;&lt; std::quoted(layer-&gt;GetName());</div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;                <span class="keywordflow">throw</span> LayerValidationException(message.str());</div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;            }</div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;        }</div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160; </div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;        <span class="keywordflow">if</span> (layer-&gt;m_ShapeInferenceMethod == <a class="code" href="namespacearmnn.html#adf57837d00e8352d9b5cc5ab1fb5fee9af6486a22a9bb11959bfae60a3e5174b1">ShapeInferenceMethod::ValidateOnly</a>)</div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;        {</div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;            layer-&gt;ValidateTensorShapesFromInputs();</div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;        }</div>
+<div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;    }</div>
+<div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;}</div>
 </div><!-- fragment -->
 <p class="reference">References <a class="el" href="_internal_types_8cpp_source.html#l00013">armnn::GetLayerTypeAsCString()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#ab4e57caf059794897b17266090ebcb39">IOutputSlot::IsTensorInfoSet()</a>, <a class="el" href="_graph_8hpp_source.html#l00184">Graph::TopologicalSort()</a>, and <a class="el" href="namespacearmnn.html#adf57837d00e8352d9b5cc5ab1fb5fee9af6486a22a9bb11959bfae60a3e5174b1">armnn::ValidateOnly</a>.</p>
 
-<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l01869">armnn::Optimize()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l01896">armnn::Optimize()</a>.</p>
 
 </div>
 </div>
@@ -1705,8 +1705,8 @@
 
 </div>
 </div>
-<a id="afd329ee7d721aa6cdaacb8391308e34f"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#afd329ee7d721aa6cdaacb8391308e34f">&#9670;&nbsp;</a></span>Print()</h2>
+<a id="a5dbbfed3b6d0bf3126abfc34e93a69f0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5dbbfed3b6d0bf3126abfc34e93a69f0">&#9670;&nbsp;</a></span>Print()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -1714,7 +1714,8 @@
         <tr>
           <td class="memname"><a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> Print </td>
           <td>(</td>
-          <td class="paramname"></td><td>)</td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname"><em>extended</em> = <code>false</code></td><td>)</td>
           <td> const</td>
         </tr>
       </table>
@@ -1735,47 +1736,68 @@
 <div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;        <span class="keyword">auto</span> numInputSlots = it-&gt;GetNumInputSlots();</div>
 <div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;        <span class="keyword">auto</span> numOutputSlots = it-&gt;GetNumOutputSlots();</div>
 <div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160; </div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;        <a class="code" href="_logging_8hpp.html#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(info) &lt;&lt; it-&gt;GetName() &lt;&lt; <span class="stringliteral">&quot;:&quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.html#addb6b14dd1b632263ffe77430259a7c4">GetLayerTypeAsCString</a>(it-&gt;GetType())</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;                                &lt;&lt; <span class="stringliteral">&quot;:&quot;</span> &lt;&lt; it-&gt;GetBackendId().Get()</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;                                &lt;&lt; <span class="stringliteral">&quot; has &quot;</span> &lt;&lt; numInputSlots &lt;&lt; <span class="stringliteral">&quot; input slots&quot;</span></div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;                                &lt;&lt; <span class="stringliteral">&quot; and &quot;</span> &lt;&lt; numOutputSlots &lt;&lt; <span class="stringliteral">&quot; output slots.&quot;</span>;</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160; </div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span> i : it-&gt;GetInputSlots())</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;        {</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;            std::ostringstream message;</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;            <span class="keyword">auto</span> inputTensorShape = i.GetConnectedOutputSlot()-&gt;GetTensorInfo().GetShape();</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;            <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numDims = inputTensorShape.GetNumDimensions();</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160; </div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;            message &lt;&lt; <span class="stringliteral">&quot;The input slot has shape [ &quot;</span>;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;            <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim=0; dim &lt; numDims; dim++)</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;            {</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;                message &lt;&lt; inputTensorShape[dim] &lt;&lt; <span class="stringliteral">&quot;,&quot;</span>;</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;            }</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;            message &lt;&lt; <span class="stringliteral">&quot; ]&quot;</span>;</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;            <a class="code" href="_logging_8hpp.html#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(info) &lt;&lt; message.str();</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;        }</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160; </div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; it-&gt;GetNumOutputSlots(); i++)</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;        {</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;            <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.html">armnn::Layer</a> *layer = it;</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;            std::ostringstream message;</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;            <span class="keyword">auto</span> outputTensorShape = layer-&gt;<a class="code" href="classarmnn_1_1_layer.html#a98cdff4e0b45f4c80bfcedaf926e16e0">GetOutputSlots</a>()[i].GetTensorInfo().GetShape();</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;            <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numDims = outputTensorShape.GetNumDimensions();</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160; </div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;            message &lt;&lt; <span class="stringliteral">&quot;The output slot has shape [ &quot;</span>;</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;            <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim=0; dim &lt; numDims; dim++)</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;            {</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;                message &lt;&lt; outputTensorShape[dim] &lt;&lt; <span class="stringliteral">&quot;,&quot;</span>;</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;            }</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;            message &lt;&lt; <span class="stringliteral">&quot; ]&quot;</span>;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;            <a class="code" href="_logging_8hpp.html#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(info) &lt;&lt; message.str();</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;        }</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;        <a class="code" href="_logging_8hpp.html#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(info) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    }</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    <a class="code" href="_logging_8hpp.html#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(info) &lt;&lt; <span class="stringliteral">&quot;\n\n&quot;</span>;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160; </div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">Status::Success</a>;</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;}</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;        std::string guid;</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;        <span class="keywordflow">if</span> (extended)</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;        {</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;            guid += <span class="stringliteral">&quot;:&quot;</span>;</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;            guid += std::to_string(it-&gt;GetGuid());</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;        }</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;        <a class="code" href="_logging_8hpp.html#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(info) &lt;&lt; it-&gt;GetName() &lt;&lt; <span class="stringliteral">&quot;:&quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.html#addb6b14dd1b632263ffe77430259a7c4">GetLayerTypeAsCString</a>(it-&gt;GetType())</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;                                &lt;&lt; <span class="stringliteral">&quot;:&quot;</span> &lt;&lt; it-&gt;GetBackendId().Get()</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;                                &lt;&lt; guid</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;                                &lt;&lt; <span class="stringliteral">&quot; has &quot;</span> &lt;&lt; numInputSlots &lt;&lt; <span class="stringliteral">&quot; input slots&quot;</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;                                &lt;&lt; <span class="stringliteral">&quot; and &quot;</span> &lt;&lt; numOutputSlots &lt;&lt; <span class="stringliteral">&quot; output slots.&quot;</span>;</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160; </div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span> i : it-&gt;GetInputSlots())</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;        {</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;            std::ostringstream message;</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;            <span class="keyword">auto</span> inputTensorShape = i.GetConnectedOutputSlot()-&gt;GetTensorInfo().GetShape();</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;            <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numDims = inputTensorShape.GetNumDimensions();</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160; </div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;            message &lt;&lt; <span class="stringliteral">&quot;The input slot has shape [ &quot;</span>;</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;            <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim=0; dim &lt; numDims; dim++)</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;            {</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;                message &lt;&lt; inputTensorShape[dim] &lt;&lt; <span class="stringliteral">&quot;,&quot;</span>;</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;            }</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;            message &lt;&lt; <span class="stringliteral">&quot; ]&quot;</span>;</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;            <span class="keywordflow">if</span> (extended)</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;            {</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;                message &lt;&lt; <span class="stringliteral">&quot; Scale: &quot;</span> &lt;&lt; i.GetConnectedOutputSlot()-&gt;GetTensorInfo().GetQuantizationScale();</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;                message &lt;&lt; <span class="stringliteral">&quot; Offset: &quot;</span> &lt;&lt; i.GetConnectedOutputSlot()-&gt;GetTensorInfo().GetQuantizationOffset();</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;                message &lt;&lt;  <span class="stringliteral">&quot; The input slot is connected to: &quot;</span>;</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;                message &lt;&lt; i.GetConnectedOutputSlot()-&gt;GetOwningIConnectableLayer().GetGuid();</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;            }</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;            <a class="code" href="_logging_8hpp.html#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(info) &lt;&lt; message.str();</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;        }</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160; </div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; it-&gt;GetNumOutputSlots(); i++)</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;        {</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;            <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.html">armnn::Layer</a> *layer = it;</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;            std::ostringstream message;</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;            <span class="keyword">auto</span> outputTensorShape = layer-&gt;<a class="code" href="classarmnn_1_1_layer.html#a98cdff4e0b45f4c80bfcedaf926e16e0">GetOutputSlots</a>()[i].GetTensorInfo().GetShape();</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;            <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numDims = outputTensorShape.GetNumDimensions();</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160; </div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;            message &lt;&lt; <span class="stringliteral">&quot;The output slot has shape [ &quot;</span>;</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;            <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim=0; dim &lt; numDims; dim++)</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;            {</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;                message &lt;&lt; outputTensorShape[dim] &lt;&lt; <span class="stringliteral">&quot;,&quot;</span>;</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;            }</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;            message &lt;&lt; <span class="stringliteral">&quot; ]&quot;</span>;</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;            <span class="keywordflow">if</span> (extended)</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;            {</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;                message &lt;&lt; <span class="stringliteral">&quot; Scale: &quot;</span> &lt;&lt; layer-&gt;<a class="code" href="classarmnn_1_1_layer.html#a98cdff4e0b45f4c80bfcedaf926e16e0">GetOutputSlots</a>()[i].GetTensorInfo().GetQuantizationScale();</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;                message &lt;&lt; <span class="stringliteral">&quot; Offset: &quot;</span> &lt;&lt; layer-&gt;<a class="code" href="classarmnn_1_1_layer.html#a98cdff4e0b45f4c80bfcedaf926e16e0">GetOutputSlots</a>()[i].GetTensorInfo().GetQuantizationOffset();</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;                message &lt;&lt;  <span class="stringliteral">&quot; The output slot is connected to: &quot;</span>;</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;                message &lt;&lt; layer-&gt;<a class="code" href="classarmnn_1_1_layer.html#a98cdff4e0b45f4c80bfcedaf926e16e0">GetOutputSlots</a>()[i].GetConnection(0)-&gt;GetOwningIConnectableLayer().GetGuid();</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;            }</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;            <a class="code" href="_logging_8hpp.html#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(info) &lt;&lt; message.str();</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;        }</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;        <a class="code" href="_logging_8hpp.html#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(info) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    }</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    <a class="code" href="_logging_8hpp.html#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(info) &lt;&lt; <span class="stringliteral">&quot;\n\n&quot;</span>;</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160; </div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">Status::Success</a>;</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;}</div>
 </div><!-- fragment -->
 <p class="reference">References <a class="el" href="_logging_8hpp_source.html#l00212">ARMNN_LOG</a>, <a class="el" href="_internal_types_8cpp_source.html#l00013">armnn::GetLayerTypeAsCString()</a>, <a class="el" href="_layer_8hpp_source.html#l00259">Layer::GetOutputSlots()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::info</a>, <a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">armnn::Success</a>, and <a class="el" href="_graph_8hpp_source.html#l00184">Graph::TopologicalSort()</a>.</p>
 
@@ -1830,66 +1852,66 @@
       </table>
 </div><div class="memdoc">
 
-<p class="definition">Definition at line <a class="el" href="_graph_8cpp_source.html#l00125">125</a> of file <a class="el" href="_graph_8cpp_source.html">Graph.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;{</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    {</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;        DotGraph graph(stream, <span class="stringliteral">&quot;Optimized&quot;</span>);</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160; </div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;        {</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;            <span class="comment">// Default node attributes:</span></div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;            DotDefaults nodes(stream, <span class="stringliteral">&quot;node&quot;</span>);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;            nodes.GetAttributeSet()</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;                .AddAttribute(<span class="stringliteral">&quot;shape&quot;</span>, <span class="stringliteral">&quot;record&quot;</span>);</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;        }</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160; </div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;        {</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;            <span class="comment">// Default edge attributes:</span></div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;            DotDefaults edges(stream, <span class="stringliteral">&quot;edge&quot;</span>);</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;            edges.GetAttributeSet()</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;                .AddAttribute(<span class="stringliteral">&quot;fontsize&quot;</span>, 8)</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;                .AddAttribute(<span class="stringliteral">&quot;fontcolor&quot;</span>, <span class="stringliteral">&quot;blue&quot;</span>)</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;                .AddAttribute(<span class="stringliteral">&quot;fontname&quot;</span>, <span class="stringliteral">&quot;arial-bold&quot;</span>);</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;        }</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160; </div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;        <span class="comment">// First declares the nodes.</span></div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; layer : m_Layers)</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;        {</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;            DotNode node(stream, layer-&gt;GetGuid(), <a class="code" href="namespacearmnn.html#addb6b14dd1b632263ffe77430259a7c4">GetLayerTypeAsCString</a>(layer-&gt;GetType()));</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;            <span class="comment">// Extracts the layer parameters.</span></div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;            <a class="code" href="namespacearmnn.html#a8c42c6647e31ebe525aeba878d133e45">ParameterStringifyFunction</a> extractParams = [&amp;node](<span class="keyword">const</span> std::string &amp; name, <span class="keyword">const</span> std::string &amp; value){</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;                node.GetContents().AddContent(name + <span class="stringliteral">&quot; : &quot;</span> + value);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;            };</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;            layer-&gt;SerializeLayerParameters(extractParams);</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;        }</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160; </div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;        <span class="comment">// Second declares the edges.</span></div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; layer : m_Layers)</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;        {</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;            <a class="code" href="_types_8hpp.html#af22094b802160f09f7c89ad9eee10084">LayerGuid</a> toId = layer-&gt;GetGuid();</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160; </div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;            <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0;i&lt;layer-&gt;GetNumInputSlots(); i++)</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;            {</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;                OutputSlot* outputSlot = <span class="keyword">static_cast&lt;</span>OutputSlot*<span class="keyword">&gt;</span>(layer-&gt;GetInputSlot(i).GetConnection());</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;                <a class="code" href="_types_8hpp.html#af22094b802160f09f7c89ad9eee10084">LayerGuid</a> fromId = outputSlot-&gt;GetOwningLayer().GetGuid();</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;                DotEdge edge(stream, fromId, toId);</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160; </div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;                <span class="comment">// Now print the tensor shape on the edge.</span></div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;                {</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;                    <span class="comment">// Constructs the label attribute with HTML markup.</span></div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;                    std::stringstream ss;</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;                    ss &lt;&lt; <span class="stringliteral">&quot;&lt; &quot;</span> &lt;&lt; outputSlot-&gt;GetTensorInfo().GetShape() &lt;&lt; <span class="stringliteral">&quot; &gt;&quot;</span>;</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;                    edge.GetAttributeSet().AddAttribute(<span class="stringliteral">&quot;label&quot;</span>, ss);</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;                }</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;            }</div>
+<p class="definition">Definition at line <a class="el" href="_graph_8cpp_source.html#l00146">146</a> of file <a class="el" href="_graph_8cpp_source.html">Graph.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;{</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    {</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;        DotGraph graph(stream, <span class="stringliteral">&quot;Optimized&quot;</span>);</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160; </div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;        {</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;            <span class="comment">// Default node attributes:</span></div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;            DotDefaults nodes(stream, <span class="stringliteral">&quot;node&quot;</span>);</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;            nodes.GetAttributeSet()</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;                .AddAttribute(<span class="stringliteral">&quot;shape&quot;</span>, <span class="stringliteral">&quot;record&quot;</span>);</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;        }</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160; </div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;        {</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;            <span class="comment">// Default edge attributes:</span></div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;            DotDefaults edges(stream, <span class="stringliteral">&quot;edge&quot;</span>);</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;            edges.GetAttributeSet()</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;                .AddAttribute(<span class="stringliteral">&quot;fontsize&quot;</span>, 8)</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;                .AddAttribute(<span class="stringliteral">&quot;fontcolor&quot;</span>, <span class="stringliteral">&quot;blue&quot;</span>)</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;                .AddAttribute(<span class="stringliteral">&quot;fontname&quot;</span>, <span class="stringliteral">&quot;arial-bold&quot;</span>);</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;        }</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160; </div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;        <span class="comment">// First declares the nodes.</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; layer : m_Layers)</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;        {</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;            DotNode node(stream, layer-&gt;GetGuid(), <a class="code" href="namespacearmnn.html#addb6b14dd1b632263ffe77430259a7c4">GetLayerTypeAsCString</a>(layer-&gt;GetType()));</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;            <span class="comment">// Extracts the layer parameters.</span></div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;            <a class="code" href="namespacearmnn.html#a8c42c6647e31ebe525aeba878d133e45">ParameterStringifyFunction</a> extractParams = [&amp;node](<span class="keyword">const</span> std::string &amp; name, <span class="keyword">const</span> std::string &amp; value){</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;                node.GetContents().AddContent(name + <span class="stringliteral">&quot; : &quot;</span> + value);</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;            };</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;            layer-&gt;SerializeLayerParameters(extractParams);</div>
 <div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;        }</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;    }</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160; </div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;    <span class="keywordflow">if</span> (stream.bad())</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    {</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">Status::Failure</a>;</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    }</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">Status::Success</a>;</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;}</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160; </div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;        <span class="comment">// Second declares the edges.</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; layer : m_Layers)</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;        {</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;            <a class="code" href="_types_8hpp.html#af22094b802160f09f7c89ad9eee10084">LayerGuid</a> toId = layer-&gt;GetGuid();</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160; </div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;            <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0;i&lt;layer-&gt;GetNumInputSlots(); i++)</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;            {</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;                OutputSlot* outputSlot = <span class="keyword">static_cast&lt;</span>OutputSlot*<span class="keyword">&gt;</span>(layer-&gt;GetInputSlot(i).GetConnection());</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;                <a class="code" href="_types_8hpp.html#af22094b802160f09f7c89ad9eee10084">LayerGuid</a> fromId = outputSlot-&gt;GetOwningLayer().GetGuid();</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;                DotEdge edge(stream, fromId, toId);</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160; </div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;                <span class="comment">// Now print the tensor shape on the edge.</span></div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;                {</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;                    <span class="comment">// Constructs the label attribute with HTML markup.</span></div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;                    std::stringstream ss;</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;                    ss &lt;&lt; <span class="stringliteral">&quot;&lt; &quot;</span> &lt;&lt; outputSlot-&gt;GetTensorInfo().GetShape() &lt;&lt; <span class="stringliteral">&quot; &gt;&quot;</span>;</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;                    edge.GetAttributeSet().AddAttribute(<span class="stringliteral">&quot;label&quot;</span>, ss);</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;                }</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;            }</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;        }</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;    }</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160; </div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;    <span class="keywordflow">if</span> (stream.bad())</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    {</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">Status::Failure</a>;</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;    }</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">Status::Success</a>;</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;}</div>
 </div><!-- fragment -->
 <p class="reference">References <a class="el" href="_dot_serializer_8cpp_source.html#l00095">DotAttributeSet::AddAttribute()</a>, <a class="el" href="_dot_serializer_8cpp_source.html#l00147">NodeContent::AddContent()</a>, <a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">armnn::Failure</a>, <a class="el" href="_dot_serializer_8hpp_source.html#l00083">DotEdge::GetAttributeSet()</a>, <a class="el" href="_dot_serializer_8hpp_source.html#l00120">DotDefaults::GetAttributeSet()</a>, <a class="el" href="_dot_serializer_8hpp_source.html#l00107">DotNode::GetContents()</a>, <a class="el" href="_layer_8hpp_source.html#l00343">Layer::GetGuid()</a>, <a class="el" href="_internal_types_8cpp_source.html#l00013">armnn::GetLayerTypeAsCString()</a>, <a class="el" href="_layer_8hpp_source.html#l00132">OutputSlot::GetOwningLayer()</a>, <a class="el" href="_tensor_8hpp_source.html#l00191">TensorInfo::GetShape()</a>, <a class="el" href="_layer_8cpp_source.html#l00092">OutputSlot::GetTensorInfo()</a>, and <a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">armnn::Success</a>.</p>
 
@@ -1910,10 +1932,10 @@
       </table>
 </div><div class="memdoc">
 
-<p class="definition">Definition at line <a class="el" href="_graph_8cpp_source.html#l00676">676</a> of file <a class="el" href="_graph_8cpp_source.html">Graph.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;{</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;    m_LayersInOrder = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;}</div>
+<p class="definition">Definition at line <a class="el" href="_graph_8cpp_source.html#l00697">697</a> of file <a class="el" href="_graph_8cpp_source.html">Graph.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;{</div>
+<div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;    m_LayersInOrder = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;}</div>
 </div><!-- fragment -->
 </div>
 </div>
@@ -1943,25 +1965,25 @@
       </table>
 </div><div class="memdoc">
 
-<p class="definition">Definition at line <a class="el" href="_graph_8cpp_source.html#l00451">451</a> of file <a class="el" href="_graph_8cpp_source.html">Graph.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;{</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;    <span class="comment">// Look through each layer in the new subgraph and add any that are not already a member of this graph</span></div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;    substituteSubgraph.ForEachIConnectableLayer([<span class="keyword">this</span>](IConnectableLayer* iConnectableLayer)</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;    {</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;        <span class="keywordflow">if</span> (std::find(std::begin(m_Layers),</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;                      std::end(m_Layers),</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;                      iConnectableLayer) == std::end(m_Layers))</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;        {</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;            <span class="keyword">auto</span> layer = PolymorphicDowncast&lt;Layer*&gt;(iConnectableLayer);</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;            layer-&gt;Reparent(*<span class="keyword">this</span>, m_Layers.end());</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;            m_LayersInOrder = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;        }</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;    });</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160; </div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;    ReplaceSubgraphConnections(subgraph, substituteSubgraph);</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;    EraseSubgraphLayers(subgraph);</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;    <a class="code" href="classarmnn_1_1_graph.html#af497e16cf92179b5e55543741351b8bf">TopologicalSort</a>();</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;}</div>
+<p class="definition">Definition at line <a class="el" href="_graph_8cpp_source.html#l00472">472</a> of file <a class="el" href="_graph_8cpp_source.html">Graph.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;{</div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;    <span class="comment">// Look through each layer in the new subgraph and add any that are not already a member of this graph</span></div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;    substituteSubgraph.ForEachIConnectableLayer([<span class="keyword">this</span>](IConnectableLayer* iConnectableLayer)</div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;    {</div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;        <span class="keywordflow">if</span> (std::find(std::begin(m_Layers),</div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;                      std::end(m_Layers),</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;                      iConnectableLayer) == std::end(m_Layers))</div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;        {</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;            <span class="keyword">auto</span> layer = PolymorphicDowncast&lt;Layer*&gt;(iConnectableLayer);</div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;            layer-&gt;Reparent(*<span class="keyword">this</span>, m_Layers.end());</div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;            m_LayersInOrder = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;        }</div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;    });</div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160; </div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;    ReplaceSubgraphConnections(subgraph, substituteSubgraph);</div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;    EraseSubgraphLayers(subgraph);</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;    <a class="code" href="classarmnn_1_1_graph.html#af497e16cf92179b5e55543741351b8bf">TopologicalSort</a>();</div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;}</div>
 </div><!-- fragment -->
 <p class="reference">References <a class="el" href="_subgraph_view_8hpp_source.html#l00046">SubgraphView::ForEachIConnectableLayer()</a>, and <a class="el" href="_graph_8hpp_source.html#l00184">Graph::TopologicalSort()</a>.</p>
 
@@ -1996,20 +2018,20 @@
 <p>Substitutes the given sub-graph with either a new layer or a new sub-graph. </p>
 <p>In either case, the given layer or all the layers in the given sub-graph must belong to this graph. </p>
 
-<p class="definition">Definition at line <a class="el" href="_graph_8cpp_source.html#l00440">440</a> of file <a class="el" href="_graph_8cpp_source.html">Graph.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;{</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;    <a class="code" href="_assert_8hpp.html#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(substituteLayer != <span class="keyword">nullptr</span>);</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160; </div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;    <span class="comment">// Create a new sub-graph with only the given layer, using</span></div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;    <span class="comment">// the given sub-graph as a reference of which parent graph to use</span></div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;    <a class="code" href="classarmnn_1_1_graph.html#a0da841ca170a7634c24eb102b95daa2a">SubgraphView</a> substituteSubgraph(substituteLayer);</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160; </div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;    <a class="code" href="classarmnn_1_1_graph.html#aafbd4b469e47160017f409df8d077184">SubstituteSubgraph</a>(subgraph, substituteSubgraph);</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;}</div>
+<p class="definition">Definition at line <a class="el" href="_graph_8cpp_source.html#l00461">461</a> of file <a class="el" href="_graph_8cpp_source.html">Graph.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;{</div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;    <a class="code" href="_assert_8hpp.html#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(substituteLayer != <span class="keyword">nullptr</span>);</div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160; </div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;    <span class="comment">// Create a new sub-graph with only the given layer, using</span></div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;    <span class="comment">// the given sub-graph as a reference of which parent graph to use</span></div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;    <a class="code" href="classarmnn_1_1_graph.html#a0da841ca170a7634c24eb102b95daa2a">SubgraphView</a> substituteSubgraph(substituteLayer);</div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160; </div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;    <a class="code" href="classarmnn_1_1_graph.html#aafbd4b469e47160017f409df8d077184">SubstituteSubgraph</a>(subgraph, substituteSubgraph);</div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;}</div>
 </div><!-- fragment -->
 <p class="reference">References <a class="el" href="_assert_8hpp_source.html#l00014">ARMNN_ASSERT</a>.</p>
 
-<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l01301">armnn::ApplyBackendOptimizations()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l01328">armnn::ApplyBackendOptimizations()</a>.</p>
 
 </div>
 </div>
@@ -2043,7 +2065,7 @@
 </div><!-- fragment -->
 <p class="reference">References <a class="el" href="_graph_8hpp_source.html#l00184">Graph::TopologicalSort()</a>.</p>
 
-<p class="reference">Referenced by <a class="el" href="_graph_utils_8cpp_source.html#l00068">CheckOrder()</a>, <a class="el" href="_graph_8cpp_source.html#l00583">Graph::InferTensorInfos()</a>, <a class="el" href="_optimizer_8cpp_source.html#l00016">Optimizer::Pass()</a>, <a class="el" href="_graph_8cpp_source.html#l00068">Graph::Print()</a>, <a class="el" href="_graph_8cpp_source.html#l00451">Graph::SubstituteSubgraph()</a>, <a class="el" href="_graph_8hpp_source.html#l00184">Graph::TopologicalSort()</a>, and <a class="el" href="_graph_8cpp_source.html#l00560">Graph::VerifyConstantLayerSetTensorInfo()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_graph_utils_8cpp_source.html#l00068">CheckOrder()</a>, <a class="el" href="_graph_8cpp_source.html#l00604">Graph::InferTensorInfos()</a>, <a class="el" href="_optimizer_8cpp_source.html#l00016">Optimizer::Pass()</a>, <a class="el" href="_graph_8cpp_source.html#l00068">Graph::Print()</a>, <a class="el" href="_graph_8cpp_source.html#l00472">Graph::SubstituteSubgraph()</a>, <a class="el" href="_graph_8hpp_source.html#l00184">Graph::TopologicalSort()</a>, and <a class="el" href="_graph_8cpp_source.html#l00581">Graph::VerifyConstantLayerSetTensorInfo()</a>.</p>
 
 </div>
 </div>
@@ -2089,32 +2111,32 @@
   </dd>
 </dl>
 
-<p class="definition">Definition at line <a class="el" href="_graph_8cpp_source.html#l00560">560</a> of file <a class="el" href="_graph_8cpp_source.html">Graph.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;{</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; layer : <a class="code" href="classarmnn_1_1_graph.html#af497e16cf92179b5e55543741351b8bf">TopologicalSort</a>())</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;    {</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;        <span class="keywordflow">if</span> (layer-&gt;GetType() == <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">armnn::LayerType::Constant</a>)</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;        {</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;            <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; output: layer-&gt;GetOutputSlots())</div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;            {</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;                <span class="keywordflow">if</span> (!output.IsTensorInfoSet())</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;                {</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;                    std::ostringstream message;</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;                    message &lt;&lt; <span class="stringliteral">&quot;Output slot TensorInfo not set on &quot;</span></div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;                            &lt;&lt; <a class="code" href="namespacearmnn.html#addb6b14dd1b632263ffe77430259a7c4">GetLayerTypeAsCString</a>(layer-&gt;GetType())</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;                            &lt;&lt; <span class="stringliteral">&quot; layer \&quot;&quot;</span></div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;                            &lt;&lt; layer-&gt;GetName()</div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;                            &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;                    <span class="keywordflow">throw</span> LayerValidationException(message.str());</div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;                }</div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;            }</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;        }</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;    }</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;}</div>
+<p class="definition">Definition at line <a class="el" href="_graph_8cpp_source.html#l00581">581</a> of file <a class="el" href="_graph_8cpp_source.html">Graph.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;{</div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; layer : <a class="code" href="classarmnn_1_1_graph.html#af497e16cf92179b5e55543741351b8bf">TopologicalSort</a>())</div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;    {</div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;        <span class="keywordflow">if</span> (layer-&gt;GetType() == <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">armnn::LayerType::Constant</a>)</div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;        {</div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;            <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; output: layer-&gt;GetOutputSlots())</div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;            {</div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;                <span class="keywordflow">if</span> (!output.IsTensorInfoSet())</div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;                {</div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;                    std::ostringstream message;</div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;                    message &lt;&lt; <span class="stringliteral">&quot;Output slot TensorInfo not set on &quot;</span></div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;                            &lt;&lt; <a class="code" href="namespacearmnn.html#addb6b14dd1b632263ffe77430259a7c4">GetLayerTypeAsCString</a>(layer-&gt;GetType())</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;                            &lt;&lt; <span class="stringliteral">&quot; layer \&quot;&quot;</span></div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;                            &lt;&lt; layer-&gt;GetName()</div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;                            &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;                    <span class="keywordflow">throw</span> LayerValidationException(message.str());</div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;                }</div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;            }</div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;        }</div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;    }</div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;}</div>
 </div><!-- fragment -->
 <p class="reference">References <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">armnn::Constant</a>, <a class="el" href="_internal_types_8cpp_source.html#l00013">armnn::GetLayerTypeAsCString()</a>, and <a class="el" href="_graph_8hpp_source.html#l00184">Graph::TopologicalSort()</a>.</p>
 
-<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l01869">armnn::Optimize()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l01896">armnn::Optimize()</a>.</p>
 
 </div>
 </div>
@@ -2156,7 +2178,7 @@
 <div class="ttc" id="anamespacearmnn_html_aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650"><div class="ttname"><a href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650">armnn::EdgeStrategy::DirectCompatibility</a></div><div class="ttdeci">@ DirectCompatibility</div><div class="ttdoc">No strategy has been defined. Used internally to verify integrity of optimizations.</div></div>
 <div class="ttc" id="aclassarmnn_1_1_graph_html_ac7ed5efddd83499ff642cc65f3f66a14"><div class="ttname"><a href="classarmnn_1_1_graph.html#ac7ed5efddd83499ff642cc65f3f66a14">armnn::Graph::GetPosInGraph</a></div><div class="ttdeci">Iterator GetPosInGraph(Layer &amp;layer)</div><div class="ttdoc">Gets the position of a layer in the graph.</div><div class="ttdef"><b>Definition:</b> <a href="_graph_8hpp_source.html#l00448">Graph.hpp:448</a></div></div>
 <div class="ttc" id="aclassarmnn_1_1_graph_html_a96d76fd10af39fbfabfd0caf0d1439fa"><div class="ttname"><a href="classarmnn_1_1_graph.html#a96d76fd10af39fbfabfd0caf0d1439fa">armnn::Graph::EraseLayer</a></div><div class="ttdeci">void EraseLayer(Iterator pos)</div><div class="ttdoc">Deletes the layer at the specified position.</div><div class="ttdef"><b>Definition:</b> <a href="_graph_8hpp_source.html#l00504">Graph.hpp:504</a></div></div>
-<div class="ttc" id="aclassarmnn_1_1_graph_html_aafbd4b469e47160017f409df8d077184"><div class="ttname"><a href="classarmnn_1_1_graph.html#aafbd4b469e47160017f409df8d077184">armnn::Graph::SubstituteSubgraph</a></div><div class="ttdeci">void SubstituteSubgraph(SubgraphView &amp;subgraph, IConnectableLayer *substituteLayer)</div><div class="ttdoc">Substitutes the given sub-graph with either a new layer or a new sub-graph.</div><div class="ttdef"><b>Definition:</b> <a href="_graph_8cpp_source.html#l00440">Graph.cpp:440</a></div></div>
+<div class="ttc" id="aclassarmnn_1_1_graph_html_aafbd4b469e47160017f409df8d077184"><div class="ttname"><a href="classarmnn_1_1_graph.html#aafbd4b469e47160017f409df8d077184">armnn::Graph::SubstituteSubgraph</a></div><div class="ttdeci">void SubstituteSubgraph(SubgraphView &amp;subgraph, IConnectableLayer *substituteLayer)</div><div class="ttdoc">Substitutes the given sub-graph with either a new layer or a new sub-graph.</div><div class="ttdef"><b>Definition:</b> <a href="_graph_8cpp_source.html#l00461">Graph.cpp:461</a></div></div>
 <div class="ttc" id="aclassarmnn_1_1_graph_html_a0da841ca170a7634c24eb102b95daa2a"><div class="ttname"><a href="classarmnn_1_1_graph.html#a0da841ca170a7634c24eb102b95daa2a">armnn::Graph::SubgraphView</a></div><div class="ttdeci">friend class SubgraphView</div><div class="ttdef"><b>Definition:</b> <a href="_graph_8hpp_source.html#l00300">Graph.hpp:300</a></div></div>
 <div class="ttc" id="anamespacearmnn_html_a34eaed09302a4d7bfe930c13a7673e0ba23c3efdd3f80798660ecf0b9af6dd5dd"><div class="ttname"><a href="namespacearmnn.html#a34eaed09302a4d7bfe930c13a7673e0ba23c3efdd3f80798660ecf0b9af6dd5dd">armnn::GraphEvent::LayerAdded</a></div><div class="ttdeci">@ LayerAdded</div></div>
 <div class="ttc" id="aclassarmnn_1_1_graph_html_acc25db0641c1c22faf95af3bb49080c9"><div class="ttname"><a href="classarmnn_1_1_graph.html#acc25db0641c1c22faf95af3bb49080c9">armnn::Graph::Iterator</a></div><div class="ttdeci">LayerList::const_iterator Iterator</div><div class="ttdef"><b>Definition:</b> <a href="_graph_8hpp_source.html#l00053">Graph.hpp:53</a></div></div>
@@ -2190,7 +2212,7 @@
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="namespacearmnn.html">armnn</a></li><li class="navelem"><a class="el" href="classarmnn_1_1_graph.html">Graph</a></li>
-    <li class="footer">Generated on Tue Aug 22 2023 11:37:06 for Arm NN by
+    <li class="footer">Generated on Wed Nov 22 2023 10:57:14 for Arm NN by
     <a href="http://www.doxygen.org/index.html">
     <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
   </ul>