aboutsummaryrefslogtreecommitdiff
path: root/23.02/classarmnn_1_1_i_optimized_network.xhtml
diff options
context:
space:
mode:
authorNikhil Raj <nikhil.raj@arm.com>2023-02-24 10:28:19 +0000
committerNikhil Raj <nikhil.raj@arm.com>2023-02-24 10:28:19 +0000
commit8d2ca734165a068478df7cffa46185680b05cd20 (patch)
tree0433a7e6b007fe4639334c4438e58e9872a34b20 /23.02/classarmnn_1_1_i_optimized_network.xhtml
parentcb0630959aeae05bc2ae9f6d80cf5f5983a8fb77 (diff)
downloadarmnn-8d2ca734165a068478df7cffa46185680b05cd20.tar.gz
Update Doxygen docu for 23.02
Signed-off-by: Nikhil Raj <nikhil.raj@arm.com> Change-Id: Ie6c19a27d50fefab2796b2b5875374e81f5bf971
Diffstat (limited to '23.02/classarmnn_1_1_i_optimized_network.xhtml')
-rw-r--r--23.02/classarmnn_1_1_i_optimized_network.xhtml877
1 files changed, 877 insertions, 0 deletions
diff --git a/23.02/classarmnn_1_1_i_optimized_network.xhtml b/23.02/classarmnn_1_1_i_optimized_network.xhtml
new file mode 100644
index 0000000000..9fd9358739
--- /dev/null
+++ b/23.02/classarmnn_1_1_i_optimized_network.xhtml
@@ -0,0 +1,877 @@
+<!-- Copyright (c) 2020 ARM Limited. -->
+<!-- -->
+<!-- SPDX-License-Identifier: MIT -->
+<!-- -->
+<!-- HTML header for doxygen 1.8.13-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<meta name="robots" content="NOINDEX, NOFOLLOW" />
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>ArmNN: IOptimizedNetwork Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="stylesheet.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <img alt="ArmNN" src="Arm_NN_horizontal_blue.png" style="max-width: 10rem; margin-top: .5rem; margin-left 10px"/>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">
+ &#160;<span id="projectnumber">23.02</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.13 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classarmnn_1_1_i_optimized_network.xhtml','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
+<a href="#pro-methods">Protected Member Functions</a> &#124;
+<a href="#pro-attribs">Protected Attributes</a> &#124;
+<a href="#friends">Friends</a> &#124;
+<a href="classarmnn_1_1_i_optimized_network-members.xhtml">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">IOptimizedNetwork Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p><code>#include &lt;<a class="el" href="_i_network_8hpp_source.xhtml">INetwork.hpp</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:aff3fde909d22ed157046682e70129259"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml#aff3fde909d22ed157046682e70129259">PrintGraph</a> ()</td></tr>
+<tr class="separator:aff3fde909d22ed157046682e70129259"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a26794f014974a6f963a8925de07bffeb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml#a26794f014974a6f963a8925de07bffeb">SerializeToDot</a> (std::ostream &amp;stream) const</td></tr>
+<tr class="separator:a26794f014974a6f963a8925de07bffeb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa1b6106cb25d38e369fd647f4324cebe"><td class="memItemLeft" align="right" valign="top">arm::pipe::ProfilingGuid&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml#aa1b6106cb25d38e369fd647f4324cebe">GetGuid</a> () const</td></tr>
+<tr class="separator:aa1b6106cb25d38e369fd647f4324cebe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8d8179a4a0703602a5d7dbb6e92eaf69"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml#a8d8179a4a0703602a5d7dbb6e92eaf69">GetNumInputs</a> () const</td></tr>
+<tr class="separator:a8d8179a4a0703602a5d7dbb6e92eaf69"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a604654b453ec291a503d62a0beb849d3"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml#a604654b453ec291a503d62a0beb849d3">GetNumOutputs</a> () const</td></tr>
+<tr class="separator:a604654b453ec291a503d62a0beb849d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a72032c65bf8b8acf09b564b7d80078c5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml#a72032c65bf8b8acf09b564b7d80078c5">ExecuteStrategy</a> (<a class="el" href="classarmnn_1_1_i_strategy.xhtml">IStrategy</a> &amp;strategy) const</td></tr>
+<tr class="separator:a72032c65bf8b8acf09b564b7d80078c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a32eecbed1d4cd2602204a2ab3f5f249e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml#a32eecbed1d4cd2602204a2ab3f5f249e">IOptimizedNetwork</a> (const <a class="el" href="classarmnn_1_1_i_optimized_network.xhtml">IOptimizedNetwork</a> &amp;other, const <a class="el" href="namespacearmnn.xhtml#a5b6893cda5b69359a4244c06054da18f">ModelOptions</a> &amp;modelOptions)</td></tr>
+<tr class="memdesc:a32eecbed1d4cd2602204a2ab3f5f249e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a copy of the <a class="el" href="classarmnn_1_1_i_optimized_network.xhtml">IOptimizedNetwork</a>. <a href="#a32eecbed1d4cd2602204a2ab3f5f249e">More...</a><br /></td></tr>
+<tr class="separator:a32eecbed1d4cd2602204a2ab3f5f249e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af730a6ec3deb072dc2687089f3f77f9e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml#af730a6ec3deb072dc2687089f3f77f9e">IOptimizedNetwork</a> (std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a> &gt; graph)</td></tr>
+<tr class="separator:af730a6ec3deb072dc2687089f3f77f9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5fd8b75db92fb2a84d12e2092a173716"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml#a5fd8b75db92fb2a84d12e2092a173716">IOptimizedNetwork</a> (std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_optimized_network_impl.xhtml">OptimizedNetworkImpl</a> &gt; impl)</td></tr>
+<tr class="separator:a5fd8b75db92fb2a84d12e2092a173716"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a437cc59f5247f213adf34e84696f60da"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml#a437cc59f5247f213adf34e84696f60da">~IOptimizedNetwork</a> ()</td></tr>
+<tr class="separator:a437cc59f5247f213adf34e84696f60da"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a880db527e7dbf8d0de3fee52ba072482"><td class="memItemLeft" align="right" valign="top">const std::shared_ptr&lt; <a class="el" href="classarmnn_1_1_i_profiler.xhtml">IProfiler</a> &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml#a880db527e7dbf8d0de3fee52ba072482">GetProfiler</a> () const</td></tr>
+<tr class="separator:a880db527e7dbf8d0de3fee52ba072482"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:a58ee539cf95c1e99fe4f54ef6e8bbd05"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml#a58ee539cf95c1e99fe4f54ef6e8bbd05">Destroy</a> (<a class="el" href="classarmnn_1_1_i_optimized_network.xhtml">IOptimizedNetwork</a> *network)</td></tr>
+<tr class="separator:a58ee539cf95c1e99fe4f54ef6e8bbd05"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:a230acad28622c18ab32254f74af569b0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml#a230acad28622c18ab32254f74af569b0">IOptimizedNetwork</a> (std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a> &gt; graph, const <a class="el" href="namespacearmnn.xhtml#a5b6893cda5b69359a4244c06054da18f">ModelOptions</a> &amp;modelOptions)</td></tr>
+<tr class="separator:a230acad28622c18ab32254f74af569b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:a374d52340ec8dc02a819acc20fb5aa92"><td class="memItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_optimized_network_impl.xhtml">OptimizedNetworkImpl</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">pOptimizedNetworkImpl</a></td></tr>
+<tr class="separator:a374d52340ec8dc02a819acc20fb5aa92"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:a848000b2be0cb1853c9f7c4fb4dc719e"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml#a848000b2be0cb1853c9f7c4fb4dc719e">LoadedNetwork</a></td></tr>
+<tr class="separator:a848000b2be0cb1853c9f7c4fb4dc719e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a150601aebab0c979f258bf862b6fd5db"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml#a150601aebab0c979f258bf862b6fd5db">experimental::AsyncNetworkImpl</a></td></tr>
+<tr class="separator:a150601aebab0c979f258bf862b6fd5db"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a21b1820e69a256697d3a5603d656e833"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml#a21b1820e69a256697d3a5603d656e833">experimental::WorkingMemHandle</a></td></tr>
+<tr class="separator:a21b1820e69a256697d3a5603d656e833"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a519b2b784c275693e37a9b6c693342eb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml#a519b2b784c275693e37a9b6c693342eb">GetGraphForTesting</a> (<a class="el" href="classarmnn_1_1_i_optimized_network.xhtml">IOptimizedNetwork</a> *optNetPtr)</td></tr>
+<tr class="separator:a519b2b784c275693e37a9b6c693342eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa25c1acd249228c82a687d713673725a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.xhtml#a5b6893cda5b69359a4244c06054da18f">ModelOptions</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml#aa25c1acd249228c82a687d713673725a">GetModelOptionsForTesting</a> (<a class="el" href="classarmnn_1_1_i_optimized_network.xhtml">IOptimizedNetwork</a> *optNetPtr)</td></tr>
+<tr class="separator:aa25c1acd249228c82a687d713673725a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a22df7404d1196068ad18d0286f9b9425"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml#a22df7404d1196068ad18d0286f9b9425">Optimize</a> (const <a class="el" href="classarmnn_1_1_i_network.xhtml">INetwork</a> &amp;inNetwork, const std::vector&lt; <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &gt; &amp;backendPreferences, const <a class="el" href="classarmnn_1_1_i_device_spec.xhtml">IDeviceSpec</a> &amp;deviceSpec, const <a class="el" href="structarmnn_1_1_optimizer_options.xhtml">OptimizerOptions</a> &amp;options, <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; messages)</td></tr>
+<tr class="memdesc:a22df7404d1196068ad18d0286f9b9425"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an optimized version of the network. <a href="#a22df7404d1196068ad18d0286f9b9425">More...</a><br /></td></tr>
+<tr class="separator:a22df7404d1196068ad18d0286f9b9425"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a397aef2f5784b6e33af07113e46a21e6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml#a397aef2f5784b6e33af07113e46a21e6">Optimize</a> (const <a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a> &amp;inGraph, const std::vector&lt; <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &gt; &amp;backendPreferences, const <a class="el" href="classarmnn_1_1_i_device_spec.xhtml">IDeviceSpec</a> &amp;deviceSpec, const <a class="el" href="structarmnn_1_1_optimizer_options.xhtml">OptimizerOptions</a> &amp;options, <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; messages)</td></tr>
+<tr class="memdesc:a397aef2f5784b6e33af07113e46a21e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an optimized version of the network. <a href="#a397aef2f5784b6e33af07113e46a21e6">More...</a><br /></td></tr>
+<tr class="separator:a397aef2f5784b6e33af07113e46a21e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock">
+<p class="definition">Definition at line <a class="el" href="_i_network_8hpp_source.xhtml#l00769">769</a> of file <a class="el" href="_i_network_8hpp_source.xhtml">INetwork.hpp</a>.</p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a32eecbed1d4cd2602204a2ab3f5f249e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a32eecbed1d4cd2602204a2ab3f5f249e">&#9670;&nbsp;</a></span>IOptimizedNetwork() <span class="overload">[1/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml">IOptimizedNetwork</a> </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_optimized_network.xhtml">IOptimizedNetwork</a> &amp;&#160;</td>
+ <td class="paramname"><em>other</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="namespacearmnn.xhtml#a5b6893cda5b69359a4244c06054da18f">ModelOptions</a> &amp;&#160;</td>
+ <td class="paramname"><em>modelOptions</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Creates a copy of the <a class="el" href="classarmnn_1_1_i_optimized_network.xhtml">IOptimizedNetwork</a>. </p>
+<p>The <a class="el" href="classarmnn_1_1_i_optimized_network.xhtml">IOptimizedNetwork</a> will not be reoptimized, the provided ModelOptions will only be used when creating a <a class="el" href="classarmnn_1_1_loaded_network.xhtml">LoadedNetwork</a>. </p>
+
+<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00462">462</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l01572">armnn::Optimize()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; : <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">pOptimizedNetworkImpl</a>(<span class="keyword">new</span> OptimizedNetworkImpl(*other.pOptimizedNetworkImpl.get(), modelOptions)) {}</div><div class="ttc" id="classarmnn_1_1_i_optimized_network_xhtml_a374d52340ec8dc02a819acc20fb5aa92"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">armnn::IOptimizedNetwork::pOptimizedNetworkImpl</a></div><div class="ttdeci">std::unique_ptr&lt; OptimizedNetworkImpl &gt; pOptimizedNetworkImpl</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00814">INetwork.hpp:814</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="af730a6ec3deb072dc2687089f3f77f9e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af730a6ec3deb072dc2687089f3f77f9e">&#9670;&nbsp;</a></span>IOptimizedNetwork() <span class="overload">[2/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml">IOptimizedNetwork</a> </td>
+ <td>(</td>
+ <td class="paramtype">std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a> &gt;&#160;</td>
+ <td class="paramname"><em>graph</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00465">465</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; : <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">pOptimizedNetworkImpl</a>(<span class="keyword">new</span> OptimizedNetworkImpl(std::move(graph))) {}</div><div class="ttc" id="classarmnn_1_1_i_optimized_network_xhtml_a374d52340ec8dc02a819acc20fb5aa92"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">armnn::IOptimizedNetwork::pOptimizedNetworkImpl</a></div><div class="ttdeci">std::unique_ptr&lt; OptimizedNetworkImpl &gt; pOptimizedNetworkImpl</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00814">INetwork.hpp:814</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a5fd8b75db92fb2a84d12e2092a173716"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5fd8b75db92fb2a84d12e2092a173716">&#9670;&nbsp;</a></span>IOptimizedNetwork() <span class="overload">[3/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml">IOptimizedNetwork</a> </td>
+ <td>(</td>
+ <td class="paramtype">std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_optimized_network_impl.xhtml">OptimizedNetworkImpl</a> &gt;&#160;</td>
+ <td class="paramname"><em>impl</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00468">468</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; : <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">pOptimizedNetworkImpl</a>(std::move(impl)) {}</div><div class="ttc" id="classarmnn_1_1_i_optimized_network_xhtml_a374d52340ec8dc02a819acc20fb5aa92"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">armnn::IOptimizedNetwork::pOptimizedNetworkImpl</a></div><div class="ttdeci">std::unique_ptr&lt; OptimizedNetworkImpl &gt; pOptimizedNetworkImpl</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00814">INetwork.hpp:814</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a437cc59f5247f213adf34e84696f60da"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a437cc59f5247f213adf34e84696f60da">&#9670;&nbsp;</a></span>~IOptimizedNetwork()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">~<a class="el" href="classarmnn_1_1_i_optimized_network.xhtml">IOptimizedNetwork</a> </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">default</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00471">IOptimizedNetwork::IOptimizedNetwork()</a>.</p>
+
+</div>
+</div>
+<a id="a230acad28622c18ab32254f74af569b0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a230acad28622c18ab32254f74af569b0">&#9670;&nbsp;</a></span>IOptimizedNetwork() <span class="overload">[4/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml">IOptimizedNetwork</a> </td>
+ <td>(</td>
+ <td class="paramtype">std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a> &gt;&#160;</td>
+ <td class="paramname"><em>graph</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="namespacearmnn.xhtml#a5b6893cda5b69359a4244c06054da18f">ModelOptions</a> &amp;&#160;</td>
+ <td class="paramname"><em>modelOptions</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00471">471</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
+
+<p class="reference">References <a class="el" href="classarmnn_1_1_i_optimized_network.xhtml#a437cc59f5247f213adf34e84696f60da">IOptimizedNetwork::~IOptimizedNetwork()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; : <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">pOptimizedNetworkImpl</a>(<span class="keyword">new</span> OptimizedNetworkImpl(std::move(graph), modelOptions)) {}</div><div class="ttc" id="classarmnn_1_1_i_optimized_network_xhtml_a374d52340ec8dc02a819acc20fb5aa92"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">armnn::IOptimizedNetwork::pOptimizedNetworkImpl</a></div><div class="ttdeci">std::unique_ptr&lt; OptimizedNetworkImpl &gt; pOptimizedNetworkImpl</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00814">INetwork.hpp:814</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a58ee539cf95c1e99fe4f54ef6e8bbd05"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a58ee539cf95c1e99fe4f54ef6e8bbd05">&#9670;&nbsp;</a></span>Destroy()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void Destroy </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml">IOptimizedNetwork</a> *&#160;</td>
+ <td class="paramname"><em>network</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00476">476</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l01572">armnn::Optimize()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;{</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keyword">delete</span> network;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;}</div></div><!-- fragment -->
+</div>
+</div>
+<a id="a72032c65bf8b8acf09b564b7d80078c5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a72032c65bf8b8acf09b564b7d80078c5">&#9670;&nbsp;</a></span>ExecuteStrategy()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ExecuteStrategy </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_i_strategy.xhtml">IStrategy</a> &amp;&#160;</td>
+ <td class="paramname"><em>strategy</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l02731">2731</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l02732"></a><span class="lineno"> 2732</span>&#160;{</div><div class="line"><a name="l02733"></a><span class="lineno"> 2733</span>&#160; <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">pOptimizedNetworkImpl</a>-&gt;ExecuteStrategy(strategy);</div><div class="line"><a name="l02734"></a><span class="lineno"> 2734</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_i_optimized_network_xhtml_a374d52340ec8dc02a819acc20fb5aa92"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">armnn::IOptimizedNetwork::pOptimizedNetworkImpl</a></div><div class="ttdeci">std::unique_ptr&lt; OptimizedNetworkImpl &gt; pOptimizedNetworkImpl</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00814">INetwork.hpp:814</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aa1b6106cb25d38e369fd647f4324cebe"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa1b6106cb25d38e369fd647f4324cebe">&#9670;&nbsp;</a></span>GetGuid()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm::pipe::ProfilingGuid GetGuid </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00496">496</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
+
+<p class="reference">References <a class="el" href="_i_network_8hpp_source.xhtml#l00814">IOptimizedNetwork::pOptimizedNetworkImpl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;{</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">pOptimizedNetworkImpl</a>-&gt;GetGuid();</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_i_optimized_network_xhtml_a374d52340ec8dc02a819acc20fb5aa92"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">armnn::IOptimizedNetwork::pOptimizedNetworkImpl</a></div><div class="ttdeci">std::unique_ptr&lt; OptimizedNetworkImpl &gt; pOptimizedNetworkImpl</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00814">INetwork.hpp:814</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a8d8179a4a0703602a5d7dbb6e92eaf69"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8d8179a4a0703602a5d7dbb6e92eaf69">&#9670;&nbsp;</a></span>GetNumInputs()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t GetNumInputs </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00501">501</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
+
+<p class="reference">References <a class="el" href="_i_network_8hpp_source.xhtml#l00814">IOptimizedNetwork::pOptimizedNetworkImpl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;{</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">pOptimizedNetworkImpl</a>-&gt;GetNumInputs();</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_i_optimized_network_xhtml_a374d52340ec8dc02a819acc20fb5aa92"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">armnn::IOptimizedNetwork::pOptimizedNetworkImpl</a></div><div class="ttdeci">std::unique_ptr&lt; OptimizedNetworkImpl &gt; pOptimizedNetworkImpl</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00814">INetwork.hpp:814</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a604654b453ec291a503d62a0beb849d3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a604654b453ec291a503d62a0beb849d3">&#9670;&nbsp;</a></span>GetNumOutputs()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t GetNumOutputs </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00506">506</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
+
+<p class="reference">References <a class="el" href="_i_network_8hpp_source.xhtml#l00814">IOptimizedNetwork::pOptimizedNetworkImpl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;{</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">pOptimizedNetworkImpl</a>-&gt;GetNumOutputs();</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_i_optimized_network_xhtml_a374d52340ec8dc02a819acc20fb5aa92"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">armnn::IOptimizedNetwork::pOptimizedNetworkImpl</a></div><div class="ttdeci">std::unique_ptr&lt; OptimizedNetworkImpl &gt; pOptimizedNetworkImpl</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00814">INetwork.hpp:814</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a880db527e7dbf8d0de3fee52ba072482"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a880db527e7dbf8d0de3fee52ba072482">&#9670;&nbsp;</a></span>GetProfiler()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const std::shared_ptr&lt; <a class="el" href="classarmnn_1_1_i_profiler.xhtml">IProfiler</a> &gt; &amp; GetProfiler </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00491">491</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
+
+<p class="reference">References <a class="el" href="_i_network_8hpp_source.xhtml#l00814">IOptimizedNetwork::pOptimizedNetworkImpl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;{</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">pOptimizedNetworkImpl</a>-&gt;GetGraph().GetProfiler();</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_i_optimized_network_xhtml_a374d52340ec8dc02a819acc20fb5aa92"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">armnn::IOptimizedNetwork::pOptimizedNetworkImpl</a></div><div class="ttdeci">std::unique_ptr&lt; OptimizedNetworkImpl &gt; pOptimizedNetworkImpl</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00814">INetwork.hpp:814</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aff3fde909d22ed157046682e70129259"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aff3fde909d22ed157046682e70129259">&#9670;&nbsp;</a></span>PrintGraph()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> PrintGraph </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00481">481</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
+
+<p class="reference">References <a class="el" href="_i_network_8hpp_source.xhtml#l00814">IOptimizedNetwork::pOptimizedNetworkImpl</a>.</p>
+<div class="fragment"><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;{</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">pOptimizedNetworkImpl</a>-&gt;PrintGraph();</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_i_optimized_network_xhtml_a374d52340ec8dc02a819acc20fb5aa92"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">armnn::IOptimizedNetwork::pOptimizedNetworkImpl</a></div><div class="ttdeci">std::unique_ptr&lt; OptimizedNetworkImpl &gt; pOptimizedNetworkImpl</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00814">INetwork.hpp:814</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a26794f014974a6f963a8925de07bffeb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a26794f014974a6f963a8925de07bffeb">&#9670;&nbsp;</a></span>SerializeToDot()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> SerializeToDot </td>
+ <td>(</td>
+ <td class="paramtype">std::ostream &amp;&#160;</td>
+ <td class="paramname"><em>stream</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00486">486</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
+
+<p class="reference">References <a class="el" href="_i_network_8hpp_source.xhtml#l00814">IOptimizedNetwork::pOptimizedNetworkImpl</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_canonical_utils_8cpp_source.xhtml#l00387">armnn_driver::ExportNetworkGraphToDotFile()</a>.</p>
+<div class="fragment"><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;{</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">pOptimizedNetworkImpl</a>-&gt;SerializeToDot(stream);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_i_optimized_network_xhtml_a374d52340ec8dc02a819acc20fb5aa92"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">armnn::IOptimizedNetwork::pOptimizedNetworkImpl</a></div><div class="ttdeci">std::unique_ptr&lt; OptimizedNetworkImpl &gt; pOptimizedNetworkImpl</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00814">INetwork.hpp:814</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<h2 class="groupheader">Friends And Related Function Documentation</h2>
+<a id="a150601aebab0c979f258bf862b6fd5db"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a150601aebab0c979f258bf862b6fd5db">&#9670;&nbsp;</a></span>experimental::AsyncNetworkImpl</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">friend class experimental::AsyncNetworkImpl</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_i_network_8hpp_source.xhtml#l00796">796</a> of file <a class="el" href="_i_network_8hpp_source.xhtml">INetwork.hpp</a>.</p>
+
+</div>
+</div>
+<a id="a21b1820e69a256697d3a5603d656e833"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a21b1820e69a256697d3a5603d656e833">&#9670;&nbsp;</a></span>experimental::WorkingMemHandle</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">friend class <a class="el" href="classarmnn_1_1experimental_1_1_working_mem_handle.xhtml">experimental::WorkingMemHandle</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_i_network_8hpp_source.xhtml#l00797">797</a> of file <a class="el" href="_i_network_8hpp_source.xhtml">INetwork.hpp</a>.</p>
+
+</div>
+</div>
+<a id="a519b2b784c275693e37a9b6c693342eb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a519b2b784c275693e37a9b6c693342eb">&#9670;&nbsp;</a></span>GetGraphForTesting</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a>&amp; GetGraphForTesting </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml">IOptimizedNetwork</a> *&#160;</td>
+ <td class="paramname"><em>optNetPtr</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_test_utils_8cpp_source.xhtml#l00049">49</a> of file <a class="el" href="_test_utils_8cpp_source.xhtml">TestUtils.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;{</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">return</span> optNet-&gt;pOptimizedNetworkImpl-&gt;GetGraph();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div></div><!-- fragment -->
+</div>
+</div>
+<a id="aa25c1acd249228c82a687d713673725a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa25c1acd249228c82a687d713673725a">&#9670;&nbsp;</a></span>GetModelOptionsForTesting</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearmnn.xhtml#a5b6893cda5b69359a4244c06054da18f">ModelOptions</a>&amp; GetModelOptionsForTesting </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml">IOptimizedNetwork</a> *&#160;</td>
+ <td class="paramname"><em>optNetPtr</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_test_utils_8cpp_source.xhtml#l00054">54</a> of file <a class="el" href="_test_utils_8cpp_source.xhtml">TestUtils.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;{</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">return</span> optNet-&gt;pOptimizedNetworkImpl-&gt;GetModelOptions();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;}</div></div><!-- fragment -->
+</div>
+</div>
+<a id="a848000b2be0cb1853c9f7c4fb4dc719e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a848000b2be0cb1853c9f7c4fb4dc719e">&#9670;&nbsp;</a></span>LoadedNetwork</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">friend class <a class="el" href="classarmnn_1_1_loaded_network.xhtml">LoadedNetwork</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_i_network_8hpp_source.xhtml#l00794">794</a> of file <a class="el" href="_i_network_8hpp_source.xhtml">INetwork.hpp</a>.</p>
+
+</div>
+</div>
+<a id="a22df7404d1196068ad18d0286f9b9425"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a22df7404d1196068ad18d0286f9b9425">&#9670;&nbsp;</a></span>Optimize <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a> Optimize </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_network.xhtml">INetwork</a> &amp;&#160;</td>
+ <td class="paramname"><em>inNetwork</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &gt; &amp;&#160;</td>
+ <td class="paramname"><em>backendPreferences</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_device_spec.xhtml">IDeviceSpec</a> &amp;&#160;</td>
+ <td class="paramname"><em>deviceSpec</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_optimizer_options.xhtml">OptimizerOptions</a> &amp;&#160;</td>
+ <td class="paramname"><em>options</em> = <code><a class="el" href="structarmnn_1_1_optimizer_options.xhtml">OptimizerOptions</a>()</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
+ <td class="paramname"><em>messages</em> = <code><a class="el" href="structarmnn_1_1_empty_optional.xhtml">EmptyOptional</a>()</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Create an optimized version of the network. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">network</td><td><a class="el" href="classarmnn_1_1_i_network.xhtml" title="Main network class which provides the interface for building up a neural network. ...">INetwork</a> description of the network to be optimized. </td></tr>
+ <tr><td class="paramname">backendPreferences</td><td>The choice of the backend ordered by user preferences. </td></tr>
+ <tr><td class="paramname">deviceSpec</td><td><a class="el" href="classarmnn_1_1_device_spec.xhtml">DeviceSpec</a> object as queried from the runtime. See <a class="el" href="classarmnn_1_1_i_runtime.xhtml#a25db7b8e6fc90f8418439ccd33aaf184">IRuntime::GetDeviceSpec()</a> </td></tr>
+ <tr><td class="paramname">messages</td><td>If there are failures or warnings a string describing same will be added to the vector </td></tr>
+ <tr><td class="paramname">options</td><td><a class="el" href="structarmnn_1_1_optimizer_options.xhtml" title="ArmNN performs an optimization on each model/network before it gets loaded for execution. ">OptimizerOptions</a> object with optimizer configuration options </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>An IOptimizedNetworkPtr interface to the optimized network, throws an exception derived from <a class="el" href="classarmnn_1_1_exception.xhtml" title="Base class for all ArmNN exceptions so that users can filter to just those. ">armnn::Exception</a> if process fails. </dd></dl>
+
+<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l01773">1773</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l01773">armnn::Optimize()</a>.</p>
+<div class="fragment"><div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160;{</div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a22df7404d1196068ad18d0286f9b9425">Optimize</a>(inNetwork.pNetworkImpl-&gt;GetGraph(),</div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160; backendPreferences,</div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160; deviceSpec,</div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160; options,</div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160; messages);</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_i_optimized_network_xhtml_a22df7404d1196068ad18d0286f9b9425"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.xhtml#a22df7404d1196068ad18d0286f9b9425">armnn::IOptimizedNetwork::Optimize</a></div><div class="ttdeci">friend IOptimizedNetworkPtr Optimize(const INetwork &amp;inNetwork, const std::vector&lt; BackendId &gt; &amp;backendPreferences, const IDeviceSpec &amp;deviceSpec, const OptimizerOptions &amp;options, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; messages)</div><div class="ttdoc">Create an optimized version of the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01773">Network.cpp:1773</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a397aef2f5784b6e33af07113e46a21e6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a397aef2f5784b6e33af07113e46a21e6">&#9670;&nbsp;</a></span>Optimize <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a> Optimize </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a> &amp;&#160;</td>
+ <td class="paramname"><em>inGraph</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &gt; &amp;&#160;</td>
+ <td class="paramname"><em>backendPreferences</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_device_spec.xhtml">IDeviceSpec</a> &amp;&#160;</td>
+ <td class="paramname"><em>deviceSpec</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_optimizer_options.xhtml">OptimizerOptions</a> &amp;&#160;</td>
+ <td class="paramname"><em>options</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
+ <td class="paramname"><em>messages</em> = <code><a class="el" href="structarmnn_1_1_empty_optional.xhtml">EmptyOptional</a>()</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Create an optimized version of the network. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">inGraph</td><td><a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a> to be optimized. </td></tr>
+ <tr><td class="paramname">backendPreferences</td><td>The choice of the backend ordered by user preferences. </td></tr>
+ <tr><td class="paramname">deviceSpec</td><td><a class="el" href="classarmnn_1_1_device_spec.xhtml">DeviceSpec</a> object as queried from the runtime. See <a class="el" href="classarmnn_1_1_i_runtime.xhtml#a25db7b8e6fc90f8418439ccd33aaf184">IRuntime::GetDeviceSpec()</a> </td></tr>
+ <tr><td class="paramname">messages</td><td>If there are failures or warnings a string describing same will be added to the vector </td></tr>
+ <tr><td class="paramname">options</td><td><a class="el" href="structarmnn_1_1_optimizer_options.xhtml" title="ArmNN performs an optimization on each model/network before it gets loaded for execution. ">OptimizerOptions</a> object with optimizer configuration options </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>An IOptimizedNetworkPtr interface to the optimized network, throws an exception derived from <a class="el" href="classarmnn_1_1_exception.xhtml" title="Base class for all ArmNN exceptions so that users can filter to just those. ">armnn::Exception</a> if process fails. </dd></dl>
+
+<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l01572">1572</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160;{</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160; <a class="code" href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407aad42f6697b035b7580e4fef93be20b4d">debug</a>) &lt;&lt; options.ToString();</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160;</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160; <span class="comment">// Enable profiling</span></div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160; <span class="keyword">auto</span> profiler = inGraph.GetProfiler();</div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160; <a class="code" href="classarmnn_1_1_profiler_manager.xhtml#a93857080c2523bf3395e7aa7e6024d5c">ProfilerManager::GetInstance</a>().<a class="code" href="classarmnn_1_1_profiler_manager.xhtml#a7b1e3e5bf386004541be2b5b22443208">RegisterProfiler</a>(profiler.get());</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160; profiler-&gt;EnableProfiling(options.m_ProfilingEnabled);</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160;</div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160; <a class="code" href="_profiling_8hpp.xhtml#a5ccc65e2c464ac05ce311fdae7ede03a">ARMNN_SCOPED_PROFILING_EVENT</a>(<a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Compute::Undefined</a>, <span class="stringliteral">&quot;Optimizer&quot;</span>);</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; <span class="keywordflow">if</span> (backendPreferences.empty())</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; {</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Invoked Optimize with no backends specified&quot;</span>);</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160; }</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160;</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; <span class="keywordflow">if</span> (options.m_ReduceFp32ToBf16)</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; {</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;BFloat16 optimization is currently ignored. In order to use Bf16 optimization &quot;</span></div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; <span class="stringliteral">&quot;Please use the FastMathEnabled backend option for CpuAcc or GpuAcc.&quot;</span>);</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; }</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160;</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160; <span class="keywordflow">if</span> (options.m_ReduceFp32ToFp16 &amp;&amp; options.m_ReduceFp32ToBf16)</div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160; {</div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;BFloat16 and Float16 optimization cannot be enabled at the same time.&quot;</span>);</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160; }</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160;</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160; <span class="comment">// Ensure TensorInfo is set on all output slots of ConstantLayers in the graph</span></div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; inGraph.VerifyConstantLayerSetTensorInfo();</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160;</div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160; std::unique_ptr&lt;Graph&gt; graph = std::make_unique&lt;Graph&gt;(inGraph);</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160;</div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160; <span class="comment">// We need to pass on the information about whether import and export is enabled to the LoadNetwork phase.</span></div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; <span class="comment">// The mechanism to do that is to add model options to the optimized network.</span></div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; <a class="code" href="structarmnn_1_1_backend_options.xhtml">armnn::BackendOptions</a> importExport(<span class="stringliteral">&quot;Global&quot;</span>,</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; {{<span class="stringliteral">&quot;ImportEnabled&quot;</span>, options.m_ImportEnabled},</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160; {<span class="stringliteral">&quot;ExportEnabled&quot;</span>, options.m_ExportEnabled}});</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160; <a class="code" href="namespacearmnn.xhtml#a5b6893cda5b69359a4244c06054da18f">ModelOptions</a> optimizedOptions(options.m_ModelOptions);</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; optimizedOptions.push_back(importExport);</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160;</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160; <span class="keyword">auto</span> optNet = <a class="code" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a>(<span class="keyword">new</span> <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a32eecbed1d4cd2602204a2ab3f5f249e">IOptimizedNetwork</a>(std::move(graph), optimizedOptions),</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; &amp;<a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a58ee539cf95c1e99fe4f54ef6e8bbd05">IOptimizedNetwork::Destroy</a>);</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160;</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160; <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a32eecbed1d4cd2602204a2ab3f5f249e">IOptimizedNetwork</a>* optNetObjPtr = optNet.get();</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160;</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160; <span class="comment">// Get the optimized graph</span></div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160; Graph&amp; optGraph = optNetObjPtr-&gt;pOptimizedNetworkImpl-&gt;GetGraph();</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160;</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; <span class="keywordflow">if</span>(options.m_shapeInferenceMethod == <a class="code" href="namespacearmnn.xhtml#adf57837d00e8352d9b5cc5ab1fb5fee9a5dd7c525cb1500a2181fd4cc079d7acb">ShapeInferenceMethod::InferAndValidate</a>)</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; {</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160; <span class="comment">// Infer the tensor infos for all output slots. Throws an exception on failure</span></div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; optGraph.InferTensorInfos();</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160; }</div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160;</div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160; <span class="comment">// Perform AddBroadcastReshapeLayer optimisation</span></div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; <span class="keyword">using namespace </span>optimizations;</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; <a class="code" href="classarmnn_1_1_optimizer.xhtml#a1f48ba622b76ea04d15c9b62f642bf08">Optimizer::Pass</a>(optGraph, <a class="code" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.xhtml#a4fc55afb4885278ad1510b2c4307af76">AddBroadcastReshapeLayer</a>()));</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160;</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160; <span class="keywordflow">if</span>(options.m_shapeInferenceMethod == <a class="code" href="namespacearmnn.xhtml#adf57837d00e8352d9b5cc5ab1fb5fee9af6486a22a9bb11959bfae60a3e5174b1">ShapeInferenceMethod::ValidateOnly</a>)</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160; {</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160; <span class="comment">// Validate the tensor infos for all output slots. Throws an exception on failure</span></div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160; optGraph.InferTensorInfos();</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160; }</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160;</div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160;</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; <span class="comment">// Group Constant Layer optimizations together where possible.</span></div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; <span class="comment">// This is important as:</span></div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160; <span class="comment">// FusePermuteIntoConstantLayer must happen before FoldPadIntoDepthwiseConvolution2d and</span></div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160; <span class="comment">// FuseBatchNormIntoDepthwiseConvolution2D.</span></div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160; <span class="comment">// ConvertConstDequantisationLayersToConstLayers must happen before FoldPadIntoConvolution2d</span></div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160; <a class="code" href="classarmnn_1_1_optimizer.xhtml#a1f48ba622b76ea04d15c9b62f642bf08">Optimizer::Pass</a>(optGraph, <a class="code" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.xhtml#ad668074369437a111649f51296ff8959">FusePermuteIntoConstLayer</a>(),</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#a4dfbdc8cc90b67e74eccd146d977ff66">ConvertConstDequantisationLayersToConstLayers</a>()));</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; <span class="comment">// Perform optimisation passes</span></div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; <a class="code" href="classarmnn_1_1_optimizer.xhtml#a1f48ba622b76ea04d15c9b62f642bf08">Optimizer::Pass</a>(optGraph, <a class="code" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.xhtml#a64ddffb38fbe5b78ec92b753cd4bd0ba">SquashEqualPermuteSiblings</a>(),</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#aba7b0ca6192b8b58ecd517a82b4f378e">SquashEqualTransposeSiblings</a>(),</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#a29f8d97b2d74f99c88298881cd1d825b">SquashEqualReshapeSiblings</a>(),</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#aa31127c77d2117f78d43ca2958dcae19">OptimizeInversePermutes</a>(),</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#a2f9d1a13be2ac1c4213729a0ef181fc0">OptimizeInverseTransposes</a>(),</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#aafc70d5af99400ff5ea7991825658b2f">MovePermuteUp</a>(),</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#a5918588fa316cf4c23f1cf02c81ee706">MoveTransposeUp</a>(),</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#ae0b1382e3af141896a46531c50e8863f">PermuteAsReshape</a>(),</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#ad1aaeee71293f34d9f65d2dd2792830d">TransposeAsReshape</a>(),</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#a8341ca3512ebafb19d60eba44d40d9e4">OptimizeConsecutiveReshapes</a>(),</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#a8b394ff60ed829a91f07deac476f3db2">FoldPadIntoConvolution2d</a>(),</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#a227e9ab5e488aa90ba462790ba0e5aec">FoldPadIntoDepthwiseConvolution2d</a>(),</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#a279d0a7c56966cea334303d48a874964">FoldPadIntoPooling2d</a>(),</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#a17d1279f5f8e3b92c328b1ed3b6fd549">PermuteAndBatchToSpaceAsDepthToSpace</a>(),</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#a98f54d4391347d517c7a7869e7707203">TransposeAndBatchToSpaceAsDepthToSpace</a>(),</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#aa52c06792e18dc13030e82476f706f9e">FuseBatchNormIntoConvolution2DFloat32</a>(),</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#a8a81178ddcebb93ec0c35b6e6284273c">FuseBatchNormIntoConvolution2DFloat16</a>(),</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#a56e54a818166a2f4b2c1a7f76a3629ff">FuseBatchNormIntoDepthwiseConvolution2DFloat32</a>(),</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#ab40bb51feca46649eb9d00522bfe51f6">FuseBatchNormIntoDepthwiseConvolution2DFloat16</a>()));</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160;</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; <span class="comment">// If Fp32 to Fp16 optimization is set convert Fp32 network to Fp16</span></div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; <span class="keywordflow">if</span> (options.m_ReduceFp32ToFp16)</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; {</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160; <a class="code" href="_profiling_8hpp.xhtml#a5ccc65e2c464ac05ce311fdae7ede03a">ARMNN_SCOPED_PROFILING_EVENT</a>(<a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Compute::Undefined</a>, <span class="stringliteral">&quot;Optimizer_ReduceFp32ToFp16&quot;</span>);</div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160; <a class="code" href="classarmnn_1_1_optimizer.xhtml#a1f48ba622b76ea04d15c9b62f642bf08">Optimizer::Pass</a>(optGraph, <a class="code" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.xhtml#a86d19da62b6cfed3928f6fe7026f22fa">Fp32NetworkToFp16Converter</a>()));</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160; <a class="code" href="classarmnn_1_1_optimizer.xhtml#a1f48ba622b76ea04d15c9b62f642bf08">Optimizer::Pass</a>(optGraph, <a class="code" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.xhtml#a226cef3d775179e25ee35d231f4e8fae">ConvertConstantsFloatToHalf</a>()));</div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160; }</div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160;</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160; <span class="comment">// Initialize backend settings</span></div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160; BackendSettings backendSettings(backendPreferences, deviceSpec);</div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160; <span class="keywordflow">if</span> (backendSettings.GetAvailablePreferredBackends().empty())</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160; {</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160; std::stringstream failureMsg;</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; failureMsg &lt;&lt; <span class="stringliteral">&quot;None of the preferred backends &quot;</span> &lt;&lt; backendPreferences</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160; &lt;&lt; <span class="stringliteral">&quot; are supported. Current platform provides &quot;</span> &lt;&lt; backendSettings.m_SupportedBackends;</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160; <a class="code" href="namespacearmnn.xhtml#a7658f93d899c8646515a29370e6aa994">ReportError</a>(failureMsg.str(), messages);</div><div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(failureMsg.str());</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160; }</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160;</div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160; <span class="comment">// Create a map to temporarily hold initialized backend objects</span></div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160; TensorHandleFactoryRegistry tensorHandleFactoryRegistry;</div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160; <a class="code" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> backends = <a class="code" href="namespacearmnn.xhtml#a1ec6b4c20ed294a96cf94c33c24caaf5">CreateSupportedBackends</a>(tensorHandleFactoryRegistry, backendSettings);</div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160;</div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160; <span class="comment">// Assign an available backend to each layer</span></div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160; <a class="code" href="classarmnn_1_1_graph.xhtml#acc25db0641c1c22faf95af3bb49080c9">Graph::Iterator</a> firstLayer = optGraph.begin();</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160; <a class="code" href="classarmnn_1_1_graph.xhtml#acc25db0641c1c22faf95af3bb49080c9">Graph::Iterator</a> lastLayer = optGraph.end();</div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160; OptimizationResult assignBackendsResult = <a class="code" href="namespacearmnn.xhtml#a224df72b3d7a3bba8609bc167286e3f7">AssignBackends</a>(optNetObjPtr-&gt;pOptimizedNetworkImpl.get(),</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160; backendSettings,</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160; firstLayer,</div><div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160; lastLayer,</div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160; messages);</div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160; <span class="keywordflow">if</span> (assignBackendsResult.m_Error)</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160; {</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160; <span class="comment">// Failed to assign a backend to each layer</span></div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Failed to assign a backend to each layer&quot;</span>);</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160; }</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160;</div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160; <a class="code" href="classarmnn_1_1_optimizer.xhtml#a1f48ba622b76ea04d15c9b62f642bf08">Optimizer::Pass</a>(optGraph, <a class="code" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.xhtml#a1a9d718b48612b5817a3c369f9fd71ee">OptimizeInverseConversionsFp16</a>(),</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#ae1509d340bc981b11101c3316ee8afd6">OptimizeInverseConversionsFp32</a>()));</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160;</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160; <span class="comment">// Apply the backend-specific optimizations</span></div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160; OptimizationResult backendOptimizationResult = <a class="code" href="namespacearmnn.xhtml#a9f31d956861d8277fa5f8fb877dbbb6c">ApplyBackendOptimizations</a>(optNetObjPtr-&gt;pOptimizedNetworkImpl.get(),</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160; backendSettings,</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160; backends,</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; options.m_ModelOptions,</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; messages);</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; <span class="keywordflow">if</span> (backendOptimizationResult.m_Error)</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; {</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; <span class="comment">// Failed to apply the backend-specific optimizations</span></div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Failed to apply the backend-specific optimizations&quot;</span>);</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160; }</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160;</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160; <span class="comment">// Convert constants</span></div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160; {</div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160; <a class="code" href="_profiling_8hpp.xhtml#a5ccc65e2c464ac05ce311fdae7ede03a">ARMNN_SCOPED_PROFILING_EVENT</a>(<a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Compute::Undefined</a>, <span class="stringliteral">&quot;Optimizer_ConvertConstants&quot;</span>);</div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160; <a class="code" href="classarmnn_1_1_optimizer.xhtml#a1f48ba622b76ea04d15c9b62f642bf08">Optimizer::Pass</a>(optGraph, <a class="code" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.xhtml#a226cef3d775179e25ee35d231f4e8fae">ConvertConstantsFloatToHalf</a>()));</div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; <a class="code" href="classarmnn_1_1_optimizer.xhtml#a1f48ba622b76ea04d15c9b62f642bf08">Optimizer::Pass</a>(optGraph, <a class="code" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.xhtml#a06cac66872538895dd6b59cdf39173d2">ConvertConstantsHalfToFloat</a>()));</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; }</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160;</div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160; <span class="comment">// This must occur after all topological changes to the graph and any redirection of variables</span></div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; <span class="comment">// If the debug flag is set, then insert a DebugLayer after each layer</span></div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; <span class="comment">// Doing this after applying the backend optimizations as they might have changed some layers</span></div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; <span class="keywordflow">if</span> (options.m_Debug &amp;&amp; !options.m_DebugToFile)</div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160; {</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; <a class="code" href="classarmnn_1_1_optimizer.xhtml#a1f48ba622b76ea04d15c9b62f642bf08">Optimizer::Pass</a>(optGraph, <a class="code" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.xhtml#aa76c76565125ad77092403176d74fd85">InsertDebugLayer</a>()));</div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; }</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (options.m_DebugToFile)</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160; {</div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160; <span class="comment">// Setup the output file path</span></div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160; <span class="keywordflow">try</span></div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160; {</div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160; <span class="keyword">auto</span> result = <a class="code" href="namespacearmnn_utils_1_1_filesystem.xhtml#a0477efb2c6f5b41fbfe937fef6db312d">armnnUtils::Filesystem::CreateDirectory</a>(<span class="stringliteral">&quot;/ArmNNIntermediateLayerOutputs&quot;</span>);</div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160; <a class="code" href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>) &lt;&lt; <span class="stringliteral">&quot;Intermediate tensors will be written to: &quot;</span> &lt;&lt; result;</div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160; <a class="code" href="classarmnn_1_1_optimizer.xhtml#a1f48ba622b76ea04d15c9b62f642bf08">Optimizer::Pass</a>(optGraph, <a class="code" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.xhtml#a9c0a3a9a388a01bc21e20a16e70055f0">InsertDebugToFileLayer</a>()));</div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160; }</div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> <a class="code" href="classarmnn_1_1_runtime_exception.xhtml">armnn::RuntimeException</a>&amp; e)</div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160; {</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160; <span class="comment">// If we cannot create the output directory then we&#39;ll issue a warning and continue.</span></div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160; <a class="code" href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">warning</a>) &lt;&lt; <span class="stringliteral">&quot;Unable to print intermediate layer outputs : &quot;</span> &lt;&lt; e.<a class="code" href="classarmnn_1_1_exception.xhtml#abf843cbb29dec939d0731e491bab6f70">what</a>();</div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160; }</div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160; }</div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160;</div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160; <span class="comment">// Calculate the compatibility strategies for tensor handles</span></div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160; OptimizationResult strategyResult = <a class="code" href="namespacearmnn.xhtml#abdde0870cf702c8284c9693c68093fd3">SelectTensorHandleStrategy</a>(optGraph,</div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160; backends,</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; tensorHandleFactoryRegistry,</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160; options.m_ImportEnabled,</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160; options.m_ExportEnabled,</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160; messages);</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160;</div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160; <span class="keywordflow">if</span> (strategyResult.m_Error)</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160; {</div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160; <span class="comment">// Failed to apply the backend-specific optimizations</span></div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a>(<span class="keyword">nullptr</span>, &amp;<a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a58ee539cf95c1e99fe4f54ef6e8bbd05">IOptimizedNetwork::Destroy</a>);</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160; }</div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160;</div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160; <span class="comment">// Based on the tensor handle strategy determined above, insert copy layers where required.</span></div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160; {</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160; <a class="code" href="_profiling_8hpp.xhtml#a5ccc65e2c464ac05ce311fdae7ede03a">ARMNN_SCOPED_PROFILING_EVENT</a>(<a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Compute::Undefined</a>, <span class="stringliteral">&quot;Optimizer_AddCompatibilityLayers&quot;</span>);</div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160; optGraph.AddCompatibilityLayers(backends, tensorHandleFactoryRegistry);</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160; }</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160;</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; <span class="keywordflow">return</span> optNet;</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407aad42f6697b035b7580e4fef93be20b4d"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407aad42f6697b035b7580e4fef93be20b4d">armnn::BoostLogSeverityMapping::debug</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a64ddffb38fbe5b78ec92b753cd4bd0ba"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a64ddffb38fbe5b78ec92b753cd4bd0ba">armnn::optimizations::SquashEqualPermuteSiblings</a></div><div class="ttdeci">OptimizeForConnection&lt; Layer, PermuteLayer, SquashEqualSiblingsImpl&lt; PermuteLayer &gt; &gt; SquashEqualPermuteSiblings</div><div class="ttdef"><b>Definition:</b> <a href="_squash_equal_siblings_8hpp_source.xhtml#l00067">SquashEqualSiblings.hpp:67</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a7658f93d899c8646515a29370e6aa994"><div class="ttname"><a href="namespacearmnn.xhtml#a7658f93d899c8646515a29370e6aa994">armnn::ReportError</a></div><div class="ttdeci">void ReportError(const std::string &amp;errorMessage, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errorMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00532">Network.cpp:532</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a224df72b3d7a3bba8609bc167286e3f7"><div class="ttname"><a href="namespacearmnn.xhtml#a224df72b3d7a3bba8609bc167286e3f7">armnn::AssignBackends</a></div><div class="ttdeci">OptimizationResult AssignBackends(OptimizedNetworkImpl *optNetObjPtr, BackendSettings &amp;backendSettings, Graph::Iterator &amp;firstLayer, Graph::Iterator &amp;lastLayer, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00898">Network.cpp:898</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_aa31127c77d2117f78d43ca2958dcae19"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#aa31127c77d2117f78d43ca2958dcae19">armnn::optimizations::OptimizeInversePermutes</a></div><div class="ttdeci">OptimizeForConnection&lt; PermuteLayer, PermuteLayer, OptimizeInversePermutesImpl&lt; PermuteLayer &gt; &gt; OptimizeInversePermutes</div><div class="ttdef"><b>Definition:</b> <a href="_optimize_inverse_permutes_8hpp_source.xhtml#l00043">OptimizeInversePermutes.hpp:43</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a8b394ff60ed829a91f07deac476f3db2"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a8b394ff60ed829a91f07deac476f3db2">armnn::optimizations::FoldPadIntoConvolution2d</a></div><div class="ttdeci">OptimizeForExclusiveConnection&lt; PadLayer, Convolution2dLayer, pad_fold::FoldPadIntoConvolution2dImpl &gt; FoldPadIntoConvolution2d</div><div class="ttdef"><b>Definition:</b> <a href="_fold_pad_into_layer2d_8hpp_source.xhtml#l00254">FoldPadIntoLayer2d.hpp:254</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_aa7427025a851113a492de0b68b23d22a"><div class="ttname"><a href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">armnn::MakeOptimizations</a></div><div class="ttdeci">Optimizer::Optimizations MakeOptimizations(Args &amp;&amp;... args)</div><div class="ttdef"><b>Definition:</b> <a href="_optimizer_8hpp_source.xhtml#l00043">Optimizer.hpp:43</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a2f9d1a13be2ac1c4213729a0ef181fc0"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a2f9d1a13be2ac1c4213729a0ef181fc0">armnn::optimizations::OptimizeInverseTransposes</a></div><div class="ttdeci">OptimizeForConnection&lt; TransposeLayer, TransposeLayer, OptimizeInversePermutesImpl&lt; TransposeLayer &gt; &gt; OptimizeInverseTransposes</div><div class="ttdef"><b>Definition:</b> <a href="_optimize_inverse_permutes_8hpp_source.xhtml#l00045">OptimizeInversePermutes.hpp:45</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a227e9ab5e488aa90ba462790ba0e5aec"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a227e9ab5e488aa90ba462790ba0e5aec">armnn::optimizations::FoldPadIntoDepthwiseConvolution2d</a></div><div class="ttdeci">OptimizeForExclusiveConnection&lt; PadLayer, DepthwiseConvolution2dLayer, pad_fold::FoldPadIntoDepthwiseConvolution2dImpl &gt; FoldPadIntoDepthwiseConvolution2d</div><div class="ttdef"><b>Definition:</b> <a href="_fold_pad_into_layer2d_8hpp_source.xhtml#l00258">FoldPadIntoLayer2d.hpp:258</a></div></div>
+<div class="ttc" id="classarmnn_1_1_profiler_manager_xhtml_a93857080c2523bf3395e7aa7e6024d5c"><div class="ttname"><a href="classarmnn_1_1_profiler_manager.xhtml#a93857080c2523bf3395e7aa7e6024d5c">armnn::ProfilerManager::GetInstance</a></div><div class="ttdeci">static ProfilerManager &amp; GetInstance()</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_8cpp_source.xhtml#l00593">Profiling.cpp:593</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a98f54d4391347d517c7a7869e7707203"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a98f54d4391347d517c7a7869e7707203">armnn::optimizations::TransposeAndBatchToSpaceAsDepthToSpace</a></div><div class="ttdeci">OptimizeForConnection&lt; TransposeLayer, BatchToSpaceNdLayer, PermuteAndBatchToSpaceAsDepthToSpaceImpl&lt; TransposeLayer &gt; &gt; TransposeAndBatchToSpaceAsDepthToSpace</div><div class="ttdef"><b>Definition:</b> <a href="_permute_and_batch_to_space_as_depth_to_space_8hpp_source.xhtml#l00104">PermuteAndBatchToSpaceAsDepthToSpace.hpp:104</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a56e54a818166a2f4b2c1a7f76a3629ff"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a56e54a818166a2f4b2c1a7f76a3629ff">armnn::optimizations::FuseBatchNormIntoDepthwiseConvolution2DFloat32</a></div><div class="ttdeci">OptimizeForExclusiveConnection&lt; DepthwiseConvolution2dLayer, BatchNormalizationLayer, FuseBatchNorm&lt; DepthwiseConvolution2dLayer, armnn::DataType::Float32 &gt; &gt; FuseBatchNormIntoDepthwiseConvolution2DFloat32</div><div class="ttdef"><b>Definition:</b> <a href="_fuse_batch_norm_8hpp_source.xhtml#l00232">FuseBatchNorm.hpp:232</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a5b6893cda5b69359a4244c06054da18f"><div class="ttname"><a href="namespacearmnn.xhtml#a5b6893cda5b69359a4244c06054da18f">armnn::ModelOptions</a></div><div class="ttdeci">std::vector&lt; BackendOptions &gt; ModelOptions</div><div class="ttdef"><b>Definition:</b> <a href="_backend_options_8hpp_source.xhtml#l00018">BackendOptions.hpp:18</a></div></div>
+<div class="ttc" id="classarmnn_1_1_optimizer_xhtml_a1f48ba622b76ea04d15c9b62f642bf08"><div class="ttname"><a href="classarmnn_1_1_optimizer.xhtml#a1f48ba622b76ea04d15c9b62f642bf08">armnn::Optimizer::Pass</a></div><div class="ttdeci">static void Pass(Graph &amp;graph, const Optimizations &amp;optimizations)</div><div class="ttdef"><b>Definition:</b> <a href="_optimizer_8cpp_source.xhtml#l00016">Optimizer.cpp:16</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_ab40bb51feca46649eb9d00522bfe51f6"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#ab40bb51feca46649eb9d00522bfe51f6">armnn::optimizations::FuseBatchNormIntoDepthwiseConvolution2DFloat16</a></div><div class="ttdeci">OptimizeForExclusiveConnection&lt; DepthwiseConvolution2dLayer, BatchNormalizationLayer, FuseBatchNorm&lt; DepthwiseConvolution2dLayer, armnn::DataType::Float16 &gt; &gt; FuseBatchNormIntoDepthwiseConvolution2DFloat16</div><div class="ttdef"><b>Definition:</b> <a href="_fuse_batch_norm_8hpp_source.xhtml#l00237">FuseBatchNorm.hpp:237</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a8a81178ddcebb93ec0c35b6e6284273c"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a8a81178ddcebb93ec0c35b6e6284273c">armnn::optimizations::FuseBatchNormIntoConvolution2DFloat16</a></div><div class="ttdeci">OptimizeForExclusiveConnection&lt; Convolution2dLayer, BatchNormalizationLayer, FuseBatchNorm&lt; Convolution2dLayer, armnn::DataType::Float16 &gt; &gt; FuseBatchNormIntoConvolution2DFloat16</div><div class="ttdef"><b>Definition:</b> <a href="_fuse_batch_norm_8hpp_source.xhtml#l00227">FuseBatchNorm.hpp:227</a></div></div>
+<div class="ttc" id="classarmnn_1_1_exception_xhtml_abf843cbb29dec939d0731e491bab6f70"><div class="ttname"><a href="classarmnn_1_1_exception.xhtml#abf843cbb29dec939d0731e491bab6f70">armnn::Exception::what</a></div><div class="ttdeci">virtual const char * what() const noexcept override</div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8cpp_source.xhtml#l00032">Exceptions.cpp:32</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_aa52c06792e18dc13030e82476f706f9e"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#aa52c06792e18dc13030e82476f706f9e">armnn::optimizations::FuseBatchNormIntoConvolution2DFloat32</a></div><div class="ttdeci">OptimizeForExclusiveConnection&lt; Convolution2dLayer, BatchNormalizationLayer, FuseBatchNorm&lt; Convolution2dLayer, armnn::DataType::Float32 &gt; &gt; FuseBatchNormIntoConvolution2DFloat32</div><div class="ttdef"><b>Definition:</b> <a href="_fuse_batch_norm_8hpp_source.xhtml#l00222">FuseBatchNorm.hpp:222</a></div></div>
+<div class="ttc" id="_logging_8hpp_xhtml_a7b6ad073975f437ec38ca7d20154727f"><div class="ttname"><a href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a></div><div class="ttdeci">#define ARMNN_LOG(severity)</div><div class="ttdef"><b>Definition:</b> <a href="_logging_8hpp_source.xhtml#l00212">Logging.hpp:212</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a29f8d97b2d74f99c88298881cd1d825b"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a29f8d97b2d74f99c88298881cd1d825b">armnn::optimizations::SquashEqualReshapeSiblings</a></div><div class="ttdeci">OptimizeForConnection&lt; Layer, ReshapeLayer, SquashEqualSiblingsImpl&lt; ReshapeLayer &gt; &gt; SquashEqualReshapeSiblings</div><div class="ttdef"><b>Definition:</b> <a href="_squash_equal_siblings_8hpp_source.xhtml#l00070">SquashEqualSiblings.hpp:70</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a5918588fa316cf4c23f1cf02c81ee706"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a5918588fa316cf4c23f1cf02c81ee706">armnn::optimizations::MoveTransposeUp</a></div><div class="ttdeci">OptimizeForConnection&lt; Layer, TransposeLayer, MoveTransposeUpImpl &gt; MoveTransposeUp</div><div class="ttdef"><b>Definition:</b> <a href="_move_transpose_up_8hpp_source.xhtml#l00077">MoveTransposeUp.hpp:77</a></div></div>
+<div class="ttc" id="classarmnn_1_1_graph_xhtml_acc25db0641c1c22faf95af3bb49080c9"><div class="ttname"><a href="classarmnn_1_1_graph.xhtml#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.xhtml#l00053">Graph.hpp:53</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_aa76c76565125ad77092403176d74fd85"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#aa76c76565125ad77092403176d74fd85">armnn::optimizations::InsertDebugLayer</a></div><div class="ttdeci">OptimizeForType&lt; Layer, AddDebugImpl &gt; InsertDebugLayer</div><div class="ttdef"><b>Definition:</b> <a href="_add_debug_8hpp_source.xhtml#l00053">AddDebug.hpp:53</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a8341ca3512ebafb19d60eba44d40d9e4"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a8341ca3512ebafb19d60eba44d40d9e4">armnn::optimizations::OptimizeConsecutiveReshapes</a></div><div class="ttdeci">OptimizeForConnection&lt; ReshapeLayer, ReshapeLayer, OptimizeConsecutiveReshapesImpl &gt; OptimizeConsecutiveReshapes</div><div class="ttdef"><b>Definition:</b> <a href="_optimize_consecutive_reshapes_8hpp_source.xhtml#l00061">OptimizeConsecutiveReshapes.hpp:61</a></div></div>
+<div class="ttc" id="_profiling_8hpp_xhtml_a5ccc65e2c464ac05ce311fdae7ede03a"><div class="ttname"><a href="_profiling_8hpp.xhtml#a5ccc65e2c464ac05ce311fdae7ede03a">ARMNN_SCOPED_PROFILING_EVENT</a></div><div class="ttdeci">#define ARMNN_SCOPED_PROFILING_EVENT(backendId, name)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_8hpp_source.xhtml#l00220">Profiling.hpp:220</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a1a9d718b48612b5817a3c369f9fd71ee"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a1a9d718b48612b5817a3c369f9fd71ee">armnn::optimizations::OptimizeInverseConversionsFp16</a></div><div class="ttdeci">OptimizeForConnection&lt; ConvertFp16ToFp32Layer, ConvertFp32ToFp16Layer, OptimizeInverseConversionsImpl &gt; OptimizeInverseConversionsFp16</div><div class="ttdef"><b>Definition:</b> <a href="_optimize_inverse_conversions_8hpp_source.xhtml#l00042">OptimizeInverseConversions.hpp:42</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_ad668074369437a111649f51296ff8959"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#ad668074369437a111649f51296ff8959">armnn::optimizations::FusePermuteIntoConstLayer</a></div><div class="ttdeci">OptimizeForConnection&lt; ConstantLayer, PermuteLayer, ConvertConstPermuteLayersToConstLayers &gt; FusePermuteIntoConstLayer</div><div class="ttdef"><b>Definition:</b> <a href="_convert_const_permute_layers_to_const_layers_8hpp_source.xhtml#l00124">ConvertConstPermuteLayersToConstLayers.hpp:124</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a17d1279f5f8e3b92c328b1ed3b6fd549"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a17d1279f5f8e3b92c328b1ed3b6fd549">armnn::optimizations::PermuteAndBatchToSpaceAsDepthToSpace</a></div><div class="ttdeci">OptimizeForConnection&lt; PermuteLayer, BatchToSpaceNdLayer, PermuteAndBatchToSpaceAsDepthToSpaceImpl&lt; PermuteLayer &gt; &gt; PermuteAndBatchToSpaceAsDepthToSpace</div><div class="ttdef"><b>Definition:</b> <a href="_permute_and_batch_to_space_as_depth_to_space_8hpp_source.xhtml#l00102">PermuteAndBatchToSpaceAsDepthToSpace.hpp:102</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_aafc70d5af99400ff5ea7991825658b2f"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#aafc70d5af99400ff5ea7991825658b2f">armnn::optimizations::MovePermuteUp</a></div><div class="ttdeci">OptimizeForConnection&lt; Layer, PermuteLayer, MovePermuteUpImpl &gt; MovePermuteUp</div><div class="ttdef"><b>Definition:</b> <a href="_move_permute_up_8hpp_source.xhtml#l00077">MovePermuteUp.hpp:77</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a226cef3d775179e25ee35d231f4e8fae"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a226cef3d775179e25ee35d231f4e8fae">armnn::optimizations::ConvertConstantsFloatToHalf</a></div><div class="ttdeci">ConvertConstants&lt; Float32ToFloat16, IsFloat16Layer &gt; ConvertConstantsFloatToHalf</div><div class="ttdef"><b>Definition:</b> <a href="_convert_constants_8hpp_source.xhtml#l00099">ConvertConstants.hpp:99</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_ad1aaeee71293f34d9f65d2dd2792830d"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#ad1aaeee71293f34d9f65d2dd2792830d">armnn::optimizations::TransposeAsReshape</a></div><div class="ttdeci">OptimizeForType&lt; TransposeLayer, TransposeAsReshapeImpl &gt; TransposeAsReshape</div><div class="ttdef"><b>Definition:</b> <a href="_transpose_as_reshape_8hpp_source.xhtml#l00077">TransposeAsReshape.hpp:77</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a9f31d956861d8277fa5f8fb877dbbb6c"><div class="ttname"><a href="namespacearmnn.xhtml#a9f31d956861d8277fa5f8fb877dbbb6c">armnn::ApplyBackendOptimizations</a></div><div class="ttdeci">OptimizationResult ApplyBackendOptimizations(OptimizedNetworkImpl *optNetObjPtr, BackendSettings &amp;backendSettings, BackendsMap &amp;backends, const ModelOptions &amp;modelOptions, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01040">Network.cpp:1040</a></div></div>
+<div class="ttc" id="namespacearmnn_utils_1_1_filesystem_xhtml_a0477efb2c6f5b41fbfe937fef6db312d"><div class="ttname"><a href="namespacearmnn_utils_1_1_filesystem.xhtml#a0477efb2c6f5b41fbfe937fef6db312d">armnnUtils::Filesystem::CreateDirectory</a></div><div class="ttdeci">std::string CreateDirectory(std::string sPath)</div><div class="ttdoc">Returns full path to temporary folder. </div><div class="ttdef"><b>Definition:</b> <a href="_filesystem_8cpp_source.xhtml#l00047">Filesystem.cpp:47</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_abdde0870cf702c8284c9693c68093fd3"><div class="ttname"><a href="namespacearmnn.xhtml#abdde0870cf702c8284c9693c68093fd3">armnn::SelectTensorHandleStrategy</a></div><div class="ttdeci">OptimizationResult SelectTensorHandleStrategy(Graph &amp;optGraph, BackendsMap &amp;backends, TensorHandleFactoryRegistry &amp;registry, bool importEnabled, bool exportEnabled, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01502">Network.cpp:1502</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">armnn::BoostLogSeverityMapping::warning</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_adf57837d00e8352d9b5cc5ab1fb5fee9af6486a22a9bb11959bfae60a3e5174b1"><div class="ttname"><a href="namespacearmnn.xhtml#adf57837d00e8352d9b5cc5ab1fb5fee9af6486a22a9bb11959bfae60a3e5174b1">armnn::ShapeInferenceMethod::ValidateOnly</a></div><div class="ttdoc">Validate all output shapes. </div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a674efcf6cbdb9e831d653ff0e821fb38"><div class="ttname"><a href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">armnn::IOptimizedNetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; IOptimizedNetwork, void(*)(IOptimizedNetwork *network)&gt; IOptimizedNetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00253">INetwork.hpp:253</a></div></div>
+<div class="ttc" id="classarmnn_1_1_runtime_exception_xhtml"><div class="ttname"><a href="classarmnn_1_1_runtime_exception.xhtml">armnn::RuntimeException</a></div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.xhtml#l00120">Exceptions.hpp:120</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_ae0b1382e3af141896a46531c50e8863f"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#ae0b1382e3af141896a46531c50e8863f">armnn::optimizations::PermuteAsReshape</a></div><div class="ttdeci">OptimizeForType&lt; PermuteLayer, PermuteAsReshapeImpl &gt; PermuteAsReshape</div><div class="ttdef"><b>Definition:</b> <a href="_permute_as_reshape_8hpp_source.xhtml#l00066">PermuteAsReshape.hpp:66</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_aba7b0ca6192b8b58ecd517a82b4f378e"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#aba7b0ca6192b8b58ecd517a82b4f378e">armnn::optimizations::SquashEqualTransposeSiblings</a></div><div class="ttdeci">OptimizeForConnection&lt; Layer, TransposeLayer, SquashEqualSiblingsImpl&lt; TransposeLayer &gt; &gt; SquashEqualTransposeSiblings</div><div class="ttdef"><b>Definition:</b> <a href="_squash_equal_siblings_8hpp_source.xhtml#l00069">SquashEqualSiblings.hpp:69</a></div></div>
+<div class="ttc" id="structarmnn_1_1_backend_options_xhtml"><div class="ttname"><a href="structarmnn_1_1_backend_options.xhtml">armnn::BackendOptions</a></div><div class="ttdoc">Struct for the users to pass backend specific options. </div><div class="ttdef"><b>Definition:</b> <a href="_backend_options_8hpp_source.xhtml#l00022">BackendOptions.hpp:22</a></div></div>
+<div class="ttc" id="classarmnn_1_1_profiler_manager_xhtml_a7b1e3e5bf386004541be2b5b22443208"><div class="ttname"><a href="classarmnn_1_1_profiler_manager.xhtml#a7b1e3e5bf386004541be2b5b22443208">armnn::ProfilerManager::RegisterProfiler</a></div><div class="ttdeci">void RegisterProfiler(IProfiler *profiler)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_8cpp_source.xhtml#l00600">Profiling.cpp:600</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a06cac66872538895dd6b59cdf39173d2"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a06cac66872538895dd6b59cdf39173d2">armnn::optimizations::ConvertConstantsHalfToFloat</a></div><div class="ttdeci">ConvertConstants&lt; Float16ToFloat32, IsFloat32Layer &gt; ConvertConstantsHalfToFloat</div><div class="ttdef"><b>Definition:</b> <a href="_convert_constants_8hpp_source.xhtml#l00098">ConvertConstants.hpp:98</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a1ec6b4c20ed294a96cf94c33c24caaf5"><div class="ttname"><a href="namespacearmnn.xhtml#a1ec6b4c20ed294a96cf94c33c24caaf5">armnn::CreateSupportedBackends</a></div><div class="ttdeci">BackendsMap CreateSupportedBackends(TensorHandleFactoryRegistry &amp;handleFactoryRegistry, BackendSettings &amp;backendSettings)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01021">Network.cpp:1021</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_ae1509d340bc981b11101c3316ee8afd6"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#ae1509d340bc981b11101c3316ee8afd6">armnn::optimizations::OptimizeInverseConversionsFp32</a></div><div class="ttdeci">OptimizeForConnection&lt; ConvertFp32ToFp16Layer, ConvertFp16ToFp32Layer, OptimizeInverseConversionsImpl &gt; OptimizeInverseConversionsFp32</div><div class="ttdef"><b>Definition:</b> <a href="_optimize_inverse_conversions_8hpp_source.xhtml#l00044">OptimizeInverseConversions.hpp:44</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a279d0a7c56966cea334303d48a874964"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a279d0a7c56966cea334303d48a874964">armnn::optimizations::FoldPadIntoPooling2d</a></div><div class="ttdeci">OptimizeForExclusiveConnection&lt; PadLayer, Pooling2dLayer, pad_fold::FoldPadIntoPooling2dImpl &gt; FoldPadIntoPooling2d</div><div class="ttdef"><b>Definition:</b> <a href="_fold_pad_into_layer2d_8hpp_source.xhtml#l00260">FoldPadIntoLayer2d.hpp:260</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_adf57837d00e8352d9b5cc5ab1fb5fee9a5dd7c525cb1500a2181fd4cc079d7acb"><div class="ttname"><a href="namespacearmnn.xhtml#adf57837d00e8352d9b5cc5ab1fb5fee9a5dd7c525cb1500a2181fd4cc079d7acb">armnn::ShapeInferenceMethod::InferAndValidate</a></div><div class="ttdoc">Infer missing output shapes and validate all output shapes. </div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a86d19da62b6cfed3928f6fe7026f22fa"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a86d19da62b6cfed3928f6fe7026f22fa">armnn::optimizations::Fp32NetworkToFp16Converter</a></div><div class="ttdeci">OptimizeForType&lt; Layer, ConvertFp32NetworkToFp16Impl &gt; Fp32NetworkToFp16Converter</div><div class="ttdef"><b>Definition:</b> <a href="_convert_fp32_network_to_fp16_8hpp_source.xhtml#l00087">ConvertFp32NetworkToFp16.hpp:87</a></div></div>
+<div class="ttc" id="classarmnn_1_1_i_optimized_network_xhtml_a32eecbed1d4cd2602204a2ab3f5f249e"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.xhtml#a32eecbed1d4cd2602204a2ab3f5f249e">armnn::IOptimizedNetwork::IOptimizedNetwork</a></div><div class="ttdeci">IOptimizedNetwork(const IOptimizedNetwork &amp;other, const ModelOptions &amp;modelOptions)</div><div class="ttdoc">Creates a copy of the IOptimizedNetwork. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00462">Network.cpp:462</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a4fc55afb4885278ad1510b2c4307af76"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a4fc55afb4885278ad1510b2c4307af76">armnn::optimizations::AddBroadcastReshapeLayer</a></div><div class="ttdeci">OptimizeForType&lt; Layer, AddBroadcastReshapeLayerImpl &gt; AddBroadcastReshapeLayer</div><div class="ttdef"><b>Definition:</b> <a href="_add_broadcast_reshape_layer_8hpp_source.xhtml#l00094">AddBroadcastReshapeLayer.hpp:94</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a4dfbdc8cc90b67e74eccd146d977ff66"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a4dfbdc8cc90b67e74eccd146d977ff66">armnn::optimizations::ConvertConstDequantisationLayersToConstLayers</a></div><div class="ttdeci">OptimizeForConnection&lt; ConstantLayer, DequantizeLayer, ConvertConstDequantisationLayersToConstLayersImpl &gt; ConvertConstDequantisationLayersToConstLayers</div><div class="ttdef"><b>Definition:</b> <a href="_convert_const_dequantisation_layers_to_const_layers_8hpp_source.xhtml#l00173">ConvertConstDequantisationLayersToConstLayers.hpp:173</a></div></div>
+<div class="ttc" id="classarmnn_1_1_i_optimized_network_xhtml_a58ee539cf95c1e99fe4f54ef6e8bbd05"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.xhtml#a58ee539cf95c1e99fe4f54ef6e8bbd05">armnn::IOptimizedNetwork::Destroy</a></div><div class="ttdeci">static void Destroy(IOptimizedNetwork *network)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00476">Network.cpp:476</a></div></div>
+<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a9c0a3a9a388a01bc21e20a16e70055f0"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a9c0a3a9a388a01bc21e20a16e70055f0">armnn::optimizations::InsertDebugToFileLayer</a></div><div class="ttdeci">OptimizeForType&lt; Layer, AddDebugToFileImpl &gt; InsertDebugToFileLayer</div><div class="ttdef"><b>Definition:</b> <a href="_add_debug_8hpp_source.xhtml#l00054">AddDebug.hpp:54</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a9173495a61a0092b5f38b855f02c3585"><div class="ttname"><a href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">armnn::BackendsMap</a></div><div class="ttdeci">std::map&lt; BackendId, std::unique_ptr&lt; class IBackendInternal &gt; &gt; BackendsMap</div><div class="ttdef"><b>Definition:</b> <a href="_network_8hpp_source.xhtml#l00262">Network.hpp:262</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a id="a374d52340ec8dc02a819acc20fb5aa92"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a374d52340ec8dc02a819acc20fb5aa92">&#9670;&nbsp;</a></span>pOptimizedNetworkImpl</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_optimized_network_impl.xhtml">OptimizedNetworkImpl</a>&gt; pOptimizedNetworkImpl</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_i_network_8hpp_source.xhtml#l00814">814</a> of file <a class="el" href="_i_network_8hpp_source.xhtml">INetwork.hpp</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_test_utils_8cpp_source.xhtml#l00049">armnn::GetGraphForTesting()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00496">IOptimizedNetwork::GetGuid()</a>, <a class="el" href="_test_utils_8cpp_source.xhtml#l00054">armnn::GetModelOptionsForTesting()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00501">IOptimizedNetwork::GetNumInputs()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00506">IOptimizedNetwork::GetNumOutputs()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00491">IOptimizedNetwork::GetProfiler()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01572">armnn::Optimize()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00481">IOptimizedNetwork::PrintGraph()</a>, and <a class="el" href="_network_8cpp_source.xhtml#l00486">IOptimizedNetwork::SerializeToDot()</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li>include/armnn/<a class="el" href="_i_network_8hpp_source.xhtml">INetwork.hpp</a></li>
+<li>src/armnn/<a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="navelem"><a class="el" href="namespacearmnn.xhtml">armnn</a></li><li class="navelem"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml">IOptimizedNetwork</a></li>
+ <li class="footer">Generated on Fri Feb 24 2023 10:24:30 for ArmNN by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
+ </ul>
+</div>
+</body>
+</html>