aboutsummaryrefslogtreecommitdiff
path: root/22.08/_arm_n_n_executor_8cpp_source.xhtml
blob: ac515b6fcc77f684814193fbfed8d2a643e7008e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
<!-- 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: tests/ExecuteNetwork/ArmNNExecutor.cpp Source File</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">22.08</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('_arm_n_n_executor_8cpp_source.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="headertitle">
<div class="title">ArmNNExecutor.cpp</div>  </div>
</div><!--header-->
<div class="contents">
<a href="_arm_n_n_executor_8cpp.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// SPDX-License-Identifier: MIT</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;</div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;</div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_arm_n_n_executor_8hpp.xhtml">ArmNNExecutor.hpp</a>&quot;</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_network_execution_utils_8hpp.xhtml">NetworkExecutionUtils/NetworkExecutionUtils.hpp</a>&quot;</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;</div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_i_async_execution_callback_8hpp.xhtml">armnn/IAsyncExecutionCallback.hpp</a>&gt;</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_async_execution_callback_8hpp.xhtml">AsyncExecutionCallback.hpp</a>&gt;</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;</div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespacearmnn.xhtml">armnn</a>;</div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespacestd_1_1chrono.xhtml">std::chrono</a>;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"><a class="line" href="class_arm_n_n_executor.xhtml#aa9bcc5837a0ef0e503f56d634b1e7184">   17</a></span>&#160;<a class="code" href="class_arm_n_n_executor.xhtml#aa9bcc5837a0ef0e503f56d634b1e7184">ArmNNExecutor::ArmNNExecutor</a>(<span class="keyword">const</span> <a class="code" href="struct_execute_network_params.xhtml">ExecuteNetworkParams</a>&amp; params, <a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml">armnn::IRuntime::CreationOptions</a> runtimeOptions)</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;: m_Params(params)</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;    runtimeOptions.<a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml#a2fe8c3eadf4f4f9c0c664a24a2a298f9">m_EnableGpuProfiling</a> = params.<a class="code" href="struct_execute_network_params.xhtml#a26d42007440bb01a1a6d0ab3b5a657ee">m_EnableProfiling</a>;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;    runtimeOptions.<a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml#ae43cf4b5df0068ee6a9151c98947248b">m_DynamicBackendsPath</a> = params.<a class="code" href="struct_execute_network_params.xhtml#ae43cf4b5df0068ee6a9151c98947248b">m_DynamicBackendsPath</a>;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;    m_Runtime = <a class="code" href="classarmnn_1_1_i_runtime.xhtml#ad44ecd3700748dc30dc4bbe34ba5bde7">armnn::IRuntime::Create</a>(runtimeOptions);</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;    <span class="keyword">auto</span> parser = CreateParser();</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;    <span class="keyword">auto</span> network = parser-&gt;CreateNetwork(m_Params);</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;    <span class="keyword">auto</span> optNet = OptimizeNetwork(network.get());</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;    m_IOInfo = GetIOInfo(optNet.get());</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;    SetupInputsAndOutputs();</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    std::string errorMsg;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    <a class="code" href="namespacearmnn.xhtml#ae060224135f57f926cbda9d2732a2b1f">armnn::ProfilingDetailsMethod</a> profilingDetailsMethod = ProfilingDetailsMethod::Undefined;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;    <span class="keywordflow">if</span> (params.<a class="code" href="struct_execute_network_params.xhtml#ab17deb382179697b4702cc4f909e71f8">m_OutputDetailsOnlyToStdOut</a>)</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;    {</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;        profilingDetailsMethod = <a class="code" href="namespacearmnn.xhtml#ae060224135f57f926cbda9d2732a2b1fa566666dfc3a9a82da0d7b0816b19f278">armnn::ProfilingDetailsMethod::DetailsOnly</a>;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;    }</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (params.<a class="code" href="struct_execute_network_params.xhtml#ae96fc745917a3a0c0de7a818c9a05012">m_OutputDetailsToStdOut</a>)</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;    {</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;        profilingDetailsMethod = <a class="code" href="namespacearmnn.xhtml#ae060224135f57f926cbda9d2732a2b1fa497ab261a562e316736c2cb59b839d32">armnn::ProfilingDetailsMethod::DetailsWithEvents</a>;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;    }</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;    <a class="code" href="structarmnn_1_1_i_network_properties.xhtml">INetworkProperties</a> networkProperties{m_Params.<a class="code" href="struct_execute_network_params.xhtml#abf3cb45be3828b72b4ac08f87ac6c779">m_Concurrent</a>,</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;                                         MemorySource::Undefined,</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;                                         MemorySource::Undefined,</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;                                         params.<a class="code" href="struct_execute_network_params.xhtml#a26d42007440bb01a1a6d0ab3b5a657ee">m_EnableProfiling</a>,</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;                                         profilingDetailsMethod};</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    m_Runtime-&gt;LoadNetwork(m_NetworkId, std::move(optNet), errorMsg, networkProperties);</div><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">if</span> (m_Params.<a class="code" href="struct_execute_network_params.xhtml#a6e4eff6a5f40cb026ea76d3c13c96341">m_Iterations</a> &gt; 1)</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    {</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;        std::stringstream msg;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;        msg &lt;&lt; <span class="stringliteral">&quot;Network will be executed &quot;</span> &lt;&lt; m_Params.<a class="code" href="struct_execute_network_params.xhtml#a6e4eff6a5f40cb026ea76d3c13c96341">m_Iterations</a>;</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;        <span class="keywordflow">if</span> (m_Params.<a class="code" href="struct_execute_network_params.xhtml#abf3cb45be3828b72b4ac08f87ac6c779">m_Concurrent</a>)</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;        {</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;            msg &lt;&lt; <span class="stringliteral">&quot; times in an asynchronous manner. &quot;</span>;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;        }</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;        {</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;            msg &lt;&lt; <span class="stringliteral">&quot; times successively. &quot;</span>;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;        }</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;        msg &lt;&lt; <span class="stringliteral">&quot;The input-tensor-data files will be reused recursively if the user didn&#39;t provide enough to &quot;</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;               <span class="stringliteral">&quot;cover each execution.&quot;</span>;</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;        <a class="code" href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>) &lt;&lt; msg.str();</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    }</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    <span class="keywordflow">if</span> (m_Params.<a class="code" href="struct_execute_network_params.xhtml#a99c7360a4d4b248b3f10607bc5d2fe7b">m_GenerateTensorData</a>)</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    {</div><div class="line"><a name="l00070"></a><span class="lineno">   70</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;The input data was generated, note that the output will not be useful&quot;</span>;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    }</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;    <span class="keywordflow">if</span> (m_Params.<a class="code" href="struct_execute_network_params.xhtml#ac828647e0c753c3727c8c1f81939f7e4">m_DontPrintOutputs</a>)</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    {</div><div class="line"><a name="l00075"></a><span class="lineno">   75</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;Printing outputs to console is disabled.&quot;</span>;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    }</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;}</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="keywordtype">void</span> ArmNNExecutor::ExecuteAsync()</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;{</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    std::vector&lt;std::shared_ptr&lt;armnn::IWorkingMemHandle&gt;&gt; memHandles;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    std::unique_ptr&lt;armnn::Threadpool&gt; threadpool;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    <a class="code" href="classarmnn_1_1experimental_1_1_async_callback_manager.xhtml">armnn::AsyncCallbackManager</a> callbackManager;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    std::unordered_map&lt;armnn::InferenceId, const armnn::OutputTensors*&gt; inferenceOutputMap;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; m_Params.<a class="code" href="struct_execute_network_params.xhtml#a7adc5dcfe3d76ac489f253c4d5f439c8">m_ThreadPoolSize</a>; ++i)</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    {</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;        memHandles.emplace_back(m_Runtime-&gt;CreateWorkingMemHandle(m_NetworkId));</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    }</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    threadpool = std::make_unique&lt;armnn::Threadpool&gt;(m_Params.<a class="code" href="struct_execute_network_params.xhtml#a7adc5dcfe3d76ac489f253c4d5f439c8">m_ThreadPoolSize</a>,</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;                                                     m_Runtime.get(),</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;                                                     memHandles);</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    <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;Asynchronous Execution with Arm NN thread pool...  \n&quot;</span>;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;    <span class="comment">// Declare the latest and earliest inference times here to be used when calculating overall time</span></div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    std::chrono::high_resolution_clock::time_point earliestStartTime =</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;            std::chrono::high_resolution_clock::time_point::max();</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    std::chrono::high_resolution_clock::time_point latestEndTime =</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;            std::chrono::high_resolution_clock::now();</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    <span class="comment">// For the asynchronous execution, we are adding a pool of working memory handles (1 per thread) in the</span></div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    <span class="comment">// LoadedNetwork with each scheduled inference having a specific priority</span></div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; m_Params.<a class="code" href="struct_execute_network_params.xhtml#a6e4eff6a5f40cb026ea76d3c13c96341">m_Iterations</a>; ++i)</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    {</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;        std::shared_ptr&lt;armnn::IProfiler&gt; profiler = m_Runtime-&gt;GetProfiler(m_NetworkId);</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;        std::shared_ptr&lt;armnn::AsyncExecutionCallback&gt; cb = callbackManager.<a class="code" href="classarmnn_1_1experimental_1_1_async_callback_manager.xhtml#a27aff9e4e5d9bce49988a2de6a1ebc59">GetNewCallback</a>();</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;        inferenceOutputMap.insert({cb-&gt;GetInferenceId(), &amp;m_OutputTensorsVec[i]});</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;        threadpool-&gt;Schedule(m_NetworkId,</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;                             m_InputTensorsVec[i],</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;                             m_OutputTensorsVec[i],</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;                             <a class="code" href="namespacearmnn.xhtml#a8e72227ebe5ac505cf44790f2e6eb488a87f8a6ab85c9ced3702b4ea641ad4bb5">armnn::QosExecPriority::Medium</a>,</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;                             cb);</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    }</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    <span class="comment">// Check the results</span></div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> iteration = 0; iteration &lt; m_Params.<a class="code" href="struct_execute_network_params.xhtml#a6e4eff6a5f40cb026ea76d3c13c96341">m_Iterations</a>; ++iteration)</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    {</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;        <span class="keyword">auto</span> cb = callbackManager.<a class="code" href="classarmnn_1_1experimental_1_1_async_callback_manager.xhtml#a9ee5b1dd7d3a6f619d2ed3d97d75d9b1">GetNotifiedCallback</a>();</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;        <span class="comment">// Get the results</span></div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;        <span class="keywordflow">if</span> (earliestStartTime &gt; cb-&gt;GetStartTime())</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;        {</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;            earliestStartTime = cb-&gt;GetStartTime();</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;        }</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;        <span class="keywordflow">if</span> (latestEndTime &lt; cb-&gt;GetEndTime())</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;        {</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;            latestEndTime = cb-&gt;GetEndTime();</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;        }</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;        <span class="keyword">auto</span> startTime = time_point_cast&lt;std::chrono::milliseconds&gt;(cb-&gt;GetStartTime());</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;        <span class="keyword">auto</span> endTime = time_point_cast&lt;std::chrono::milliseconds&gt;(cb-&gt;GetEndTime());</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;        <span class="keyword">auto</span> inferenceDuration = endTime - startTime;</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;        <a class="code" href="_network_execution_utils_8cpp.xhtml#ab9be7e320a1879b362298cb198250dae">CheckInferenceTimeThreshold</a>(inferenceDuration, m_Params.<a class="code" href="struct_execute_network_params.xhtml#a318999172ae5197f56326b12d29104b7">m_ThresholdTime</a>);</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;        <span class="keywordflow">if</span>(!m_Params.<a class="code" href="struct_execute_network_params.xhtml#ac828647e0c753c3727c8c1f81939f7e4">m_DontPrintOutputs</a>)</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;        {</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;            <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a8f091a512915d1cb29a4ebf13dfc53ea">armnn::OutputTensors</a>* out = inferenceOutputMap[cb-&gt;GetInferenceId()];</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;            PrintOutputTensors(out, iteration);</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;        }</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    }</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    <span class="comment">// Print duration difference between overallStartTime and overallEndTime</span></div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    <span class="keyword">auto</span> overallEndTime = time_point_cast&lt;std::chrono::milliseconds&gt;(latestEndTime);</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    <span class="keyword">auto</span> overallStartTime = time_point_cast&lt;std::chrono::milliseconds&gt;(earliestStartTime);</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    <span class="keyword">auto</span> totalInferenceDuration = overallEndTime - overallStartTime;</div><div class="line"><a name="l00147"></a><span class="lineno">  147</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;Overall Inference time: &quot;</span> &lt;&lt; std::setprecision(2)</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;                    &lt;&lt; std::fixed &lt;&lt; totalInferenceDuration.count() &lt;&lt; <span class="stringliteral">&quot; ms\n&quot;</span>;</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;}</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;<span class="keywordtype">void</span> ArmNNExecutor::ExecuteSync()</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;{</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> x = 0; x &lt; m_Params.<a class="code" href="struct_execute_network_params.xhtml#a6e4eff6a5f40cb026ea76d3c13c96341">m_Iterations</a>; x++)</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    {</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;        std::shared_ptr&lt;armnn::IProfiler&gt; profiler = m_Runtime-&gt;GetProfiler(m_NetworkId);</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;        <span class="keyword">const</span> <span class="keyword">auto</span> start_time = <a class="code" href="namespacearmnn.xhtml#ac895f6f6897ce335b7b433201bae0b48">armnn::GetTimeNow</a>();</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;        <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a> ret;</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;        <span class="keywordflow">if</span> (m_Params.<a class="code" href="struct_execute_network_params.xhtml#a1697b9751b4ba381f89b8c81cd9dfc3c">m_ImportInputsIfAligned</a>)</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;        {</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;             ret = m_Runtime-&gt;EnqueueWorkload(m_NetworkId,</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;                                              m_InputTensorsVec[x],</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;                                              m_OutputTensorsVec[x],</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;                                              m_ImportedInputIds[x],</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;                                              m_ImportedOutputIds[x]);</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;        }</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;        {</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;            ret = m_Runtime-&gt;EnqueueWorkload(m_NetworkId,</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;                                             m_InputTensorsVec[x],</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;                                             m_OutputTensorsVec[x]);</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;        }</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;        <span class="keyword">const</span> <span class="keyword">auto</span> inferenceDuration = <a class="code" href="namespacearmnn.xhtml#a441621f00fd5665898c81a5ae3473c6b">armnn::GetTimeDuration</a>(start_time);</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;        <span class="comment">// If profiling is enabled print out the results</span></div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;        <span class="keywordflow">if</span>(profiler &amp;&amp; profiler-&gt;IsProfilingEnabled())</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;        {</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;            profiler-&gt;Print(std::cout);</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;        }</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;        <span class="keywordflow">if</span>(ret == <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">armnn::Status::Failure</a>)</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;        {</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;            <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_exception.xhtml">armnn::Exception</a>(<span class="stringliteral">&quot;IRuntime::EnqueueWorkload failed&quot;</span>);</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;        }</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;        <span class="keywordflow">if</span>(!m_Params.<a class="code" href="struct_execute_network_params.xhtml#ac828647e0c753c3727c8c1f81939f7e4">m_DontPrintOutputs</a>)</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;        {</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;            PrintOutputTensors(&amp;m_OutputTensorsVec[x],  x);</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;        }</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;        <span class="comment">// If thresholdTime == 0.0 (default), then it hasn&#39;t been supplied at command line</span></div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;        <a class="code" href="_network_execution_utils_8cpp.xhtml#ab9be7e320a1879b362298cb198250dae">CheckInferenceTimeThreshold</a>(inferenceDuration, m_Params.<a class="code" href="struct_execute_network_params.xhtml#a318999172ae5197f56326b12d29104b7">m_ThresholdTime</a>);</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;    }</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;}</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="class_arm_n_n_executor.xhtml#a7b274ddaba15738d696359ad327a88ca">  198</a></span>&#160;std::vector&lt;const void*&gt; <a class="code" href="class_arm_n_n_executor.xhtml#a7b274ddaba15738d696359ad327a88ca">ArmNNExecutor::Execute</a>()</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;{</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;    <span class="keywordflow">if</span>(m_Params.<a class="code" href="struct_execute_network_params.xhtml#a7adc5dcfe3d76ac489f253c4d5f439c8">m_ThreadPoolSize</a> == 0)</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    {</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;        ExecuteSync();</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;    }</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    <span class="keywordflow">else</span></div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;    {</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;        ExecuteAsync();</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;    }</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    std::vector&lt;const void*&gt; results;</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; output : m_OutputStorage)</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;    {</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;        results.push_back(output.m_Mem);</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;    }</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;    <span class="keywordflow">return</span> results;</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;}</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="class_arm_n_n_executor.xhtml#a21887e76c6b67797ada411a163d81a62">  217</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="class_arm_n_n_executor.xhtml#a21887e76c6b67797ada411a163d81a62">ArmNNExecutor::PrintNetworkInfo</a>()</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;{</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;    <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; inputNames = m_Params.<a class="code" href="struct_execute_network_params.xhtml#aaf3c7f286030842a31025309ab6a8329">m_InputNames</a>.size() != 0 ?</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;                                                 m_Params.<a class="code" href="struct_execute_network_params.xhtml#aaf3c7f286030842a31025309ab6a8329">m_InputNames</a> :</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;                                                 m_IOInfo.m_InputNames;</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;    std::stringstream ss;</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;    ss &lt;&lt; <span class="stringliteral">&quot;===== Network Info =====\n&quot;</span>;</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    ss &lt;&lt; <span class="stringliteral">&quot;Inputs in order:\n&quot;</span>;</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; inputName : inputNames)</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    {</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;        <span class="keyword">const</span> <span class="keyword">auto</span> inputInfo = m_IOInfo.m_InputInfoMap[inputName].second;</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;        ss &lt;&lt;  inputName &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; inputInfo.GetShape() &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.xhtml#a81b5ff8545adad19a1c9d4ca076d552c">GetDataTypeName</a>(inputInfo.GetDataType());</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;        <span class="keywordflow">if</span> (inputInfo.IsQuantized())</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;        {</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;            ss &lt;&lt; <span class="stringliteral">&quot; Quantization Offset: &quot;</span> &lt;&lt; inputInfo.GetQuantizationOffset();</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;            <span class="keywordflow">if</span> (inputInfo.HasMultipleQuantizationScales())</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;            {</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;                ss &lt;&lt; <span class="stringliteral">&quot; Quantization scales: &quot;</span>;</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;                <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> scale: inputInfo.GetQuantizationScales())</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;                {</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;                    ss &lt;&lt; scale &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;                }</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;            }</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;            {</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;                ss &lt;&lt; <span class="stringliteral">&quot; Quantization scale: &quot;</span> &lt;&lt; inputInfo.GetQuantizationScale();</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;            }</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;        }</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;        ss  &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;    }</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    ss &lt;&lt; <span class="stringliteral">&quot;Outputs in order:\n&quot;</span>;</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; outputName : m_IOInfo.m_OutputNames)</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;    {</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;        <span class="keyword">const</span> <span class="keyword">auto</span> outputInfo = m_IOInfo.m_OutputInfoMap[outputName].second;</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;        ss &lt;&lt;  outputName &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; outputInfo.GetShape() &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.xhtml#a81b5ff8545adad19a1c9d4ca076d552c">GetDataTypeName</a>(outputInfo.GetDataType());</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;        <span class="keywordflow">if</span> (outputInfo.IsQuantized())</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;        {</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;            ss &lt;&lt; <span class="stringliteral">&quot; Quantization Offset: &quot;</span> &lt;&lt; outputInfo.GetQuantizationOffset();</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;            <span class="keywordflow">if</span> (outputInfo.HasMultipleQuantizationScales())</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;            {</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;                ss &lt;&lt; <span class="stringliteral">&quot; Quantization scales: &quot;</span>;</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;                <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> scale: outputInfo.GetQuantizationScales())</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;                {</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;                    ss &lt;&lt; scale &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;                }</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;            }</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;            {</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;                ss &lt;&lt; <span class="stringliteral">&quot; Quantization scale: &quot;</span> &lt;&lt; outputInfo.GetQuantizationScale();</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;            }</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;        }</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;        ss  &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;    }</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;    std::cout &lt;&lt; ss.str() &lt;&lt; std::endl;</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;}</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;<span class="keywordtype">void</span> ArmNNExecutor::SetupInputsAndOutputs()</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;{</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> noOfInputs = m_IOInfo.m_InputNames.size();</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;    <span class="keywordflow">if</span> (m_Params.<a class="code" href="struct_execute_network_params.xhtml#aaf3c7f286030842a31025309ab6a8329">m_InputNames</a>.size() != 0 &amp;&amp; m_Params.<a class="code" href="struct_execute_network_params.xhtml#aaf3c7f286030842a31025309ab6a8329">m_InputNames</a>.size() != noOfInputs)</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;    {</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;        <a class="code" href="_network_execution_utils_8cpp.xhtml#a0d853d3a7b138f39cc775c26e2c0821a">LogAndThrow</a>(<span class="stringliteral">&quot;Number of input names does not match number of inputs&quot;</span>);</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;    }</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputFilePaths = m_Params.<a class="code" href="struct_execute_network_params.xhtml#ae3c3ae097395afea488cd3e0244269fa">m_InputTensorDataFilePaths</a>.size();</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;    <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; inputNames = m_Params.<a class="code" href="struct_execute_network_params.xhtml#aaf3c7f286030842a31025309ab6a8329">m_InputNames</a>.size() != 0 ?</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;                                                 m_Params.<a class="code" href="struct_execute_network_params.xhtml#aaf3c7f286030842a31025309ab6a8329">m_InputNames</a> :</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;                                                 m_IOInfo.m_InputNames;</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> noInputSets = 1;</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;    <span class="keywordflow">if</span> (inputFilePaths != 0)</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;    {</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;        <span class="keywordflow">if</span> (inputFilePaths % noOfInputs != 0)</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;        {</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;            <a class="code" href="_network_execution_utils_8cpp.xhtml#a0d853d3a7b138f39cc775c26e2c0821a">LogAndThrow</a>(<span class="stringliteral">&quot;Number of input files: &quot;</span> + std::to_string(inputFilePaths) +</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;                        <span class="stringliteral">&quot; not compatible with number of inputs: &quot;</span> + std::to_string(noOfInputs));</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;        }</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;        noInputSets = inputFilePaths / noOfInputs;</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;        <span class="keywordflow">if</span> (noInputSets != 1 &amp;&amp; m_Params.<a class="code" href="struct_execute_network_params.xhtml#acb9376adc0f7174b7d4295e00315a084">m_ReuseBuffers</a>)</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;        {</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;            <a class="code" href="_network_execution_utils_8cpp.xhtml#a0d853d3a7b138f39cc775c26e2c0821a">LogAndThrow</a>(<span class="stringliteral">&quot;Specifying multiple sets of inputs not compatible with ReuseBuffers&quot;</span>);</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;        }</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;    }</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> noOfOutputs = m_IOInfo.m_OutputNames.size();</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputFilePaths = m_Params.<a class="code" href="struct_execute_network_params.xhtml#a74d346297c55b516908c541030adc88d">m_OutputTensorFiles</a>.size();</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> noOutputSets = 1;</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;    <span class="keywordflow">if</span> (outputFilePaths != 0)</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;    {</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;        <span class="keywordflow">if</span> (outputFilePaths % noOfOutputs != 0)</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;        {</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;            <a class="code" href="_network_execution_utils_8cpp.xhtml#a0d853d3a7b138f39cc775c26e2c0821a">LogAndThrow</a>(<span class="stringliteral">&quot;Number of output files: &quot;</span> + std::to_string(outputFilePaths) +</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;                        <span class="stringliteral">&quot;, not compatible with number of outputs: &quot;</span> + std::to_string(noOfOutputs));</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;        }</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;        noOutputSets = outputFilePaths / noOfOutputs;</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;        <span class="keywordflow">if</span> (noOutputSets != 1 &amp;&amp; m_Params.<a class="code" href="struct_execute_network_params.xhtml#acb9376adc0f7174b7d4295e00315a084">m_ReuseBuffers</a>)</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;        {</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;            <a class="code" href="_network_execution_utils_8cpp.xhtml#a0d853d3a7b138f39cc775c26e2c0821a">LogAndThrow</a>(<span class="stringliteral">&quot;Specifying multiple sets of outputs not compatible with ReuseBuffers&quot;</span>);</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;        }</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;    }</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;    <span class="keywordflow">if</span> (m_Params.<a class="code" href="struct_execute_network_params.xhtml#a7adc5dcfe3d76ac489f253c4d5f439c8">m_ThreadPoolSize</a> != 0)</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;    {</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;        <span class="comment">// The current implementation of the Threadpool does not allow binding of outputs to a thread</span></div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;        <span class="comment">// So to ensure no two threads write to the same output at the same time, no output can be reused</span></div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;        noOutputSets = m_Params.<a class="code" href="struct_execute_network_params.xhtml#a6e4eff6a5f40cb026ea76d3c13c96341">m_Iterations</a>;</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;    }</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;    <span class="keywordflow">if</span> (m_Params.<a class="code" href="struct_execute_network_params.xhtml#ae3c3ae097395afea488cd3e0244269fa">m_InputTensorDataFilePaths</a>.size() &gt; noOfInputs)</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;    {</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;        <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;Given network has &quot;</span> &lt;&lt; noOfInputs &lt;&lt; <span class="stringliteral">&quot; input/s. One input-tensor-data file is required &quot;</span></div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;                        &lt;&lt; <span class="stringliteral">&quot;for each input. The user provided &quot;</span></div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;                        &lt;&lt; m_Params.<a class="code" href="struct_execute_network_params.xhtml#ae3c3ae097395afea488cd3e0244269fa">m_InputTensorDataFilePaths</a>.size()</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;                        &lt;&lt; <span class="stringliteral">&quot; input-tensor-data file/s which will be used to fill the input/s.\n&quot;</span>;</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;    }</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputCount = 0;</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;    <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputSet = 0; inputSet &lt; noInputSets; ++inputSet)</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;    {</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;        <a class="code" href="namespacearmnn.xhtml#aa01bce88f89975a5a031db4cc8861527">armnn::InputTensors</a> inputTensors;</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; inputName: inputNames)</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;        {</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;            <a class="code" href="namespacearmnn.xhtml#a280670a263dc4fd40491f6d0a2737f44">armnn::BindingPointInfo</a> bindingPointInfo;</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;            <span class="keywordflow">try</span></div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;            {</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;                bindingPointInfo = m_IOInfo.m_InputInfoMap.at(inputName);</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;            }</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;            <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::out_of_range&amp; e)</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;            {</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;                <a class="code" href="_network_execution_utils_8cpp.xhtml#a0d853d3a7b138f39cc775c26e2c0821a">LogAndThrow</a>(<span class="stringliteral">&quot;Input with inputName: &quot;</span> + inputName + <span class="stringliteral">&quot; not found.&quot;</span>);</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;            }</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;            <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a>&amp; tensorInfo = bindingPointInfo.second;</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;            <span class="keyword">auto</span> newInfo = <a class="code" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a>{tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>(), tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#aea909c7327109228ef618d459015def3">GetDataType</a>(),</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;                                             tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a047ca888c43bd7fb5702853bf72410d0">GetQuantizationScale</a>(),</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;                                             tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a770b51078da02f44a819e9f95d8058b5">GetQuantizationOffset</a>(),</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;                                             <span class="keyword">true</span>};</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;            m_InputStorage.emplace_back(IOStorage{tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#abcbdfb544ece4c31d0b37715ad0f3be0">GetNumBytes</a>()});</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;            <span class="keyword">const</span> <span class="keywordtype">int</span> bindingId = bindingPointInfo.first;</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;            inputTensors.emplace_back(bindingId, <a class="code" href="classarmnn_1_1_const_tensor.xhtml">armnn::ConstTensor</a>{newInfo, m_InputStorage.back().m_Mem});</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;            <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_optional.xhtml">armnn::Optional&lt;std::string&gt;</a> dataFile = m_Params.<a class="code" href="struct_execute_network_params.xhtml#a99c7360a4d4b248b3f10607bc5d2fe7b">m_GenerateTensorData</a> ?</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;                                                          <a class="code" href="structarmnn_1_1_empty_optional.xhtml">armnn::EmptyOptional</a>() :</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;                                                          armnn::MakeOptional&lt;std::string&gt;(</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;                                                                  m_Params.<a class="code" href="struct_execute_network_params.xhtml#ae3c3ae097395afea488cd3e0244269fa">m_InputTensorDataFilePaths</a>.at(inputCount++));</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;            <span class="keywordflow">switch</span> (tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#aea909c7327109228ef618d459015def3">GetDataType</a>())</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;            {</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;                <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>:</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;                {</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;                    <span class="keyword">auto</span> typedTensor = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span>(m_InputStorage.back().m_Mem);</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;                    PopulateTensorWithData&lt;float&gt;(typedTensor, tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>(), dataFile, inputName);</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;                }</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;                <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a>:</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;                {</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;                    <span class="keyword">auto</span> typedTensor = <span class="keyword">reinterpret_cast&lt;</span>int16_t*<span class="keyword">&gt;</span>(m_InputStorage.back().m_Mem);</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;                    PopulateTensorWithData&lt;int16_t&gt;(typedTensor, tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>(), dataFile, inputName);</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;                }</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;                <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">armnn::DataType::QSymmS8</a>:</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;                <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::DataType::QAsymmS8</a>:</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;                {</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;                    <span class="keyword">auto</span> typedTensor = <span class="keyword">reinterpret_cast&lt;</span>int8_t*<span class="keyword">&gt;</span>(m_InputStorage.back().m_Mem);</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;                    PopulateTensorWithData&lt;int8_t&gt;(typedTensor, tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>(), dataFile, inputName);</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;                }</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;                <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>:</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;                {</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;                    <span class="keyword">auto</span> typedTensor = <span class="keyword">reinterpret_cast&lt;</span>uint8_t*<span class="keyword">&gt;</span>(m_InputStorage.back().m_Mem);</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;                    PopulateTensorWithData&lt;uint8_t&gt;(typedTensor, tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>(), dataFile, inputName);</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;                }</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;                <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a>:</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;                {</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;                    <span class="keyword">auto</span> typedTensor = <span class="keyword">reinterpret_cast&lt;</span>int32_t*<span class="keyword">&gt;</span>(m_InputStorage.back().m_Mem);</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;                    PopulateTensorWithData&lt;int32_t&gt;(typedTensor, tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>(), dataFile, inputName);</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;                }</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;                <span class="keywordflow">default</span>:</div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;                {</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;                    <a class="code" href="_network_execution_utils_8cpp.xhtml#a0d853d3a7b138f39cc775c26e2c0821a">LogAndThrow</a>(<span class="stringliteral">&quot;Unexpected DataType&quot;</span>);</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;                }</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;            }</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;            <span class="keywordflow">if</span> (m_Params.<a class="code" href="struct_execute_network_params.xhtml#a1697b9751b4ba381f89b8c81cd9dfc3c">m_ImportInputsIfAligned</a>)</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;            {</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;                m_ImportedInputIds.push_back(</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;                    m_Runtime-&gt;ImportInputs(m_NetworkId, m_InputTensorsVec.back(), <a class="code" href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277a1131a914388fac73e5f07b0ba0aad523">armnn::MemorySource::Malloc</a>));</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;            }</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;        }</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;        m_InputTensorsVec.emplace_back(inputTensors);</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;    }</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;    <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputSet = 0; outputSet &lt; noOutputSets; ++outputSet)</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;    {</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;        <a class="code" href="namespacearmnn.xhtml#a8f091a512915d1cb29a4ebf13dfc53ea">armnn::OutputTensors</a> outputTensors;</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; output: m_IOInfo.m_OutputInfoMap)</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;        {</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;            <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a280670a263dc4fd40491f6d0a2737f44">armnn::BindingPointInfo</a>&amp; bindingPointInfo = output.second;</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;            <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a>&amp; tensorInfo = bindingPointInfo.second;</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;            m_OutputStorage.emplace_back(tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#abcbdfb544ece4c31d0b37715ad0f3be0">GetNumBytes</a>());</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;            outputTensors.emplace_back(bindingPointInfo.first, <a class="code" href="classarmnn_1_1_tensor.xhtml">armnn::Tensor</a>{tensorInfo, m_OutputStorage.back().m_Mem});</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;        }</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;        m_OutputTensorsVec.emplace_back(outputTensors);</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;        <span class="keywordflow">if</span> (m_Params.<a class="code" href="struct_execute_network_params.xhtml#a1697b9751b4ba381f89b8c81cd9dfc3c">m_ImportInputsIfAligned</a>)</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;        {</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;            m_ImportedOutputIds.push_back(</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;                    m_Runtime-&gt;ImportOutputs(m_NetworkId, m_OutputTensorsVec.back(), <a class="code" href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277a1131a914388fac73e5f07b0ba0aad523">armnn::MemorySource::Malloc</a>));</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;        }</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;    }</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;    <span class="comment">// Fill the remaining iterations with copies</span></div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> remainingInputSets = m_Params.<a class="code" href="struct_execute_network_params.xhtml#a6e4eff6a5f40cb026ea76d3c13c96341">m_Iterations</a> - noInputSets;</div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 1; i &lt;= remainingInputSets; i++)</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;    {</div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;        m_InputTensorsVec.push_back(m_InputTensorsVec[noInputSets % i]);</div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;        <span class="keywordflow">if</span> (m_Params.<a class="code" href="struct_execute_network_params.xhtml#a1697b9751b4ba381f89b8c81cd9dfc3c">m_ImportInputsIfAligned</a>)</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;        {</div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;            m_ImportedInputIds.push_back(m_ImportedInputIds[noInputSets % i]);</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;        }</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;    }</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> remainingOutputSets = m_Params.<a class="code" href="struct_execute_network_params.xhtml#a6e4eff6a5f40cb026ea76d3c13c96341">m_Iterations</a> - noOutputSets;</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 1; i &lt;= remainingOutputSets; i++)</div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;    {</div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;        m_OutputTensorsVec.push_back(m_OutputTensorsVec[noOutputSets % i]);</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;        <span class="keywordflow">if</span> (m_Params.<a class="code" href="struct_execute_network_params.xhtml#a1697b9751b4ba381f89b8c81cd9dfc3c">m_ImportInputsIfAligned</a>)</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;        {</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;            m_ImportedOutputIds.push_back(m_ImportedOutputIds[noOutputSets % i]);</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;        }</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;    }</div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;}</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;ArmNNExecutor::IOInfo ArmNNExecutor::GetIOInfo(<a class="code" href="classarmnn_1_1_i_optimized_network.xhtml">armnn::IOptimizedNetwork</a>* optNet)</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;{</div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;    <span class="keyword">struct </span>IOStrategy : <a class="code" href="classarmnn_1_1_i_strategy.xhtml">armnn::IStrategy</a></div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;    {</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;        <span class="keywordtype">void</span> ExecuteStrategy(<span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">armnn::IConnectableLayer</a>* layer,</div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;                             <span class="keyword">const</span> <a class="code" href="structarmnn_1_1_base_descriptor.xhtml">armnn::BaseDescriptor</a>&amp; descriptor,</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;                             <span class="keyword">const</span> std::vector&lt;armnn::ConstTensor&gt;&amp; constants,</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;                             <span class="keyword">const</span> <span class="keywordtype">char</span>* name,</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;                             <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">armnn::LayerBindingId</a> <span class="keywordtype">id</span> = 0)<span class="keyword"> override</span></div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;<span class="keyword">        </span>{</div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;            <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a>(descriptor, constants, <span class="keywordtype">id</span>);</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;            <span class="keywordflow">switch</span> (layer-&gt;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml#adceb04ae84c524e4d01881e3754a4d59">GetType</a>())</div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;            {</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;                <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">armnn::LayerType::Input</a>:</div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;                {</div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;                    m_IOInfo.m_InputNames.emplace_back(name);</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;                    m_IOInfo.m_InputInfoMap[name] = {id, layer-&gt;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_i_output_slot.xhtml#a9943775a364fc4ab53b85ac88f311886">GetTensorInfo</a>()};</div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;                    <span class="keywordflow">break</span>;</div><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="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">armnn::LayerType::Output</a>:</div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;                {</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;                    m_IOInfo.m_OutputNames.emplace_back(name);</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;                    m_IOInfo.m_OutputInfoMap[name] = {id, layer-&gt;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">GetInputSlot</a>(0).<a class="code" href="classarmnn_1_1_i_input_slot.xhtml#a81fbf6103761e55061b62ba989b00f10">GetConnection</a>()-&gt;<a class="code" href="classarmnn_1_1_i_output_slot.xhtml#a9943775a364fc4ab53b85ac88f311886">GetTensorInfo</a>()};</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;                }</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;                <span class="keywordflow">default</span>: {}</div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;            }</div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;        }</div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;        IOInfo m_IOInfo;</div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;    };</div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;    IOStrategy ioStrategy;</div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;    optNet-&gt;<a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a72032c65bf8b8acf09b564b7d80078c5">ExecuteStrategy</a>(ioStrategy);</div><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> ioStrategy.m_IOInfo;</div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;}</div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;</div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;<a class="code" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">armnn::IOptimizedNetworkPtr</a> ArmNNExecutor::OptimizeNetwork(<a class="code" href="classarmnn_1_1_i_network.xhtml">armnn::INetwork</a>* network)</div><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;    <a class="code" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">armnn::IOptimizedNetworkPtr</a> optNet{<span class="keyword">nullptr</span>, [](<a class="code" href="classarmnn_1_1_i_optimized_network.xhtml">armnn::IOptimizedNetwork</a>*){}};</div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;</div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;    <a class="code" href="structarmnn_1_1_optimizer_options.xhtml">armnn::OptimizerOptions</a> options;</div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;    options.<a class="code" href="structarmnn_1_1_optimizer_options.xhtml#a6e1a42622ca43dafc7ba8e684c016eb4">m_ReduceFp32ToFp16</a> = m_Params.m_EnableFp16TurboMode;</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;    options.<a class="code" href="structarmnn_1_1_optimizer_options.xhtml#a11f463726addcc1d2845266997d79e9c">m_ReduceFp32ToBf16</a> = m_Params.m_EnableBf16TurboMode;</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;    options.<a class="code" href="structarmnn_1_1_optimizer_options.xhtml#a69eb14082d40fa0a3cff50457344a5e0">m_Debug</a> = m_Params.m_PrintIntermediate;</div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;    options.<a class="code" href="structarmnn_1_1_optimizer_options.xhtml#a9416d94a8aad7cdfa47eb35e825cbda5">m_shapeInferenceMethod</a> = m_Params.m_InferOutputShape ?</div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;                                     <a class="code" href="namespacearmnn.xhtml#adf57837d00e8352d9b5cc5ab1fb5fee9a5dd7c525cb1500a2181fd4cc079d7acb">armnn::ShapeInferenceMethod::InferAndValidate</a> :</div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;                                     <a class="code" href="namespacearmnn.xhtml#adf57837d00e8352d9b5cc5ab1fb5fee9af6486a22a9bb11959bfae60a3e5174b1">armnn::ShapeInferenceMethod::ValidateOnly</a>;</div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;    options.<a class="code" href="structarmnn_1_1_optimizer_options.xhtml#a1b1892da2aaf7eaedaa38671d56b7f19">m_ProfilingEnabled</a> = m_Params.m_EnableProfiling;</div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;</div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;    <a class="code" href="structarmnn_1_1_backend_options.xhtml">armnn::BackendOptions</a> gpuAcc(<span class="stringliteral">&quot;GpuAcc&quot;</span>,</div><div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;                                 {</div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;                                         { <span class="stringliteral">&quot;FastMathEnabled&quot;</span>, m_Params.m_EnableFastMath },</div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;                                         { <span class="stringliteral">&quot;SaveCachedNetwork&quot;</span>, m_Params.m_SaveCachedNetwork },</div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;                                         { <span class="stringliteral">&quot;CachedNetworkFilePath&quot;</span>, m_Params.m_CachedNetworkFilePath },</div><div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;                                         { <span class="stringliteral">&quot;MLGOTuningFilePath&quot;</span>, m_Params.m_MLGOTuningFilePath }</div><div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;                                 });</div><div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;</div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;    <a class="code" href="structarmnn_1_1_backend_options.xhtml">armnn::BackendOptions</a> cpuAcc(<span class="stringliteral">&quot;CpuAcc&quot;</span>,</div><div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;                                 {</div><div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;                                         { <span class="stringliteral">&quot;FastMathEnabled&quot;</span>, m_Params.m_EnableFastMath },</div><div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;                                         { <span class="stringliteral">&quot;NumberOfThreads&quot;</span>, m_Params.m_NumberOfThreads }</div><div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;                                 });</div><div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;    options.<a class="code" href="structarmnn_1_1_optimizer_options.xhtml#a71194277c60153a5f86539f5d39f01db">m_ModelOptions</a>.push_back(gpuAcc);</div><div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;    options.<a class="code" href="structarmnn_1_1_optimizer_options.xhtml#a71194277c60153a5f86539f5d39f01db">m_ModelOptions</a>.push_back(cpuAcc);</div><div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;</div><div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;    <span class="keyword">const</span> <span class="keyword">auto</span> optimization_start_time = <a class="code" href="namespacearmnn.xhtml#ac895f6f6897ce335b7b433201bae0b48">armnn::GetTimeNow</a>();</div><div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;    optNet = <a class="code" href="namespacearmnn.xhtml#a82e98ef05fd67036d1195ba17174d685">armnn::Optimize</a>(*network, m_Params.m_ComputeDevices, m_Runtime-&gt;GetDeviceSpec(), options);</div><div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;</div><div class="line"><a name="l00528"></a><span class="lineno">  528</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;Optimization time: &quot;</span> &lt;&lt; std::setprecision(2)</div><div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;                    &lt;&lt; std::fixed &lt;&lt; <a class="code" href="namespacearmnn.xhtml#a441621f00fd5665898c81a5ae3473c6b">armnn::GetTimeDuration</a>(optimization_start_time).count() &lt;&lt; <span class="stringliteral">&quot; ms\n&quot;</span>;</div><div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;</div><div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;    <span class="keywordflow">if</span> (!optNet)</div><div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;    {</div><div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;        <a class="code" href="_network_execution_utils_8cpp.xhtml#a0d853d3a7b138f39cc775c26e2c0821a">LogAndThrow</a>(<span class="stringliteral">&quot;Optimize returned nullptr&quot;</span>);</div><div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;    }</div><div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;</div><div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;    <span class="comment">// If v,visualize-optimized-model is enabled then construct a file name for the dot file.</span></div><div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;    <span class="keywordflow">if</span> (m_Params.m_EnableLayerDetails)</div><div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;    {</div><div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;        fs::path filename = m_Params.m_ModelPath;</div><div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;        filename.replace_extension(<span class="stringliteral">&quot;dot&quot;</span>);</div><div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;        std::fstream file(filename.c_str(), std::ios_base::out);</div><div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;        optNet-&gt;<a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a26794f014974a6f963a8925de07bffeb">SerializeToDot</a>(file);</div><div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;    }</div><div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;</div><div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;    <span class="keywordflow">return</span> optNet;</div><div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;}</div><div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;</div><div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;std::unique_ptr&lt;ArmNNExecutor::IParser&gt; ArmNNExecutor::CreateParser()</div><div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;{</div><div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;    <span class="comment">// If no model format is given check the file name</span></div><div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;    <span class="keyword">const</span> std::string&amp; modelFormat = m_Params.m_ModelPath;</div><div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;</div><div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;    m_Params.m_IsModelBinary = modelFormat.find(<span class="stringliteral">&quot;json&quot;</span>) == std::string::npos ? true : <span class="keyword">false</span>;</div><div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;    std::unique_ptr&lt;IParser&gt; parser = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;    <span class="comment">// Forward to implementation based on the parser type</span></div><div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;    <span class="keywordflow">if</span> (modelFormat.find(<span class="stringliteral">&quot;armnn&quot;</span>) != std::string::npos)</div><div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;    {</div><div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;<span class="preprocessor">#if defined(ARMNN_SERIALIZER)</span></div><div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;        parser = std::make_unique&lt;ArmNNDeserializer&gt;();</div><div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;        <a class="code" href="_network_execution_utils_8cpp.xhtml#a0d853d3a7b138f39cc775c26e2c0821a">LogAndThrow</a>(<span class="stringliteral">&quot;Not built with serialization support.&quot;</span>);</div><div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;    }</div><div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;    <span class="keywordflow">else</span> <span class="keywordflow">if</span>(modelFormat.find(<span class="stringliteral">&quot;tflite&quot;</span>) != std::string::npos)</div><div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;    {</div><div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;<span class="preprocessor">#if defined(ARMNN_TF_LITE_PARSER)</span></div><div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;        parser = std::make_unique&lt;TfliteParser&gt;(m_Params);</div><div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;        <a class="code" href="_network_execution_utils_8cpp.xhtml#a0d853d3a7b138f39cc775c26e2c0821a">LogAndThrow</a>(<span class="stringliteral">&quot;Not built with Tensorflow-Lite parser support.&quot;</span>);</div><div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;    }</div><div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (modelFormat.find(<span class="stringliteral">&quot;onnx&quot;</span>) != std::string::npos)</div><div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;    {</div><div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;<span class="preprocessor">#if defined(ARMNN_ONNX_PARSER)</span></div><div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;        parser = std::make_unique&lt;OnnxParser&gt;();</div><div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;        <a class="code" href="_network_execution_utils_8cpp.xhtml#a0d853d3a7b138f39cc775c26e2c0821a">LogAndThrow</a>(<span class="stringliteral">&quot;Not built with Onnx parser support.&quot;</span>);</div><div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;    }</div><div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;</div><div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;    <span class="keywordflow">return</span> parser;</div><div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;}</div><div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;</div><div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;<span class="keywordtype">void</span> ArmNNExecutor::PrintOutputTensors(<span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a8f091a512915d1cb29a4ebf13dfc53ea">armnn::OutputTensors</a>* outputTensors,</div><div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;                                       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iteration)</div><div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;{</div><div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;    <span class="keyword">auto</span> findOutputName = [&amp;](<span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">armnn::LayerBindingId</a> id)</div><div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;    {</div><div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = m_IOInfo.m_OutputInfoMap.begin(); it != m_IOInfo.m_OutputInfoMap.end(); ++it)</div><div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;        {</div><div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;            <span class="keywordflow">if</span> (<span class="keywordtype">id</span> == it-&gt;second.first)</div><div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;            {</div><div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;                <span class="keywordflow">return</span> it-&gt;first;</div><div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;            }</div><div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;        }</div><div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;        <span class="keywordflow">return</span> std::string{};</div><div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;    };</div><div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;</div><div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputIndex = 0;</div><div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutputs = outputTensors-&gt;size();</div><div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; output: *outputTensors)</div><div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;    {</div><div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;        <span class="keyword">const</span> <span class="keyword">auto</span> bindingName = findOutputName(output.first);</div><div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;        <span class="comment">// We&#39;ve made sure before that the number of output files either equals numOutputs, in which</span></div><div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;        <span class="comment">// case we override those files when processing the results of each iteration (only the result</span></div><div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;        <span class="comment">// of the last iteration will be stored), or there are enough</span></div><div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;        <span class="comment">// output files for each output of each iteration.</span></div><div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;        <span class="keywordtype">size_t</span> outputFileIndex = iteration * numOutputs + outputIndex;</div><div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;        <span class="keywordflow">if</span> (!m_Params.m_OutputTensorFiles.empty())</div><div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;        {</div><div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;            outputFileIndex = outputFileIndex % m_Params.m_OutputTensorFiles.size();</div><div class="line"><a name="l00612"></a><span class="lineno">  612</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;Writing output: &quot;</span> &lt;&lt; bindingName &lt;&lt; <span class="stringliteral">&quot; bindingId: &#39;&quot;</span></div><div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;                            &lt;&lt; output.first</div><div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;                            &lt;&lt; <span class="stringliteral">&quot;&#39; of iteration: &quot;</span> &lt;&lt; iteration + 1 &lt;&lt; <span class="stringliteral">&quot; to file: &#39;&quot;</span></div><div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;                            &lt;&lt; m_Params.m_OutputTensorFiles[outputFileIndex] &lt;&lt; <span class="stringliteral">&quot;&#39;&quot;</span>;</div><div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;        }</div><div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;</div><div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;        <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_optional.xhtml">armnn::Optional&lt;std::string&gt;</a> outputTensorFile = m_Params.m_OutputTensorFiles.empty() ?</div><div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;                                                              <a class="code" href="structarmnn_1_1_empty_optional.xhtml">armnn::EmptyOptional</a>() :</div><div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;                                                              armnn::MakeOptional&lt;std::string&gt;(</div><div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;                                                                      m_Params.m_OutputTensorFiles[outputFileIndex]);</div><div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;</div><div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;        <a class="code" href="struct_output_write_info.xhtml">OutputWriteInfo</a> outputWriteInfo</div><div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;        {</div><div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;            outputTensorFile,</div><div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;            bindingName,</div><div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;            output.second,</div><div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;            !m_Params.m_DontPrintOutputs</div><div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;        };</div><div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;</div><div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;        std::cout &lt;&lt; bindingName &lt;&lt; <span class="stringliteral">&quot;: &quot;</span>;</div><div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;        std::vector&lt;float&gt; values;</div><div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;        <span class="keywordflow">switch</span> (output.second.GetDataType())</div><div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;        {</div><div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;            <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>:</div><div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;            {</div><div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;                PrintTensor&lt;float&gt;(outputWriteInfo, <span class="stringliteral">&quot;%f &quot;</span>);</div><div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;                <span class="keywordflow">break</span>;</div><div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;            }</div><div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;</div><div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;            <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a>:</div><div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;            {</div><div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;                PrintTensor&lt;int&gt;(outputWriteInfo, <span class="stringliteral">&quot;%d &quot;</span>);</div><div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;                <span class="keywordflow">break</span>;</div><div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;            }</div><div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;            <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">armnn::DataType::QSymmS8</a>:</div><div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;            <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::DataType::QAsymmS8</a>:</div><div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;            {</div><div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;                PrintTensor&lt;int8_t&gt;(outputWriteInfo, <span class="stringliteral">&quot;%d &quot;</span>);</div><div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;                <span class="keywordflow">break</span>;</div><div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;            }</div><div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;            <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>:</div><div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;            {</div><div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;                PrintTensor&lt;uint8_t&gt;(outputWriteInfo, <span class="stringliteral">&quot;%d &quot;</span>);</div><div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;                <span class="keywordflow">break</span>;</div><div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;            }</div><div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;            <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a>:</div><div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;            <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a>:</div><div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;            <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">armnn::DataType::BFloat16</a>:</div><div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;            <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a>:</div><div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;            <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6ae1b3c9c6087a93b07c83e0b04f377a8d">armnn::DataType::Signed64</a>:</div><div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;            <span class="keywordflow">default</span>:</div><div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;            {</div><div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;                <a class="code" href="_network_execution_utils_8cpp.xhtml#a0d853d3a7b138f39cc775c26e2c0821a">LogAndThrow</a>(<span class="stringliteral">&quot;Unexpected DataType&quot;</span>);</div><div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;            }</div><div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;        }</div><div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;        std::cout &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;    }</div><div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;}</div><div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;</div><div class="line"><a name="l00671"></a><span class="lineno"><a class="line" href="class_arm_n_n_executor.xhtml#ac65a3d900d923c4582e059c2281e70e3">  671</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="class_arm_n_n_executor.xhtml#ac65a3d900d923c4582e059c2281e70e3">ArmNNExecutor::CompareAndPrintResult</a>(std::vector&lt;const void*&gt; otherOutput)</div><div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;{</div><div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = 0;</div><div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;</div><div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; outputTensors: m_OutputTensorsVec)</div><div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;    {</div><div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; outputTensor: outputTensors)</div><div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;        {</div><div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;            <span class="keywordtype">float</span> result = 0;</div><div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;            <span class="keywordtype">size_t</span> size = outputTensor.second.GetNumBytes();</div><div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;</div><div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;            <span class="keywordflow">switch</span> (outputTensor.second.GetDataType())</div><div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;            {</div><div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;                <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>:</div><div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;                {</div><div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;                    result = ComputeRMSE&lt;float&gt;(outputTensor.second.GetMemoryArea(), otherOutput[index++], size);</div><div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;                }</div><div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;                <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a>:</div><div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;                {</div><div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;                    result = ComputeRMSE&lt;int16_t&gt;(outputTensor.second.GetMemoryArea(), otherOutput[index++], size);</div><div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;                }</div><div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;                <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">armnn::DataType::QSymmS8</a>:</div><div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;                <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::DataType::QAsymmS8</a>:</div><div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;                {</div><div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;                    result = ComputeRMSE&lt;int8_t&gt;(outputTensor.second.GetMemoryArea(), otherOutput[index++], size);</div><div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;                }</div><div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;                <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>:</div><div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;                {</div><div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;                    result = ComputeRMSE&lt;uint8_t&gt;(outputTensor.second.GetMemoryArea(), otherOutput[index++], size);</div><div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;                }</div><div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160;                <span class="keywordflow">default</span>:</div><div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;                {</div><div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;                    <a class="code" href="_network_execution_utils_8cpp.xhtml#a0d853d3a7b138f39cc775c26e2c0821a">LogAndThrow</a>(<span class="stringliteral">&quot;Unexpected DataType&quot;</span>);</div><div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;                }</div><div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;            }</div><div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;            std::cout &lt;&lt; <span class="stringliteral">&quot;RMSE: of &quot;</span> &lt;&lt; result &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;        }</div><div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;    }</div><div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;}</div><div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;<span class="preprocessor">#if defined(ARMNN_SERIALIZER)</span></div><div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;ArmNNExecutor::ArmNNDeserializer::ArmNNDeserializer() : m_Parser(<a class="code" href="classarmnn_deserializer_1_1_i_deserializer.xhtml#af116abd698a7feb92876ae48917005a4">armnnDeserializer::IDeserializer::Create</a>()){}</div><div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;</div><div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;<a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a> ArmNNExecutor::ArmNNDeserializer::CreateNetwork(<span class="keyword">const</span> <a class="code" href="struct_execute_network_params.xhtml">ExecuteNetworkParams</a>&amp; params)</div><div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;{</div><div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;    <span class="keyword">const</span> std::string&amp; modelPath = params.<a class="code" href="struct_execute_network_params.xhtml#a4fa312cf0d60fbd3988a7c76ab8e2980">m_ModelPath</a>;</div><div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;</div><div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;    std::ifstream file(modelPath, std::ios::binary);</div><div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;    <span class="keywordflow">return</span> m_Parser-&gt;CreateNetworkFromBinary(file);</div><div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;}</div><div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;</div><div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;<a class="code" href="namespacearmnn.xhtml#a280670a263dc4fd40491f6d0a2737f44">armnn::BindingPointInfo</a></div><div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;ArmNNExecutor::ArmNNDeserializer::GetInputBindingPointInfo(<span class="keywordtype">size_t</span>, <span class="keyword">const</span> std::string&amp; inputName)</div><div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;{</div><div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;    <a class="code" href="structarmnn_deserializer_1_1_binding_point_info.xhtml">armnnDeserializer::BindingPointInfo</a> DeserializerBPI = m_Parser-&gt;GetNetworkInputBindingInfo(0, inputName);</div><div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;    <span class="keywordflow">return</span> {DeserializerBPI.<a class="code" href="structarmnn_deserializer_1_1_binding_point_info.xhtml#a663b3104ec65e4e08b5e37fb42942087">m_BindingId</a>, DeserializerBPI.<a class="code" href="structarmnn_deserializer_1_1_binding_point_info.xhtml#aa308d10e76e29f09e44a933a2d091a79">m_TensorInfo</a>};</div><div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;}</div><div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;</div><div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;<a class="code" href="namespacearmnn.xhtml#a280670a263dc4fd40491f6d0a2737f44">armnn::BindingPointInfo</a></div><div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;ArmNNExecutor::ArmNNDeserializer::GetOutputBindingPointInfo(<span class="keywordtype">size_t</span>, <span class="keyword">const</span> std::string&amp; outputName)</div><div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;{</div><div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;    <a class="code" href="structarmnn_deserializer_1_1_binding_point_info.xhtml">armnnDeserializer::BindingPointInfo</a> DeserializerBPI = m_Parser-&gt;GetNetworkOutputBindingInfo(0, outputName);</div><div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;    <span class="keywordflow">return</span> {DeserializerBPI.<a class="code" href="structarmnn_deserializer_1_1_binding_point_info.xhtml#a663b3104ec65e4e08b5e37fb42942087">m_BindingId</a>, DeserializerBPI.<a class="code" href="structarmnn_deserializer_1_1_binding_point_info.xhtml#aa308d10e76e29f09e44a933a2d091a79">m_TensorInfo</a>};</div><div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;}</div><div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;</div><div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;<span class="preprocessor">#if defined(ARMNN_TF_LITE_PARSER)</span></div><div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;ArmNNExecutor::TfliteParser::TfliteParser(<span class="keyword">const</span> <a class="code" href="struct_execute_network_params.xhtml">ExecuteNetworkParams</a>&amp; params)</div><div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;{</div><div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;    <a class="code" href="structarmnn_tf_lite_parser_1_1_i_tf_lite_parser_1_1_tf_lite_parser_options.xhtml">armnnTfLiteParser::ITfLiteParser::TfLiteParserOptions</a> options;</div><div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160;    options.<a class="code" href="structarmnn_tf_lite_parser_1_1_i_tf_lite_parser_1_1_tf_lite_parser_options.xhtml#a8675330934407606641327cec4bb29f4">m_StandInLayerForUnsupported</a> = params.<a class="code" href="struct_execute_network_params.xhtml#a5c7f0c083da98e7b6e9ba79d2fcd985d">m_ParseUnsupported</a>;</div><div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160;    options.<a class="code" href="structarmnn_tf_lite_parser_1_1_i_tf_lite_parser_1_1_tf_lite_parser_options.xhtml#ad9e70e3709afbaa45bf9c3cfa0148b2b">m_InferAndValidate</a> = params.<a class="code" href="struct_execute_network_params.xhtml#a2a245a63e87f363df491ad8c35be54c5">m_InferOutputShape</a>;</div><div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;</div><div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;    m_Parser = <a class="code" href="classarmnn_tf_lite_parser_1_1_i_tf_lite_parser.xhtml#a9932449a89a62cfcfd72a4fedbee1ab7">armnnTfLiteParser::ITfLiteParser::Create</a>(options);</div><div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;}</div><div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;</div><div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;<a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a> ArmNNExecutor::TfliteParser::CreateNetwork(<span class="keyword">const</span> <a class="code" href="struct_execute_network_params.xhtml">ExecuteNetworkParams</a>&amp; params)</div><div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;{</div><div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;    <span class="keyword">const</span> std::string&amp; modelPath = params.<a class="code" href="struct_execute_network_params.xhtml#a4fa312cf0d60fbd3988a7c76ab8e2980">m_ModelPath</a>;</div><div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;    <span class="keywordflow">return</span> m_Parser-&gt;CreateNetworkFromBinaryFile(modelPath.c_str());</div><div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;}</div><div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;</div><div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;<a class="code" href="namespacearmnn.xhtml#a280670a263dc4fd40491f6d0a2737f44">armnn::BindingPointInfo</a> ArmNNExecutor::TfliteParser::GetInputBindingPointInfo(<span class="keywordtype">size_t</span> subgraphId,</div><div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160;                                                                              <span class="keyword">const</span> std::string&amp; inputName)</div><div class="line"><a name="l00758"></a><span class="lineno">  758</span>&#160;{</div><div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160;    <span class="keywordflow">return</span> m_Parser-&gt;GetNetworkInputBindingInfo(subgraphId, inputName);</div><div class="line"><a name="l00760"></a><span class="lineno">  760</span>&#160;}</div><div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;</div><div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;<a class="code" href="namespacearmnn.xhtml#a280670a263dc4fd40491f6d0a2737f44">armnn::BindingPointInfo</a> ArmNNExecutor::TfliteParser::GetOutputBindingPointInfo(<span class="keywordtype">size_t</span> subgraphId,</div><div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160;                                                                               <span class="keyword">const</span> std::string&amp; outputName)</div><div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160;{</div><div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;    <span class="keywordflow">return</span> m_Parser-&gt;GetNetworkOutputBindingInfo(subgraphId, outputName);</div><div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160;}</div><div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160;</div><div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160;</div><div class="line"><a name="l00770"></a><span class="lineno">  770</span>&#160;<span class="preprocessor">#if defined(ARMNN_ONNX_PARSER)</span></div><div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160;ArmNNExecutor::OnnxParser::OnnxParser() : m_Parser(<a class="code" href="classarmnn_onnx_parser_1_1_i_onnx_parser.xhtml#af9b9254fb8a084f0db4f7deff0498b20">armnnOnnxParser::IOnnxParser::Create</a>()){}</div><div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160;</div><div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160;<a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a> ArmNNExecutor::OnnxParser::CreateNetwork(<span class="keyword">const</span> <a class="code" href="struct_execute_network_params.xhtml">ExecuteNetworkParams</a>&amp; params)</div><div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160;{</div><div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160;    <span class="keyword">const</span> std::string&amp; modelPath = params.<a class="code" href="struct_execute_network_params.xhtml#a4fa312cf0d60fbd3988a7c76ab8e2980">m_ModelPath</a>;</div><div class="line"><a name="l00776"></a><span class="lineno">  776</span>&#160;    m_Parser = <a class="code" href="classarmnn_onnx_parser_1_1_i_onnx_parser.xhtml#af9b9254fb8a084f0db4f7deff0498b20">armnnOnnxParser::IOnnxParser::Create</a>();</div><div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160;    std::map&lt;std::string, armnn::TensorShape&gt; inputShapes;</div><div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160;    <span class="keywordflow">if</span>(!params.<a class="code" href="struct_execute_network_params.xhtml#aefe5049ae533ea46d0ddaee6be93f646">m_InputTensorShapes</a>.empty())</div><div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160;    {</div><div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">size_t</span> numInputShapes = params.<a class="code" href="struct_execute_network_params.xhtml#aefe5049ae533ea46d0ddaee6be93f646">m_InputTensorShapes</a>.size();</div><div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">size_t</span> numInputBindings = params.<a class="code" href="struct_execute_network_params.xhtml#aaf3c7f286030842a31025309ab6a8329">m_InputNames</a>.size();</div><div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160;        <span class="keywordflow">if</span>(numInputShapes &lt; numInputBindings)</div><div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160;        {</div><div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;            <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_exception.xhtml">armnn::Exception</a>(</div><div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160;                    fmt::format(<span class="stringliteral">&quot;Not every input has its tensor shape specified: expected={0}, got={1}&quot;</span>,</div><div class="line"><a name="l00786"></a><span class="lineno">  786</span>&#160;                                numInputBindings, numInputShapes));</div><div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160;        }</div><div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160;</div><div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; numInputShapes; i++)</div><div class="line"><a name="l00790"></a><span class="lineno">  790</span>&#160;        {</div><div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160;            inputShapes[params.<a class="code" href="struct_execute_network_params.xhtml#aaf3c7f286030842a31025309ab6a8329">m_InputNames</a>[i]] = params.<a class="code" href="struct_execute_network_params.xhtml#aefe5049ae533ea46d0ddaee6be93f646">m_InputTensorShapes</a>[i];</div><div class="line"><a name="l00792"></a><span class="lineno">  792</span>&#160;        }</div><div class="line"><a name="l00793"></a><span class="lineno">  793</span>&#160;</div><div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160;        <span class="keywordflow">return</span> params.<a class="code" href="struct_execute_network_params.xhtml#a6bf2f586c403977d31c7d32d371918cf">m_IsModelBinary</a> ?</div><div class="line"><a name="l00795"></a><span class="lineno">  795</span>&#160;               m_Parser-&gt;CreateNetworkFromBinaryFile(modelPath.c_str(), inputShapes) :</div><div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160;               m_Parser-&gt;CreateNetworkFromTextFile(modelPath.c_str(), inputShapes);</div><div class="line"><a name="l00797"></a><span class="lineno">  797</span>&#160;    }</div><div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;</div><div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160;    <span class="comment">// Handle text and binary input differently by calling the corresponding parser function</span></div><div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;    <span class="keywordflow">return</span> params.<a class="code" href="struct_execute_network_params.xhtml#a6bf2f586c403977d31c7d32d371918cf">m_IsModelBinary</a> ?</div><div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;           m_Parser-&gt;CreateNetworkFromBinaryFile(params.<a class="code" href="struct_execute_network_params.xhtml#a4fa312cf0d60fbd3988a7c76ab8e2980">m_ModelPath</a>.c_str()) :</div><div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;           m_Parser-&gt;CreateNetworkFromTextFile(params.<a class="code" href="struct_execute_network_params.xhtml#a4fa312cf0d60fbd3988a7c76ab8e2980">m_ModelPath</a>.c_str());</div><div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;}</div><div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;</div><div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;<a class="code" href="namespacearmnn.xhtml#a280670a263dc4fd40491f6d0a2737f44">armnn::BindingPointInfo</a> ArmNNExecutor::OnnxParser::GetInputBindingPointInfo(<span class="keywordtype">size_t</span>, <span class="keyword">const</span> std::string&amp; inputName)</div><div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160;{</div><div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160;    <span class="keywordflow">return</span> m_Parser-&gt;GetNetworkInputBindingInfo(inputName);</div><div class="line"><a name="l00808"></a><span class="lineno">  808</span>&#160;}</div><div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160;</div><div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160;<a class="code" href="namespacearmnn.xhtml#a280670a263dc4fd40491f6d0a2737f44">armnn::BindingPointInfo</a> ArmNNExecutor::OnnxParser::GetOutputBindingPointInfo(<span class="keywordtype">size_t</span>, <span class="keyword">const</span> std::string&amp; outputName)</div><div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;{</div><div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;    <span class="keywordflow">return</span> m_Parser-&gt;GetNetworkOutputBindingInfo(outputName);</div><div class="line"><a name="l00813"></a><span class="lineno">  813</span>&#160;}</div><div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160;<span class="preprocessor">#endif</span></div><div class="ttc" id="structarmnn_1_1_optimizer_options_xhtml_a71194277c60153a5f86539f5d39f01db"><div class="ttname"><a href="structarmnn_1_1_optimizer_options.xhtml#a71194277c60153a5f86539f5d39f01db">armnn::OptimizerOptions::m_ModelOptions</a></div><div class="ttdeci">ModelOptions m_ModelOptions</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00227">INetwork.hpp:227</a></div></div>
<div class="ttc" id="struct_execute_network_params_xhtml_a4fa312cf0d60fbd3988a7c76ab8e2980"><div class="ttname"><a href="struct_execute_network_params.xhtml#a4fa312cf0d60fbd3988a7c76ab8e2980">ExecuteNetworkParams::m_ModelPath</a></div><div class="ttdeci">std::string m_ModelPath</div><div class="ttdef"><b>Definition:</b> <a href="_execute_network_params_8hpp_source.xhtml#l00045">ExecuteNetworkParams.hpp:45</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_runtime_xhtml_ad44ecd3700748dc30dc4bbe34ba5bde7"><div class="ttname"><a href="classarmnn_1_1_i_runtime.xhtml#ad44ecd3700748dc30dc4bbe34ba5bde7">armnn::IRuntime::Create</a></div><div class="ttdeci">static IRuntimePtr Create(const CreationOptions &amp;options)</div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00049">Runtime.cpp:49</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_connectable_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_i_connectable_layer.xhtml">armnn::IConnectableLayer</a></div><div class="ttdoc">Interface for a layer that is connectable to other layers via InputSlots and OutputSlots. </div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00068">INetwork.hpp:68</a></div></div>
<div class="ttc" id="_i_async_execution_callback_8hpp_xhtml"><div class="ttname"><a href="_i_async_execution_callback_8hpp.xhtml">IAsyncExecutionCallback.hpp</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a441621f00fd5665898c81a5ae3473c6b"><div class="ttname"><a href="namespacearmnn.xhtml#a441621f00fd5665898c81a5ae3473c6b">armnn::GetTimeDuration</a></div><div class="ttdeci">std::chrono::duration&lt; double, std::milli &gt; GetTimeDuration(std::chrono::high_resolution_clock::time_point start_time)</div><div class="ttdef"><b>Definition:</b> <a href="_timer_8hpp_source.xhtml#l00019">Timer.hpp:19</a></div></div>
<div class="ttc" id="_network_execution_utils_8cpp_xhtml_a0d853d3a7b138f39cc775c26e2c0821a"><div class="ttname"><a href="_network_execution_utils_8cpp.xhtml#a0d853d3a7b138f39cc775c26e2c0821a">LogAndThrow</a></div><div class="ttdeci">void LogAndThrow(std::string eMsg)</div><div class="ttdef"><b>Definition:</b> <a href="_network_execution_utils_8cpp_source.xhtml#l00075">NetworkExecutionUtils.cpp:75</a></div></div>
<div class="ttc" id="structarmnn_1_1_optimizer_options_xhtml_a9416d94a8aad7cdfa47eb35e825cbda5"><div class="ttname"><a href="structarmnn_1_1_optimizer_options.xhtml#a9416d94a8aad7cdfa47eb35e825cbda5">armnn::OptimizerOptions::m_shapeInferenceMethod</a></div><div class="ttdeci">ShapeInferenceMethod m_shapeInferenceMethod</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00221">INetwork.hpp:221</a></div></div>
<div class="ttc" id="classarmnn_1_1experimental_1_1_async_callback_manager_xhtml_a27aff9e4e5d9bce49988a2de6a1ebc59"><div class="ttname"><a href="classarmnn_1_1experimental_1_1_async_callback_manager.xhtml#a27aff9e4e5d9bce49988a2de6a1ebc59">armnn::experimental::AsyncCallbackManager::GetNewCallback</a></div><div class="ttdeci">std::shared_ptr&lt; AsyncExecutionCallback &gt; GetNewCallback()</div><div class="ttdef"><b>Definition:</b> <a href="_async_execution_callback_8cpp_source.xhtml#l00046">AsyncExecutionCallback.cpp:46</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_xhtml_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">armnn::TensorInfo::GetShape</a></div><div class="ttdeci">const TensorShape &amp; GetShape() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00191">Tensor.hpp:191</a></div></div>
<div class="ttc" id="structarmnn_tf_lite_parser_1_1_i_tf_lite_parser_1_1_tf_lite_parser_options_xhtml"><div class="ttname"><a href="structarmnn_tf_lite_parser_1_1_i_tf_lite_parser_1_1_tf_lite_parser_options.xhtml">armnnTfLiteParser::ITfLiteParser::TfLiteParserOptions</a></div><div class="ttdef"><b>Definition:</b> <a href="_i_tf_lite_parser_8hpp_source.xhtml#l00029">ITfLiteParser.hpp:29</a></div></div>
<div class="ttc" id="classarmnn_1_1_optional_xhtml"><div class="ttname"><a href="classarmnn_1_1_optional.xhtml">armnn::Optional&lt; std::string &gt;</a></div></div>
<div class="ttc" id="struct_execute_network_params_xhtml_ac828647e0c753c3727c8c1f81939f7e4"><div class="ttname"><a href="struct_execute_network_params.xhtml#ac828647e0c753c3727c8c1f81939f7e4">ExecuteNetworkParams::m_DontPrintOutputs</a></div><div class="ttdeci">bool m_DontPrintOutputs</div><div class="ttdef"><b>Definition:</b> <a href="_execute_network_params_8hpp_source.xhtml#l00053">ExecuteNetworkParams.hpp:53</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_xhtml"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00152">Tensor.hpp:152</a></div></div>
<div class="ttc" id="struct_execute_network_params_xhtml_ab17deb382179697b4702cc4f909e71f8"><div class="ttname"><a href="struct_execute_network_params.xhtml#ab17deb382179697b4702cc4f909e71f8">ExecuteNetworkParams::m_OutputDetailsOnlyToStdOut</a></div><div class="ttdeci">bool m_OutputDetailsOnlyToStdOut</div><div class="ttdef"><b>Definition:</b> <a href="_execute_network_params_8hpp_source.xhtml#l00048">ExecuteNetworkParams.hpp:48</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a></div></div>
<div class="ttc" id="struct_execute_network_params_xhtml_ae43cf4b5df0068ee6a9151c98947248b"><div class="ttname"><a href="struct_execute_network_params.xhtml#ae43cf4b5df0068ee6a9151c98947248b">ExecuteNetworkParams::m_DynamicBackendsPath</a></div><div class="ttdeci">std::string m_DynamicBackendsPath</div><div class="ttdef"><b>Definition:</b> <a href="_execute_network_params_8hpp_source.xhtml#l00031">ExecuteNetworkParams.hpp:31</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">armnn::LayerType::Output</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_xhtml_abcbdfb544ece4c31d0b37715ad0f3be0"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml#abcbdfb544ece4c31d0b37715ad0f3be0">armnn::TensorInfo::GetNumBytes</a></div><div class="ttdeci">unsigned int GetNumBytes() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.xhtml#l00427">Tensor.cpp:427</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ae060224135f57f926cbda9d2732a2b1fa566666dfc3a9a82da0d7b0816b19f278"><div class="ttname"><a href="namespacearmnn.xhtml#ae060224135f57f926cbda9d2732a2b1fa566666dfc3a9a82da0d7b0816b19f278">armnn::ProfilingDetailsMethod::DetailsOnly</a></div></div>
<div class="ttc" id="struct_execute_network_params_xhtml_aefe5049ae533ea46d0ddaee6be93f646"><div class="ttname"><a href="struct_execute_network_params.xhtml#aefe5049ae533ea46d0ddaee6be93f646">ExecuteNetworkParams::m_InputTensorShapes</a></div><div class="ttdeci">std::vector&lt; armnn::TensorShape &gt; m_InputTensorShapes</div><div class="ttdef"><b>Definition:</b> <a href="_execute_network_params_8hpp_source.xhtml#l00043">ExecuteNetworkParams.hpp:43</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#l00205">Logging.hpp:205</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml">armnn::INetwork</a></div><div class="ttdoc">Main network class which provides the interface for building up a neural network. ...</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00246">INetwork.hpp:246</a></div></div>
<div class="ttc" id="structarmnn_tf_lite_parser_1_1_i_tf_lite_parser_1_1_tf_lite_parser_options_xhtml_ad9e70e3709afbaa45bf9c3cfa0148b2b"><div class="ttname"><a href="structarmnn_tf_lite_parser_1_1_i_tf_lite_parser_1_1_tf_lite_parser_options.xhtml#ad9e70e3709afbaa45bf9c3cfa0148b2b">armnnTfLiteParser::ITfLiteParser::TfLiteParserOptions::m_InferAndValidate</a></div><div class="ttdeci">bool m_InferAndValidate</div><div class="ttdef"><b>Definition:</b> <a href="_i_tf_lite_parser_8hpp_source.xhtml#l00038">ITfLiteParser.hpp:38</a></div></div>
<div class="ttc" id="classarmnn_deserializer_1_1_i_deserializer_xhtml_af116abd698a7feb92876ae48917005a4"><div class="ttname"><a href="classarmnn_deserializer_1_1_i_deserializer.xhtml#af116abd698a7feb92876ae48917005a4">armnnDeserializer::IDeserializer::Create</a></div><div class="ttdeci">static IDeserializerPtr Create()</div><div class="ttdef"><b>Definition:</b> <a href="_deserializer_8cpp_source.xhtml#l00047">Deserializer.cpp:47</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::DataType::QAsymmS8</a></div></div>
<div class="ttc" id="structarmnn_1_1_optimizer_options_xhtml_a11f463726addcc1d2845266997d79e9c"><div class="ttname"><a href="structarmnn_1_1_optimizer_options.xhtml#a11f463726addcc1d2845266997d79e9c">armnn::OptimizerOptions::m_ReduceFp32ToBf16</a></div><div class="ttdeci">bool m_ReduceFp32ToBf16</div><div class="ttdoc">Reduces all Fp32 operators in the model to Bf16 for faster processing. </div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00218">INetwork.hpp:218</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_aa01bce88f89975a5a031db4cc8861527"><div class="ttname"><a href="namespacearmnn.xhtml#aa01bce88f89975a5a031db4cc8861527">armnn::InputTensors</a></div><div class="ttdeci">std::vector&lt; std::pair&lt; LayerBindingId, class ConstTensor &gt; &gt; InputTensors</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00392">Tensor.hpp:392</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6ae1b3c9c6087a93b07c83e0b04f377a8d"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6ae1b3c9c6087a93b07c83e0b04f377a8d">armnn::DataType::Signed64</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ac895f6f6897ce335b7b433201bae0b48"><div class="ttname"><a href="namespacearmnn.xhtml#ac895f6f6897ce335b7b433201bae0b48">armnn::GetTimeNow</a></div><div class="ttdeci">std::chrono::high_resolution_clock::time_point GetTimeNow()</div><div class="ttdef"><b>Definition:</b> <a href="_timer_8hpp_source.xhtml#l00014">Timer.hpp:14</a></div></div>
<div class="ttc" id="class_arm_n_n_executor_xhtml_ac65a3d900d923c4582e059c2281e70e3"><div class="ttname"><a href="class_arm_n_n_executor.xhtml#ac65a3d900d923c4582e059c2281e70e3">ArmNNExecutor::CompareAndPrintResult</a></div><div class="ttdeci">void CompareAndPrintResult(std::vector&lt; const void *&gt; otherOutput) override</div><div class="ttdoc">Compare the output with the result of another IExecutor. </div><div class="ttdef"><b>Definition:</b> <a href="_arm_n_n_executor_8cpp_source.xhtml#l00671">ArmNNExecutor.cpp:671</a></div></div>
<div class="ttc" id="struct_execute_network_params_xhtml_abf3cb45be3828b72b4ac08f87ac6c779"><div class="ttname"><a href="struct_execute_network_params.xhtml#abf3cb45be3828b72b4ac08f87ac6c779">ExecuteNetworkParams::m_Concurrent</a></div><div class="ttdeci">bool m_Concurrent</div><div class="ttdef"><b>Definition:</b> <a href="_execute_network_params_8hpp_source.xhtml#l00029">ExecuteNetworkParams.hpp:29</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml"><div class="ttname"><a href="namespacearmnn.xhtml">armnn</a></div><div class="ttdoc">Copyright (c) 2021 ARM Limited and Contributors. </div><div class="ttdef"><b>Definition:</b> <a href="01__00__quick__start_8dox_source.xhtml#l00006">01_00_quick_start.dox:6</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
<div class="ttc" id="struct_execute_network_params_xhtml_a5c7f0c083da98e7b6e9ba79d2fcd985d"><div class="ttname"><a href="struct_execute_network_params.xhtml#a5c7f0c083da98e7b6e9ba79d2fcd985d">ExecuteNetworkParams::m_ParseUnsupported</a></div><div class="ttdeci">bool m_ParseUnsupported</div><div class="ttdef"><b>Definition:</b> <a href="_execute_network_params_8hpp_source.xhtml#l00051">ExecuteNetworkParams.hpp:51</a></div></div>
<div class="ttc" id="struct_execute_network_params_xhtml_a74d346297c55b516908c541030adc88d"><div class="ttname"><a href="struct_execute_network_params.xhtml#a74d346297c55b516908c541030adc88d">ExecuteNetworkParams::m_OutputTensorFiles</a></div><div class="ttdeci">std::vector&lt; std::string &gt; m_OutputTensorFiles</div><div class="ttdef"><b>Definition:</b> <a href="_execute_network_params_8hpp_source.xhtml#l00050">ExecuteNetworkParams.hpp:50</a></div></div>
<div class="ttc" id="struct_execute_network_params_xhtml_a7adc5dcfe3d76ac489f253c4d5f439c8"><div class="ttname"><a href="struct_execute_network_params.xhtml#a7adc5dcfe3d76ac489f253c4d5f439c8">ExecuteNetworkParams::m_ThreadPoolSize</a></div><div class="ttdeci">size_t m_ThreadPoolSize</div><div class="ttdef"><b>Definition:</b> <a href="_execute_network_params_8hpp_source.xhtml#l00062">ExecuteNetworkParams.hpp:62</a></div></div>
<div class="ttc" id="classarmnn_tf_lite_parser_1_1_i_tf_lite_parser_xhtml_a9932449a89a62cfcfd72a4fedbee1ab7"><div class="ttname"><a href="classarmnn_tf_lite_parser_1_1_i_tf_lite_parser.xhtml#a9932449a89a62cfcfd72a4fedbee1ab7">armnnTfLiteParser::ITfLiteParser::Create</a></div><div class="ttdeci">static ITfLiteParserPtr Create(const armnn::Optional&lt; TfLiteParserOptions &gt; &amp;options=armnn::EmptyOptional())</div><div class="ttdef"><b>Definition:</b> <a href="_tf_lite_parser_8cpp_source.xhtml#l00063">TfLiteParser.cpp:63</a></div></div>
<div class="ttc" id="struct_execute_network_params_xhtml_ae96fc745917a3a0c0de7a818c9a05012"><div class="ttname"><a href="struct_execute_network_params.xhtml#ae96fc745917a3a0c0de7a818c9a05012">ExecuteNetworkParams::m_OutputDetailsToStdOut</a></div><div class="ttdeci">bool m_OutputDetailsToStdOut</div><div class="ttdef"><b>Definition:</b> <a href="_execute_network_params_8hpp_source.xhtml#l00047">ExecuteNetworkParams.hpp:47</a></div></div>
<div class="ttc" id="structarmnn_deserializer_1_1_binding_point_info_xhtml"><div class="ttname"><a href="structarmnn_deserializer_1_1_binding_point_info.xhtml">armnnDeserializer::BindingPointInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_i_deserializer_8hpp_source.xhtml#l00018">IDeserializer.hpp:18</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ab8cf8f9fb6792e654c2d8d8382f6f01b"><div class="ttname"><a href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">armnn::LayerBindingId</a></div><div class="ttdeci">int LayerBindingId</div><div class="ttdoc">Type of identifiers for bindable layers (inputs, outputs). </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00290">Types.hpp:290</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ae060224135f57f926cbda9d2732a2b1f"><div class="ttname"><a href="namespacearmnn.xhtml#ae060224135f57f926cbda9d2732a2b1f">armnn::ProfilingDetailsMethod</a></div><div class="ttdeci">ProfilingDetailsMethod</div><div class="ttdoc">Define the behaviour of the internal profiler when outputting network details. </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00071">Types.hpp:71</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a81b5ff8545adad19a1c9d4ca076d552c"><div class="ttname"><a href="namespacearmnn.xhtml#a81b5ff8545adad19a1c9d4ca076d552c">armnn::GetDataTypeName</a></div><div class="ttdeci">constexpr const char * GetDataTypeName(DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.xhtml#l00202">TypesUtils.hpp:202</a></div></div>
<div class="ttc" id="structarmnn_1_1_i_network_properties_xhtml"><div class="ttname"><a href="structarmnn_1_1_i_network_properties.xhtml">armnn::INetworkProperties</a></div><div class="ttdef"><b>Definition:</b> <a href="_i_runtime_8hpp_source.xhtml#l00035">IRuntime.hpp:35</a></div></div>
<div class="ttc" id="structarmnn_1_1_base_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_base_descriptor.xhtml">armnn::BaseDescriptor</a></div><div class="ttdoc">Base class for all descriptors. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00022">Descriptors.hpp:22</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_xhtml"><div class="ttname"><a href="classarmnn_1_1_tensor.xhtml">armnn::Tensor</a></div><div class="ttdoc">A tensor defined by a TensorInfo (shape and data type) and a mutable backing store. </div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00319">Tensor.hpp:319</a></div></div>
<div class="ttc" id="structarmnn_1_1_optimizer_options_xhtml_a6e1a42622ca43dafc7ba8e684c016eb4"><div class="ttname"><a href="structarmnn_1_1_optimizer_options.xhtml#a6e1a42622ca43dafc7ba8e684c016eb4">armnn::OptimizerOptions::m_ReduceFp32ToFp16</a></div><div class="ttdeci">bool m_ReduceFp32ToFp16</div><div class="ttdoc">Reduces all Fp32 operators in the model to Fp16 for faster processing. </div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00208">INetwork.hpp:208</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_strategy_xhtml"><div class="ttname"><a href="classarmnn_1_1_i_strategy.xhtml">armnn::IStrategy</a></div><div class="ttdef"><b>Definition:</b> <a href="_i_strategy_8hpp_source.xhtml#l00016">IStrategy.hpp:16</a></div></div>
<div class="ttc" id="struct_execute_network_params_xhtml_a6bf2f586c403977d31c7d32d371918cf"><div class="ttname"><a href="struct_execute_network_params.xhtml#a6bf2f586c403977d31c7d32d371918cf">ExecuteNetworkParams::m_IsModelBinary</a></div><div class="ttdeci">bool m_IsModelBinary</div><div class="ttdef"><b>Definition:</b> <a href="_execute_network_params_8hpp_source.xhtml#l00040">ExecuteNetworkParams.hpp:40</a></div></div>
<div class="ttc" id="structarmnn_1_1_optimizer_options_xhtml_a69eb14082d40fa0a3cff50457344a5e0"><div class="ttname"><a href="structarmnn_1_1_optimizer_options.xhtml#a69eb14082d40fa0a3cff50457344a5e0">armnn::OptimizerOptions::m_Debug</a></div><div class="ttdeci">bool m_Debug</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00211">INetwork.hpp:211</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ae060224135f57f926cbda9d2732a2b1fa497ab261a562e316736c2cb59b839d32"><div class="ttname"><a href="namespacearmnn.xhtml#ae060224135f57f926cbda9d2732a2b1fa497ab261a562e316736c2cb59b839d32">armnn::ProfilingDetailsMethod::DetailsWithEvents</a></div></div>
<div class="ttc" id="struct_output_write_info_xhtml"><div class="ttname"><a href="struct_output_write_info.xhtml">OutputWriteInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_network_execution_utils_8hpp_source.xhtml#l00187">NetworkExecutionUtils.hpp:187</a></div></div>
<div class="ttc" id="struct_execute_network_params_xhtml_a6e4eff6a5f40cb026ea76d3c13c96341"><div class="ttname"><a href="struct_execute_network_params.xhtml#a6e4eff6a5f40cb026ea76d3c13c96341">ExecuteNetworkParams::m_Iterations</a></div><div class="ttdeci">size_t m_Iterations</div><div class="ttdef"><b>Definition:</b> <a href="_execute_network_params_8hpp_source.xhtml#l00044">ExecuteNetworkParams.hpp:44</a></div></div>
<div class="ttc" id="struct_execute_network_params_xhtml_a99c7360a4d4b248b3f10607bc5d2fe7b"><div class="ttname"><a href="struct_execute_network_params.xhtml#a99c7360a4d4b248b3f10607bc5d2fe7b">ExecuteNetworkParams::m_GenerateTensorData</a></div><div class="ttdeci">bool m_GenerateTensorData</div><div class="ttdef"><b>Definition:</b> <a href="_execute_network_params_8hpp_source.xhtml#l00037">ExecuteNetworkParams.hpp:37</a></div></div>
<div class="ttc" id="struct_execute_network_params_xhtml"><div class="ttname"><a href="struct_execute_network_params.xhtml">ExecuteNetworkParams</a></div><div class="ttdoc">Holds all parameters necessary to execute a network Check ExecuteNetworkProgramOptions.cpp for a description of each parameter. </div><div class="ttdef"><b>Definition:</b> <a href="_execute_network_params_8hpp_source.xhtml#l00017">ExecuteNetworkParams.hpp:17</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a82e98ef05fd67036d1195ba17174d685"><div class="ttname"><a href="namespacearmnn.xhtml#a82e98ef05fd67036d1195ba17174d685">armnn::Optimize</a></div><div class="ttdeci">IOptimizedNetworkPtr Optimize(const INetwork &amp;network, const std::vector&lt; BackendId &gt; &amp;backendPreferences, const IDeviceSpec &amp;deviceSpec, const OptimizerOptions &amp;options=OptimizerOptions(), Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; messages=EmptyOptional())</div><div class="ttdoc">Create an optimized version of the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01864">Network.cpp:1864</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_xhtml_a770b51078da02f44a819e9f95d8058b5"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml#a770b51078da02f44a819e9f95d8058b5">armnn::TensorInfo::GetQuantizationOffset</a></div><div class="ttdeci">int32_t GetQuantizationOffset() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.xhtml#l00478">Tensor.cpp:478</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_xhtml_a047ca888c43bd7fb5702853bf72410d0"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml#a047ca888c43bd7fb5702853bf72410d0">armnn::TensorInfo::GetQuantizationScale</a></div><div class="ttdeci">float GetQuantizationScale() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.xhtml#l00461">Tensor.cpp:461</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_xhtml_aea909c7327109228ef618d459015def3"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml#aea909c7327109228ef618d459015def3">armnn::TensorInfo::GetDataType</a></div><div class="ttdeci">DataType GetDataType() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00198">Tensor.hpp:198</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_optimized_network_xhtml"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.xhtml">armnn::IOptimizedNetwork</a></div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00791">INetwork.hpp:791</a></div></div>
<div class="ttc" id="_arm_n_n_executor_8hpp_xhtml"><div class="ttname"><a href="_arm_n_n_executor_8hpp.xhtml">ArmNNExecutor.hpp</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="struct_execute_network_params_xhtml_a318999172ae5197f56326b12d29104b7"><div class="ttname"><a href="struct_execute_network_params.xhtml#a318999172ae5197f56326b12d29104b7">ExecuteNetworkParams::m_ThresholdTime</a></div><div class="ttdeci">double m_ThresholdTime</div><div class="ttdef"><b>Definition:</b> <a href="_execute_network_params_8hpp_source.xhtml#l00057">ExecuteNetworkParams.hpp:57</a></div></div>
<div class="ttc" id="classarmnn_1_1_const_tensor_xhtml"><div class="ttname"><a href="classarmnn_1_1_const_tensor.xhtml">armnn::ConstTensor</a></div><div class="ttdoc">A tensor defined by a TensorInfo (shape and data type) and an immutable backing store. </div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00327">Tensor.hpp:327</a></div></div>
<div class="ttc" id="struct_execute_network_params_xhtml_aaf3c7f286030842a31025309ab6a8329"><div class="ttname"><a href="struct_execute_network_params.xhtml#aaf3c7f286030842a31025309ab6a8329">ExecuteNetworkParams::m_InputNames</a></div><div class="ttdeci">std::vector&lt; std::string &gt; m_InputNames</div><div class="ttdef"><b>Definition:</b> <a href="_execute_network_params_8hpp_source.xhtml#l00041">ExecuteNetworkParams.hpp:41</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_a8f091a512915d1cb29a4ebf13dfc53ea"><div class="ttname"><a href="namespacearmnn.xhtml#a8f091a512915d1cb29a4ebf13dfc53ea">armnn::OutputTensors</a></div><div class="ttdeci">std::vector&lt; std::pair&lt; LayerBindingId, class Tensor &gt; &gt; OutputTensors</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00393">Tensor.hpp:393</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdoc">enumeration </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00042">Types.hpp:42</a></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#l00239">INetwork.hpp:239</a></div></div>
<div class="ttc" id="structarmnn_1_1_optimizer_options_xhtml_a1b1892da2aaf7eaedaa38671d56b7f19"><div class="ttname"><a href="structarmnn_1_1_optimizer_options.xhtml#a1b1892da2aaf7eaedaa38671d56b7f19">armnn::OptimizerOptions::m_ProfilingEnabled</a></div><div class="ttdeci">bool m_ProfilingEnabled</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00230">INetwork.hpp:230</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a14fcd7f88d11cea0a018269dca5f9277a1131a914388fac73e5f07b0ba0aad523"><div class="ttname"><a href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277a1131a914388fac73e5f07b0ba0aad523">armnn::MemorySource::Malloc</a></div></div>
<div class="ttc" id="structarmnn_1_1_optimizer_options_xhtml"><div class="ttname"><a href="structarmnn_1_1_optimizer_options.xhtml">armnn::OptimizerOptions</a></div><div class="ttdoc">ArmNN performs an optimization on each model/network before it gets loaded for execution. </div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00127">INetwork.hpp:127</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">armnn::DataType::BFloat16</a></div></div>
<div class="ttc" id="namespacestd_1_1chrono_xhtml"><div class="ttname"><a href="namespacestd_1_1chrono.xhtml">chrono</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_connectable_layer_xhtml_adceb04ae84c524e4d01881e3754a4d59"><div class="ttname"><a href="classarmnn_1_1_i_connectable_layer.xhtml#adceb04ae84c524e4d01881e3754a4d59">armnn::IConnectableLayer::GetType</a></div><div class="ttdeci">virtual LayerType GetType() const =0</div><div class="ttdoc">Returns the armnn::LayerType of this layer. </div></div>
<div class="ttc" id="struct_execute_network_params_xhtml_ae3c3ae097395afea488cd3e0244269fa"><div class="ttname"><a href="struct_execute_network_params.xhtml#ae3c3ae097395afea488cd3e0244269fa">ExecuteNetworkParams::m_InputTensorDataFilePaths</a></div><div class="ttdeci">std::vector&lt; std::string &gt; m_InputTensorDataFilePaths</div><div class="ttdef"><b>Definition:</b> <a href="_execute_network_params_8hpp_source.xhtml#l00042">ExecuteNetworkParams.hpp:42</a></div></div>
<div class="ttc" id="class_arm_n_n_executor_xhtml_a21887e76c6b67797ada411a163d81a62"><div class="ttname"><a href="class_arm_n_n_executor.xhtml#a21887e76c6b67797ada411a163d81a62">ArmNNExecutor::PrintNetworkInfo</a></div><div class="ttdeci">void PrintNetworkInfo() override</div><div class="ttdoc">Print available information about the network. </div><div class="ttdef"><b>Definition:</b> <a href="_arm_n_n_executor_8cpp_source.xhtml#l00217">ArmNNExecutor.cpp:217</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_optimized_network_xhtml_a72032c65bf8b8acf09b564b7d80078c5"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.xhtml#a72032c65bf8b8acf09b564b7d80078c5">armnn::IOptimizedNetwork::ExecuteStrategy</a></div><div class="ttdeci">void ExecuteStrategy(IStrategy &amp;strategy) const</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02956">Network.cpp:2956</a></div></div>
<div class="ttc" id="structarmnn_1_1_i_runtime_1_1_creation_options_xhtml"><div class="ttname"><a href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml">armnn::IRuntime::CreationOptions</a></div><div class="ttdef"><b>Definition:</b> <a href="_i_runtime_8hpp_source.xhtml#l00077">IRuntime.hpp:77</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="structarmnn_1_1_i_runtime_1_1_creation_options_xhtml_ae43cf4b5df0068ee6a9151c98947248b"><div class="ttname"><a href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml#ae43cf4b5df0068ee6a9151c98947248b">armnn::IRuntime::CreationOptions::m_DynamicBackendsPath</a></div><div class="ttdeci">std::string m_DynamicBackendsPath</div><div class="ttdoc">Setting this value will override the paths set by the DYNAMIC_BACKEND_PATHS compiler directive Only a...</div><div class="ttdef"><b>Definition:</b> <a href="_i_runtime_8hpp_source.xhtml#l00098">IRuntime.hpp:98</a></div></div>
<div class="ttc" id="structarmnn_1_1_i_runtime_1_1_creation_options_xhtml_a2fe8c3eadf4f4f9c0c664a24a2a298f9"><div class="ttname"><a href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml#a2fe8c3eadf4f4f9c0c664a24a2a298f9">armnn::IRuntime::CreationOptions::m_EnableGpuProfiling</a></div><div class="ttdeci">bool m_EnableGpuProfiling</div><div class="ttdoc">Setting this flag will allow the user to obtain GPU profiling information from the runtime...</div><div class="ttdef"><b>Definition:</b> <a href="_i_runtime_8hpp_source.xhtml#l00093">IRuntime.hpp:93</a></div></div>
<div class="ttc" id="structarmnn_1_1_empty_optional_xhtml"><div class="ttname"><a href="structarmnn_1_1_empty_optional.xhtml">armnn::EmptyOptional</a></div><div class="ttdoc">EmptyOptional is used to initialize the Optional class in case we want to have default value for an O...</div><div class="ttdef"><b>Definition:</b> <a href="_optional_8hpp_source.xhtml#l00032">Optional.hpp:32</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a280670a263dc4fd40491f6d0a2737f44"><div class="ttname"><a href="namespacearmnn.xhtml#a280670a263dc4fd40491f6d0a2737f44">armnn::BindingPointInfo</a></div><div class="ttdeci">std::pair&lt; armnn::LayerBindingId, armnn::TensorInfo &gt; BindingPointInfo</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00274">Tensor.hpp:274</a></div></div>
<div class="ttc" id="struct_execute_network_params_xhtml_a1697b9751b4ba381f89b8c81cd9dfc3c"><div class="ttname"><a href="struct_execute_network_params.xhtml#a1697b9751b4ba381f89b8c81cd9dfc3c">ExecuteNetworkParams::m_ImportInputsIfAligned</a></div><div class="ttdeci">bool m_ImportInputsIfAligned</div><div class="ttdef"><b>Definition:</b> <a href="_execute_network_params_8hpp_source.xhtml#l00063">ExecuteNetworkParams.hpp:63</a></div></div>
<div class="ttc" id="classarmnn_onnx_parser_1_1_i_onnx_parser_xhtml_af9b9254fb8a084f0db4f7deff0498b20"><div class="ttname"><a href="classarmnn_onnx_parser_1_1_i_onnx_parser.xhtml#af9b9254fb8a084f0db4f7deff0498b20">armnnOnnxParser::IOnnxParser::Create</a></div><div class="ttdeci">static IOnnxParserPtr Create()</div><div class="ttdef"><b>Definition:</b> <a href="_onnx_parser_8cpp_source.xhtml#l00038">OnnxParser.cpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086"><div class="ttname"><a href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">armnn::Status::Failure</a></div></div>
<div class="ttc" id="structarmnn_deserializer_1_1_binding_point_info_xhtml_aa308d10e76e29f09e44a933a2d091a79"><div class="ttname"><a href="structarmnn_deserializer_1_1_binding_point_info.xhtml#aa308d10e76e29f09e44a933a2d091a79">armnnDeserializer::BindingPointInfo::m_TensorInfo</a></div><div class="ttdeci">armnn::TensorInfo m_TensorInfo</div><div class="ttdef"><b>Definition:</b> <a href="_i_deserializer_8hpp_source.xhtml#l00021">IDeserializer.hpp:21</a></div></div>
<div class="ttc" id="classarmnn_1_1_exception_xhtml"><div class="ttname"><a href="classarmnn_1_1_exception.xhtml">armnn::Exception</a></div><div class="ttdoc">Base class for all ArmNN exceptions so that users can filter to just those. </div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.xhtml#l00046">Exceptions.hpp:46</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="_async_execution_callback_8hpp_xhtml"><div class="ttname"><a href="_async_execution_callback_8hpp.xhtml">AsyncExecutionCallback.hpp</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">armnn::LayerType::Input</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_connectable_layer_xhtml_a6ec9e0eb66d7d6a01240492a0b18104c"><div class="ttname"><a href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">armnn::IConnectableLayer::GetInputSlot</a></div><div class="ttdeci">virtual const IInputSlot &amp; GetInputSlot(unsigned int index) const =0</div><div class="ttdoc">Get a const input slot handle by slot index. </div></div>
<div class="ttc" id="classarmnn_1_1_i_optimized_network_xhtml_a26794f014974a6f963a8925de07bffeb"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.xhtml#a26794f014974a6f963a8925de07bffeb">armnn::IOptimizedNetwork::SerializeToDot</a></div><div class="ttdeci">Status SerializeToDot(std::ostream &amp;stream) const</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00509">Network.cpp:509</a></div></div>
<div class="ttc" id="class_arm_n_n_executor_xhtml_a7b274ddaba15738d696359ad327a88ca"><div class="ttname"><a href="class_arm_n_n_executor.xhtml#a7b274ddaba15738d696359ad327a88ca">ArmNNExecutor::Execute</a></div><div class="ttdeci">std::vector&lt; const void *&gt; Execute() override</div><div class="ttdoc">Execute the given network. </div><div class="ttdef"><b>Definition:</b> <a href="_arm_n_n_executor_8cpp_source.xhtml#l00198">ArmNNExecutor.cpp:198</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_input_slot_xhtml_a81fbf6103761e55061b62ba989b00f10"><div class="ttname"><a href="classarmnn_1_1_i_input_slot.xhtml#a81fbf6103761e55061b62ba989b00f10">armnn::IInputSlot::GetConnection</a></div><div class="ttdeci">virtual const IOutputSlot * GetConnection() const =0</div></div>
<div class="ttc" id="classarmnn_1_1experimental_1_1_async_callback_manager_xhtml"><div class="ttname"><a href="classarmnn_1_1experimental_1_1_async_callback_manager.xhtml">armnn::experimental::AsyncCallbackManager</a></div><div class="ttdef"><b>Definition:</b> <a href="_async_execution_callback_8hpp_source.xhtml#l00076">AsyncExecutionCallback.hpp:76</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_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_output_slot_xhtml_a9943775a364fc4ab53b85ac88f311886"><div class="ttname"><a href="classarmnn_1_1_i_output_slot.xhtml#a9943775a364fc4ab53b85ac88f311886">armnn::IOutputSlot::GetTensorInfo</a></div><div class="ttdeci">virtual const TensorInfo &amp; GetTensorInfo() const =0</div></div>
<div class="ttc" id="classarmnn_1_1_i_connectable_layer_xhtml_a80ac4eda2e7f2757ec9dd96fc96dbd16"><div class="ttname"><a href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">armnn::IConnectableLayer::GetOutputSlot</a></div><div class="ttdeci">virtual const IOutputSlot &amp; GetOutputSlot(unsigned int index) const =0</div><div class="ttdoc">Get the const output slot handle by slot index. </div></div>
<div class="ttc" id="_network_execution_utils_8cpp_xhtml_ab9be7e320a1879b362298cb198250dae"><div class="ttname"><a href="_network_execution_utils_8cpp.xhtml#ab9be7e320a1879b362298cb198250dae">CheckInferenceTimeThreshold</a></div><div class="ttdeci">bool CheckInferenceTimeThreshold(const std::chrono::duration&lt; double, std::milli &gt; &amp;duration, const double &amp;thresholdTime)</div><div class="ttdoc">Given a measured duration and a threshold time tell the user whether we succeeded or not...</div><div class="ttdef"><b>Definition:</b> <a href="_network_execution_utils_8cpp_source.xhtml#l00017">NetworkExecutionUtils.cpp:17</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">armnn::DataType::QSymmS8</a></div></div>
<div class="ttc" id="struct_execute_network_params_xhtml_acb9376adc0f7174b7d4295e00315a084"><div class="ttname"><a href="struct_execute_network_params.xhtml#acb9376adc0f7174b7d4295e00315a084">ExecuteNetworkParams::m_ReuseBuffers</a></div><div class="ttdeci">bool m_ReuseBuffers</div><div class="ttdef"><b>Definition:</b> <a href="_execute_network_params_8hpp_source.xhtml#l00064">ExecuteNetworkParams.hpp:64</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00238">INetwork.hpp:238</a></div></div>
<div class="ttc" id="structarmnn_deserializer_1_1_binding_point_info_xhtml_a663b3104ec65e4e08b5e37fb42942087"><div class="ttname"><a href="structarmnn_deserializer_1_1_binding_point_info.xhtml#a663b3104ec65e4e08b5e37fb42942087">armnnDeserializer::BindingPointInfo::m_BindingId</a></div><div class="ttdeci">armnn::LayerBindingId m_BindingId</div><div class="ttdef"><b>Definition:</b> <a href="_i_deserializer_8hpp_source.xhtml#l00020">IDeserializer.hpp:20</a></div></div>
<div class="ttc" id="_network_execution_utils_8hpp_xhtml"><div class="ttname"><a href="_network_execution_utils_8hpp.xhtml">NetworkExecutionUtils.hpp</a></div></div>
<div class="ttc" id="class_arm_n_n_executor_xhtml_aa9bcc5837a0ef0e503f56d634b1e7184"><div class="ttname"><a href="class_arm_n_n_executor.xhtml#aa9bcc5837a0ef0e503f56d634b1e7184">ArmNNExecutor::ArmNNExecutor</a></div><div class="ttdeci">ArmNNExecutor(const ExecuteNetworkParams &amp;params, armnn::IRuntime::CreationOptions runtimeOptions)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_n_n_executor_8cpp_source.xhtml#l00017">ArmNNExecutor.cpp:17</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a8e72227ebe5ac505cf44790f2e6eb488a87f8a6ab85c9ced3702b4ea641ad4bb5"><div class="ttname"><a href="namespacearmnn.xhtml#a8e72227ebe5ac505cf44790f2e6eb488a87f8a6ab85c9ced3702b4ea641ad4bb5">armnn::QosExecPriority::Medium</a></div></div>
<div class="ttc" id="struct_execute_network_params_xhtml_a2a245a63e87f363df491ad8c35be54c5"><div class="ttname"><a href="struct_execute_network_params.xhtml#a2a245a63e87f363df491ad8c35be54c5">ExecuteNetworkParams::m_InferOutputShape</a></div><div class="ttdeci">bool m_InferOutputShape</div><div class="ttdef"><b>Definition:</b> <a href="_execute_network_params_8hpp_source.xhtml#l00038">ExecuteNetworkParams.hpp:38</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_xhtml_a8846406ac37fbd2204f0be16ee05d5b7"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml#a8846406ac37fbd2204f0be16ee05d5b7">armnn::TensorInfo::GetNumElements</a></div><div class="ttdeci">unsigned int GetNumElements() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00196">Tensor.hpp:196</a></div></div>
<div class="ttc" id="struct_execute_network_params_xhtml_a26d42007440bb01a1a6d0ab3b5a657ee"><div class="ttname"><a href="struct_execute_network_params.xhtml#a26d42007440bb01a1a6d0ab3b5a657ee">ExecuteNetworkParams::m_EnableProfiling</a></div><div class="ttdeci">bool m_EnableProfiling</div><div class="ttdef"><b>Definition:</b> <a href="_execute_network_params_8hpp_source.xhtml#l00036">ExecuteNetworkParams.hpp:36</a></div></div>
<div class="ttc" id="classarmnn_1_1experimental_1_1_async_callback_manager_xhtml_a9ee5b1dd7d3a6f619d2ed3d97d75d9b1"><div class="ttname"><a href="classarmnn_1_1experimental_1_1_async_callback_manager.xhtml#a9ee5b1dd7d3a6f619d2ed3d97d75d9b1">armnn::experimental::AsyncCallbackManager::GetNotifiedCallback</a></div><div class="ttdeci">std::shared_ptr&lt; AsyncExecutionCallback &gt; GetNotifiedCallback()</div><div class="ttdef"><b>Definition:</b> <a href="_async_execution_callback_8cpp_source.xhtml#l00060">AsyncExecutionCallback.cpp:60</a></div></div>
<div class="ttc" id="structarmnn_tf_lite_parser_1_1_i_tf_lite_parser_1_1_tf_lite_parser_options_xhtml_a8675330934407606641327cec4bb29f4"><div class="ttname"><a href="structarmnn_tf_lite_parser_1_1_i_tf_lite_parser_1_1_tf_lite_parser_options.xhtml#a8675330934407606641327cec4bb29f4">armnnTfLiteParser::ITfLiteParser::TfLiteParserOptions::m_StandInLayerForUnsupported</a></div><div class="ttdeci">bool m_StandInLayerForUnsupported</div><div class="ttdef"><b>Definition:</b> <a href="_i_tf_lite_parser_8hpp_source.xhtml#l00037">ITfLiteParser.hpp:37</a></div></div>
</div><!-- fragment --></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="dir_59425e443f801f1f2fd8bbe4959a3ccf.xhtml">tests</a></li><li class="navelem"><a class="el" href="dir_3502d64799b714c597b8fa7662494b65.xhtml">ExecuteNetwork</a></li><li class="navelem"><a class="el" href="_arm_n_n_executor_8cpp.xhtml">ArmNNExecutor.cpp</a></li>
    <li class="footer">Generated on Fri Aug 19 2022 14:38:31 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>