aboutsummaryrefslogtreecommitdiff
path: root/22.02/_runtime_8cpp_source.xhtml
blob: 3cfd851035bc3c73cb3294ecb1ff18e8c3471975 (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
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
<!-- 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: src/armnn/Runtime.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.02</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('_runtime_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">Runtime.cpp</div>  </div>
</div><!--header-->
<div class="contents">
<a href="_runtime_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 © 2017 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;<span class="preprocessor">#include &quot;<a class="code" href="_runtime_8hpp.xhtml">Runtime.hpp</a>&quot;</span></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 &lt;<a class="code" href="include_2armnn_2_version_8hpp.xhtml">armnn/Version.hpp</a>&gt;</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_backend_registry_8hpp.xhtml">armnn/BackendRegistry.hpp</a>&gt;</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_backend_helper_8hpp.xhtml">armnn/BackendHelper.hpp</a>&gt;</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_logging_8hpp.xhtml">armnn/Logging.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="_timer_8hpp.xhtml">armnn/utility/Timer.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;<span class="preprocessor">#include &lt;<a class="code" href="include_2armnn_2backends_2_i_backend_context_8hpp.xhtml">armnn/backends/IBackendContext.hpp</a>&gt;</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_dynamic_backend_utils_8hpp.xhtml">backendsCommon/DynamicBackendUtils.hpp</a>&gt;</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_memory_optimizer_strategy_library_8hpp.xhtml">backendsCommon/memoryOptimizerStrategyLibrary/MemoryOptimizerStrategyLibrary.hpp</a>&gt;</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_polymorphic_downcast_8hpp.xhtml">armnn/utility/PolymorphicDowncast.hpp</a>&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;common/include/LabelsAndEventClasses.hpp&gt;</span></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;<span class="preprocessor">#include &lt;iostream&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_backend_profiling_8hpp.xhtml">backends/BackendProfiling.hpp</a>&gt;</span></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">using namespace </span><a class="code" href="namespacearmnn.xhtml">armnn</a>;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespacestd.xhtml">std</a>;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacearmnn.xhtml">armnn</a></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;{</div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#ab57e7be00c017cfa43de4f5141f1fc68">   29</a></span>&#160;<a class="code" href="classarmnn_1_1_i_runtime.xhtml#ab57e7be00c017cfa43de4f5141f1fc68">IRuntime::IRuntime</a>() : pRuntimeImpl( new <a class="code" href="structarmnn_1_1_runtime_impl.xhtml">RuntimeImpl</a>(<a class="code" href="namespacearmnn.xhtml">armnn</a>::<a class="code" href="classarmnn_1_1_i_runtime.xhtml">IRuntime</a>::<a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml">CreationOptions</a>())) {}</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"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#aeea37dec9d86de31f4847592df906062">   31</a></span>&#160;<a class="code" href="classarmnn_1_1_i_runtime.xhtml#ab57e7be00c017cfa43de4f5141f1fc68">IRuntime::IRuntime</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml">IRuntime::CreationOptions</a>&amp; options) : <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a92dbd7245696596a2c8e831de26cec02">pRuntimeImpl</a>(new <a class="code" href="structarmnn_1_1_runtime_impl.xhtml">RuntimeImpl</a>(options)) {}</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="classarmnn_1_1_i_runtime.xhtml#ad728a798fda08188df91623caebd527c">IRuntime::~IRuntime</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#a4646ef5dbce8d3aae30fc99638226069">   35</a></span>&#160;<a class="code" href="classarmnn_1_1_i_runtime.xhtml">IRuntime</a>* <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a4646ef5dbce8d3aae30fc99638226069">IRuntime::CreateRaw</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml">CreationOptions</a>&amp; options)</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#ab57e7be00c017cfa43de4f5141f1fc68">IRuntime</a>(options);</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;}</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"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#ad44ecd3700748dc30dc4bbe34ba5bde7">   40</a></span>&#160;<a class="code" href="namespacearmnn.xhtml#a150468a02bd7b2d2d061c4aaaee939f0">IRuntimePtr</a> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#ad44ecd3700748dc30dc4bbe34ba5bde7">IRuntime::Create</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml">CreationOptions</a>&amp; options)</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;    <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a150468a02bd7b2d2d061c4aaaee939f0">IRuntimePtr</a>(<a class="code" href="classarmnn_1_1_i_runtime.xhtml#a4646ef5dbce8d3aae30fc99638226069">CreateRaw</a>(options), &amp;<a class="code" href="classarmnn_1_1_i_runtime.xhtml#a978f3d0d34a944b40240bd130d61e3b6">IRuntime::Destroy</a>);</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;}</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#a978f3d0d34a944b40240bd130d61e3b6">   45</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a978f3d0d34a944b40240bd130d61e3b6">IRuntime::Destroy</a>(<a class="code" href="classarmnn_1_1_i_runtime.xhtml">IRuntime</a>* runtime)</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;{</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    <span class="keyword">delete</span> runtime;</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;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#af92b5ae61208a778571bcea7e6aac7b4">   50</a></span>&#160;<a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#af92b5ae61208a778571bcea7e6aac7b4">IRuntime::LoadNetwork</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a>&amp; networkIdOut, <a class="code" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a> network)</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;{</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a92dbd7245696596a2c8e831de26cec02">pRuntimeImpl</a>-&gt;LoadNetwork(networkIdOut, std::move(network));</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;}</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#a0e36bbd86f21d7ddec31588deed2ac77">   55</a></span>&#160;<a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#af92b5ae61208a778571bcea7e6aac7b4">IRuntime::LoadNetwork</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a>&amp; networkIdOut,</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;                             <a class="code" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a> network,</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;                             std::string&amp; errorMessage)</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">return</span> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a92dbd7245696596a2c8e831de26cec02">pRuntimeImpl</a>-&gt;LoadNetwork(networkIdOut, std::move(network), errorMessage);</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;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#a65582587432a8dd20c3b1ad2a4f1f642">   62</a></span>&#160;<a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#af92b5ae61208a778571bcea7e6aac7b4">IRuntime::LoadNetwork</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a>&amp; networkIdOut,</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;                             <a class="code" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a> network,</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;                             std::string&amp; errorMessage,</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;                             <span class="keyword">const</span> <a class="code" href="structarmnn_1_1_i_network_properties.xhtml">INetworkProperties</a>&amp; networkProperties)</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;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a92dbd7245696596a2c8e831de26cec02">pRuntimeImpl</a>-&gt;LoadNetwork(networkIdOut, std::move(network), errorMessage, networkProperties);</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;}</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"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#a25f528b76d8116e08cddc7d4a8661ee1">   70</a></span>&#160;<a class="code" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a25f528b76d8116e08cddc7d4a8661ee1">IRuntime::GetInputTensorInfo</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a> networkId, <a class="code" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> layerId)<span class="keyword"> const</span></div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a92dbd7245696596a2c8e831de26cec02">pRuntimeImpl</a>-&gt;GetInputTensorInfo(networkId, layerId);</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;}</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"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#a5dccecd36bb6eda573be616face68035">   75</a></span>&#160;<a class="code" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a5dccecd36bb6eda573be616face68035">IRuntime::GetOutputTensorInfo</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a> networkId, <a class="code" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> layerId)<span class="keyword"> const</span></div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a92dbd7245696596a2c8e831de26cec02">pRuntimeImpl</a>-&gt;GetOutputTensorInfo(networkId, layerId);</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;</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#ac2cb56a0d7ee6fb53e9f97e624973c19">   80</a></span>&#160;std::vector&lt;ImportedInputId&gt; <a class="code" href="classarmnn_1_1_i_runtime.xhtml#ac2cb56a0d7ee6fb53e9f97e624973c19">IRuntime::ImportInputs</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a> networkId, <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#aa01bce88f89975a5a031db4cc8861527">InputTensors</a>&amp; inputTensors,</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;                                                    <a class="code" href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277">MemorySource</a> forceImportMemorySource)</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;{</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a92dbd7245696596a2c8e831de26cec02">pRuntimeImpl</a>-&gt;ImportInputs(networkId, inputTensors, forceImportMemorySource);</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;}</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"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#a7db39b06bc7f50287f54320d26df4373">   86</a></span>&#160;std::vector&lt;ImportedOutputId&gt; <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a7db39b06bc7f50287f54320d26df4373">IRuntime::ImportOutputs</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a> networkId, <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a8f091a512915d1cb29a4ebf13dfc53ea">OutputTensors</a>&amp; outputTensors,</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;                                                      <a class="code" href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277">MemorySource</a> forceImportMemorySource)</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;{</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a92dbd7245696596a2c8e831de26cec02">pRuntimeImpl</a>-&gt;ImportOutputs(networkId, outputTensors, forceImportMemorySource);</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;</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#ab2498cef8d01323527d59b6bb5848eed">   92</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#ab2498cef8d01323527d59b6bb5848eed">IRuntime::ClearImportedInputs</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a> networkId, <span class="keyword">const</span> std::vector&lt;ImportedInputId&gt; inputIds)</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;{</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a92dbd7245696596a2c8e831de26cec02">pRuntimeImpl</a>-&gt;ClearImportedInputs(networkId, inputIds);</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;}</div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#a746d54f647096c2f9932dae20a6590a2">   96</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a746d54f647096c2f9932dae20a6590a2">IRuntime::ClearImportedOutputs</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a> networkId, <span class="keyword">const</span> std::vector&lt;ImportedOutputId&gt; outputIds)</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;{</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a92dbd7245696596a2c8e831de26cec02">pRuntimeImpl</a>-&gt;ClearImportedOutputs(networkId, outputIds);</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;}</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#aca51209383683ab8dbe801bbfddfe0c0">  101</a></span>&#160;<a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#aca51209383683ab8dbe801bbfddfe0c0">IRuntime::EnqueueWorkload</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a> networkId,</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;                                 <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#aa01bce88f89975a5a031db4cc8861527">InputTensors</a>&amp; inputTensors,</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;                                 <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a8f091a512915d1cb29a4ebf13dfc53ea">OutputTensors</a>&amp; outputTensors,</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;                                 std::vector&lt;ImportedInputId&gt; preImportedInputIds,</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;                                 std::vector&lt;ImportedOutputId&gt; preImportedOutputIds)</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;{</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a92dbd7245696596a2c8e831de26cec02">pRuntimeImpl</a>-&gt;EnqueueWorkload(networkId, inputTensors, outputTensors,</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;                                         preImportedInputIds, preImportedOutputIds);</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;}</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#a27f91ba619c3c6fd5e640df91b3fd080">  111</a></span>&#160;<a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a27f91ba619c3c6fd5e640df91b3fd080">IRuntime::Execute</a>(<a class="code" href="classarmnn_1_1experimental_1_1_i_working_mem_handle.xhtml">IWorkingMemHandle</a>&amp; workingMemHandle,</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;                         <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#aa01bce88f89975a5a031db4cc8861527">InputTensors</a>&amp; inputTensors,</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;                         <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a8f091a512915d1cb29a4ebf13dfc53ea">OutputTensors</a>&amp; outputTensors,</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;                         std::vector&lt;ImportedInputId&gt; preImportedInputs,</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;                         std::vector&lt;ImportedOutputId&gt; preImportedOutputs)</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;{</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a92dbd7245696596a2c8e831de26cec02">pRuntimeImpl</a>-&gt;Execute(workingMemHandle, inputTensors, outputTensors, preImportedInputs, preImportedOutputs);</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;}</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#aed397991b99f485ffab9a42aece47019">  120</a></span>&#160;<a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#aed397991b99f485ffab9a42aece47019">IRuntime::UnloadNetwork</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a> networkId)</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;{</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a92dbd7245696596a2c8e831de26cec02">pRuntimeImpl</a>-&gt;UnloadNetwork(networkId);</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;}</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#a25db7b8e6fc90f8418439ccd33aaf184">  125</a></span>&#160;<span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_device_spec.xhtml">IDeviceSpec</a>&amp; <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a25db7b8e6fc90f8418439ccd33aaf184">IRuntime::GetDeviceSpec</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a92dbd7245696596a2c8e831de26cec02">pRuntimeImpl</a>-&gt;GetDeviceSpec();</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;</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#a16e72675c37a8f251cf02951e222d4ab">  130</a></span>&#160;std::unique_ptr&lt;IWorkingMemHandle&gt; <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a16e72675c37a8f251cf02951e222d4ab">IRuntime::CreateWorkingMemHandle</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a> networkId)</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="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a92dbd7245696596a2c8e831de26cec02">pRuntimeImpl</a>-&gt;CreateWorkingMemHandle(networkId);</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;}</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#af87d0743d1266e264c3197a32299f4b2">  135</a></span>&#160;<span class="keyword">const</span> std::shared_ptr&lt;IProfiler&gt; <a class="code" href="classarmnn_1_1_i_runtime.xhtml#af87d0743d1266e264c3197a32299f4b2">IRuntime::GetProfiler</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a> networkId)<span class="keyword"> const</span></div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a92dbd7245696596a2c8e831de26cec02">pRuntimeImpl</a>-&gt;GetProfiler(networkId);</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;}</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#a957014ce1bfd27e99f0a50b3ced439e1">  140</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a957014ce1bfd27e99f0a50b3ced439e1">IRuntime::RegisterDebugCallback</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a> networkId, <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a15f3ad9b5e4e3d46b0a6dda246a7bc28">DebugCallbackFunction</a>&amp; func)</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;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a92dbd7245696596a2c8e831de26cec02">pRuntimeImpl</a>-&gt;RegisterDebugCallback(networkId, func);</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;}</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;<span class="keywordtype">int</span> RuntimeImpl::GenerateNetworkId()</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;{</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    <span class="keywordflow">return</span> m_NetworkIdCounter++;</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;}</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#af92b5ae61208a778571bcea7e6aac7b4">  150</a></span>&#160;<a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> <a class="code" href="structarmnn_1_1_runtime_impl.xhtml#af92b5ae61208a778571bcea7e6aac7b4">RuntimeImpl::LoadNetwork</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a>&amp; networkIdOut, <a class="code" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a> inNetwork)</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;    std::string ignoredErrorMessage;</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#af92b5ae61208a778571bcea7e6aac7b4">LoadNetwork</a>(networkIdOut, std::move(inNetwork), ignoredErrorMessage);</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;}</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"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#a0e36bbd86f21d7ddec31588deed2ac77">  156</a></span>&#160;<a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> <a class="code" href="structarmnn_1_1_runtime_impl.xhtml#af92b5ae61208a778571bcea7e6aac7b4">RuntimeImpl::LoadNetwork</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a>&amp; networkIdOut,</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;                                <a class="code" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a> inNetwork,</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;                                std::string&amp; errorMessage)</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;{</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    <a class="code" href="structarmnn_1_1_i_network_properties.xhtml">INetworkProperties</a> networkProperties(</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;            <span class="keyword">false</span>, <a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">MemorySource::Undefined</a>, <a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">MemorySource::Undefined</a>);</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#af92b5ae61208a778571bcea7e6aac7b4">LoadNetwork</a>(networkIdOut, std::move(inNetwork), errorMessage, networkProperties);</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;}</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#a65582587432a8dd20c3b1ad2a4f1f642">  165</a></span>&#160;<a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> <a class="code" href="structarmnn_1_1_runtime_impl.xhtml#af92b5ae61208a778571bcea7e6aac7b4">RuntimeImpl::LoadNetwork</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a>&amp; networkIdOut,</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;                                <a class="code" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a> inNetwork,</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;                                std::string&amp; errorMessage,</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;                                <span class="keyword">const</span> <a class="code" href="structarmnn_1_1_i_network_properties.xhtml">INetworkProperties</a>&amp; networkProperties)</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;{</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    <span class="comment">// Register the profiler</span></div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    <span class="keyword">auto</span> profiler = inNetwork-&gt;GetProfiler();</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    <a class="code" href="classarmnn_1_1_profiler_manager.xhtml#a93857080c2523bf3395e7aa7e6024d5c">ProfilerManager::GetInstance</a>().<a class="code" href="classarmnn_1_1_profiler_manager.xhtml#a7b1e3e5bf386004541be2b5b22443208">RegisterProfiler</a>(profiler.get());</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml">IOptimizedNetwork</a>* rawNetwork = inNetwork.release();</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    networkIdOut = GenerateNetworkId();</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; context : m_BackendContexts)</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;        context.second-&gt;BeforeLoadNetwork(networkIdOut);</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;    unique_ptr&lt;LoadedNetwork&gt; loadedNetwork = <a class="code" href="classarmnn_1_1_loaded_network.xhtml#a8e94a5375ad367ddee9c69e04e110a54">LoadedNetwork::MakeLoadedNetwork</a>(</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;        std::unique_ptr&lt;IOptimizedNetwork&gt;(rawNetwork),</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;        errorMessage,</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;        networkProperties,</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;        m_ProfilingService);</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;    <span class="keywordflow">if</span> (!loadedNetwork)</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;    {</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">Status::Failure</a>;</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;</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;    {</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;        std::lock_guard&lt;std::mutex&gt; lockGuard(m_Mutex);</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;        <span class="comment">// Stores the network</span></div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;        m_LoadedNetworks[networkIdOut] = std::move(loadedNetwork);</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;</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; context : m_BackendContexts)</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    {</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;        context.second-&gt;AfterLoadNetwork(networkIdOut);</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    }</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;    <span class="keywordflow">if</span> (m_ProfilingService.IsProfilingEnabled())</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;        m_ProfilingService.IncrementCounterValue(armnn::profiling::NETWORK_LOADS);</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;    }</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">Status::Success</a>;</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"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#aed397991b99f485ffab9a42aece47019">  214</a></span>&#160;<a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> <a class="code" href="structarmnn_1_1_runtime_impl.xhtml#aed397991b99f485ffab9a42aece47019">RuntimeImpl::UnloadNetwork</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a> networkId)</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;{</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;    <span class="keywordtype">bool</span> unloadOk = <span class="keyword">true</span>;</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; context : m_BackendContexts)</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;        unloadOk &amp;= context.second-&gt;BeforeUnloadNetwork(networkId);</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;    }</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;    <span class="keywordflow">if</span> (!unloadOk)</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;    {</div><div class="line"><a name="l00224"></a><span class="lineno">  224</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;RuntimeImpl::UnloadNetwork(): failed to unload &quot;</span></div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;                              <span class="stringliteral">&quot;network with ID:&quot;</span> &lt;&lt; networkId &lt;&lt; <span class="stringliteral">&quot; because BeforeUnloadNetwork failed&quot;</span>;</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">Status::Failure</a>;</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    }</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    std::unique_ptr&lt;profiling::TimelineUtilityMethods&gt; timelineUtils =</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;            <a class="code" href="classarmnn_1_1profiling_1_1_timeline_utility_methods.xhtml#a0e5c863245b8d7dc5e874c0c66eebae1">profiling::TimelineUtilityMethods::GetTimelineUtils</a>(m_ProfilingService);</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    {</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;        std::lock_guard&lt;std::mutex&gt; lockGuard(m_Mutex);</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;        <span class="comment">// If timeline recording is on mark the Network end of life</span></div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;        <span class="keywordflow">if</span> (timelineUtils)</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;            <span class="keyword">auto</span> search = m_LoadedNetworks.find(networkId);</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;            <span class="keywordflow">if</span> (search != m_LoadedNetworks.end())</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;                profiling::ProfilingGuid networkGuid = search-&gt;second-&gt;GetNetworkGuid();</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;                timelineUtils-&gt;RecordEvent(networkGuid,</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;                                           profiling::LabelsAndEventClasses::ARMNN_PROFILING_EOL_EVENT_CLASS);</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;</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;        <span class="keywordflow">if</span> (m_LoadedNetworks.erase(networkId) == 0)</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;            <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;WARNING: RuntimeImpl::UnloadNetwork(): &quot;</span> &lt;&lt; networkId &lt;&lt; <span class="stringliteral">&quot; not found!&quot;</span>;</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">Status::Failure</a>;</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;        }</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;        <span class="keywordflow">if</span> (m_ProfilingService.IsProfilingEnabled())</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;        {</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;            m_ProfilingService.IncrementCounterValue(armnn::profiling::NETWORK_UNLOADS);</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;        }</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;    }</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;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; context : m_BackendContexts)</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;    {</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;        context.second-&gt;AfterUnloadNetwork(networkId);</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;    }</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;    <span class="comment">// Unregister the profiler</span></div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;    <a class="code" href="classarmnn_1_1_profiler_manager.xhtml#a93857080c2523bf3395e7aa7e6024d5c">ProfilerManager::GetInstance</a>().<a class="code" href="classarmnn_1_1_profiler_manager.xhtml#a7b1e3e5bf386004541be2b5b22443208">RegisterProfiler</a>(<span class="keyword">nullptr</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;    <a class="code" href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407aad42f6697b035b7580e4fef93be20b4d">debug</a>) &lt;&lt; <span class="stringliteral">&quot;RuntimeImpl::UnloadNetwork(): Unloaded network with ID: &quot;</span> &lt;&lt; networkId;</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">Status::Success</a>;</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;</div><div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#af87d0743d1266e264c3197a32299f4b2">  270</a></span>&#160;<span class="keyword">const</span> std::shared_ptr&lt;IProfiler&gt; <a class="code" href="structarmnn_1_1_runtime_impl.xhtml#af87d0743d1266e264c3197a32299f4b2">RuntimeImpl::GetProfiler</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a> networkId)<span class="keyword"> const</span></div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;    <span class="keyword">auto</span> it = m_LoadedNetworks.find(networkId);</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;    <span class="keywordflow">if</span> (it != m_LoadedNetworks.end())</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="keyword">auto</span>&amp; loadedNetwork = it-&gt;second;</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;        <span class="keywordflow">return</span> loadedNetwork-&gt;GetProfiler();</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    }</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;}</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#a75ccbc4465b34e691a31a5cea42689c0">  282</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="structarmnn_1_1_runtime_impl.xhtml#a75ccbc4465b34e691a31a5cea42689c0">RuntimeImpl::ReportStructure</a>() <span class="comment">// armnn::profiling::IProfilingService&amp; profilingService as param</span></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="comment">// No-op for the time being, but this may be useful in future to have the profilingService available</span></div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;    <span class="comment">// if (profilingService.IsProfilingEnabled()){}</span></div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;    LoadedNetworks::iterator it = m_LoadedNetworks.begin();</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;    <span class="keywordflow">while</span> (it != m_LoadedNetworks.end())</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="keyword">auto</span>&amp; loadedNetwork = it-&gt;second;</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;        loadedNetwork-&gt;SendNetworkStructure();</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;        <span class="comment">// Increment the Iterator to point to next entry</span></div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;        it++;</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;    }</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;}</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"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#a16dc7f9aef55701fb8634997eef570b0">  297</a></span>&#160;<a class="code" href="structarmnn_1_1_runtime_impl.xhtml#a16dc7f9aef55701fb8634997eef570b0">RuntimeImpl::RuntimeImpl</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml">IRuntime::CreationOptions</a>&amp; options)</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;    : m_NetworkIdCounter(0),</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;      m_ProfilingService(*this)</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;{</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;    <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="l00302"></a><span class="lineno">  302</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;ArmNN v&quot;</span> &lt;&lt; <a class="code" href="include_2armnn_2_version_8hpp.xhtml#a50bf0553d5c4b76d18a3d37e155b4d11">ARMNN_VERSION</a>;</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;    <span class="keywordflow">if</span> ( options.<a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml#a30412a91cadff138686eaeb12f5357cc">m_ProfilingOptions</a>.<a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options_1_1_external_profiling_options.xhtml#a5b304d775657afbf1fb724af57add374">m_TimelineEnabled</a> &amp;&amp; !options.<a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml#a30412a91cadff138686eaeb12f5357cc">m_ProfilingOptions</a>.<a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options_1_1_external_profiling_options.xhtml#a26d42007440bb01a1a6d0ab3b5a657ee">m_EnableProfiling</a> )</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;    {</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;        <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_runtime_exception.xhtml">RuntimeException</a>(</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;                <span class="stringliteral">&quot;It is not possible to enable timeline reporting without profiling being enabled&quot;</span>);</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;</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;    <span class="comment">// Load any available/compatible dynamic backend before the runtime</span></div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;    <span class="comment">// goes through the backend registry</span></div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;    LoadDynamicBackends(options.<a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml#ae43cf4b5df0068ee6a9151c98947248b">m_DynamicBackendsPath</a>);</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;    <a class="code" href="namespacearmnn.xhtml#a1854d9cda81304325664363c1fd0fb27">BackendIdSet</a> supportedBackends;</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; <span class="keywordtype">id</span> : <a class="code" href="namespacearmnn.xhtml#ac2807505b850738bc8a1991ce669dd47">BackendRegistryInstance</a>().GetBackendIds())</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;    {</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;        <span class="comment">// Store backend contexts for the supported ones</span></div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;        <span class="keywordflow">try</span> {</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;            <span class="keyword">auto</span> factoryFun = <a class="code" href="namespacearmnn.xhtml#ac2807505b850738bc8a1991ce669dd47">BackendRegistryInstance</a>().<a class="code" href="classarmnn_1_1_backend_registry.xhtml#afc0c63ca8db8957b58826f6d7bd231b2">GetFactory</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;            <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(factoryFun != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;            <span class="keyword">auto</span> backend = factoryFun();</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;            <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(backend != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;            <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(backend.get() != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;            <span class="keyword">auto</span> customAllocatorMapIterator = options.<a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml#a939528f239e70c85f833c87c5fe41d83">m_CustomAllocatorMap</a>.find(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;            <span class="keywordflow">if</span> (customAllocatorMapIterator != options.<a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml#a939528f239e70c85f833c87c5fe41d83">m_CustomAllocatorMap</a>.end() &amp;&amp;</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;                customAllocatorMapIterator-&gt;second == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;            {</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;                <span class="comment">// We need to manually clean up  the dynamic backends before throwing an exception.</span></div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;                <a class="code" href="classarmnn_1_1_dynamic_backend_utils.xhtml#a7e786263f454b19c40b78c4092a4af5b">DynamicBackendUtils::DeregisterDynamicBackends</a>(m_DeviceSpec.<a class="code" href="classarmnn_1_1_device_spec.xhtml#a2a52bc9548350a186cdb8f9565eed4f0">GetDynamicBackends</a>());</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;                m_DeviceSpec.<a class="code" href="classarmnn_1_1_device_spec.xhtml#a5051d926510964d87440330c0469d9c5">ClearDynamicBackends</a>();</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;                <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_exception.xhtml">armnn::Exception</a>(<span class="stringliteral">&quot;Allocator associated with id &quot;</span> + <span class="keywordtype">id</span>.Get() + <span class="stringliteral">&quot; is null&quot;</span>);</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;            }</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;            <span class="comment">// If the runtime is created in protected mode only add backends that support this mode</span></div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;            <span class="keywordflow">if</span> (options.<a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml#ad89c99e4063390ba824022c60b885561">m_ProtectedMode</a>)</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;                <span class="comment">// check if backend supports ProtectedMode</span></div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;                <span class="keyword">using</span> <a class="code" href="namespacearmnn.xhtml#ab24d74259a053475f6040dd701a01952">BackendCapability</a> = <a class="code" href="structarmnn_1_1_backend_options_1_1_backend_option.xhtml">BackendOptions::BackendOption</a>;</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;                <a class="code" href="namespacearmnn.xhtml#ab24d74259a053475f6040dd701a01952">BackendCapability</a> protectedContentCapability {<span class="stringliteral">&quot;ProtectedContentAllocation&quot;</span>, <span class="keyword">true</span>};</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;                <span class="keywordflow">if</span> (!<a class="code" href="namespacearmnn.xhtml#abd839f0f103c1ae19a4b38d59b869108">HasCapability</a>(protectedContentCapability, <span class="keywordtype">id</span>))</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;                {</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;                    <span class="comment">// Protected Content Allocation is not supported by the backend</span></div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;                    <span class="comment">// backend should not be registered</span></div><div class="line"><a name="l00344"></a><span class="lineno">  344</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;Backend &quot;</span></div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;                                       &lt;&lt; <span class="keywordtype">id</span></div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;                                       &lt;&lt; <span class="stringliteral">&quot; is not registered as does not support protected content allocation.&quot;</span>;</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;                    <span class="keywordflow">continue</span>;</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="comment">// The user is responsible to provide a custom memory allocator which allows to allocate</span></div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;                <span class="comment">// protected memory</span></div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;                <span class="keywordflow">if</span> (customAllocatorMapIterator != options.<a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml#a939528f239e70c85f833c87c5fe41d83">m_CustomAllocatorMap</a>.end())</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;                    std::string err;</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;                    <span class="keywordflow">if</span> (customAllocatorMapIterator-&gt;second-&gt;GetMemorySourceType()</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;                        == <a class="code" href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277a7f9067c59dd34aca0ad09a7f283ed1f8">armnn::MemorySource::DmaBufProtected</a>)</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;                    {</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;                        <span class="keywordflow">if</span> (!backend-&gt;UseCustomMemoryAllocator(customAllocatorMapIterator-&gt;second, err))</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;                        {</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;                            <a class="code" href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282">error</a>) &lt;&lt; <span class="stringliteral">&quot;The backend &quot;</span></div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;                                             &lt;&lt; <span class="keywordtype">id</span></div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;                                             &lt;&lt; <span class="stringliteral">&quot; reported an error when entering protected mode. Backend won&#39;t be&quot;</span></div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;                                             &lt;&lt; <span class="stringliteral">&quot; used. ErrorMsg: &quot;</span> &lt;&lt; err;</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;                            <span class="keywordflow">continue</span>;</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="comment">// No errors so register the Custom Allocator with the BackendRegistry</span></div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;                        <a class="code" href="namespacearmnn.xhtml#ac2807505b850738bc8a1991ce669dd47">BackendRegistryInstance</a>().<a class="code" href="classarmnn_1_1_backend_registry.xhtml#a89e24dab4e47d8080ce0665f737a00e6">RegisterAllocator</a>(<span class="keywordtype">id</span>, customAllocatorMapIterator-&gt;second);</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;                    }</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;                    <span class="keywordflow">else</span></div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;                    {</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;                        <a class="code" href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282">error</a>) &lt;&lt; <span class="stringliteral">&quot;The CustomAllocator provided with the runtime options doesn&#39;t support &quot;</span></div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;                                     <span class="stringliteral">&quot;protected memory. Protected mode can&#39;t be activated. The backend &quot;</span></div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;                                     &lt;&lt; <span class="keywordtype">id</span></div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;                                     &lt;&lt; <span class="stringliteral">&quot; is not going to be used. MemorySource must be MemorySource::DmaBufProtected&quot;</span>;</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;                        <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;                    }</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;                }</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;                <span class="keywordflow">else</span></div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;                {</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;                    <a class="code" href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282">error</a>) &lt;&lt; <span class="stringliteral">&quot;Protected mode can&#39;t be activated for backend: &quot;</span></div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;                                     &lt;&lt; <span class="keywordtype">id</span></div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;                                     &lt;&lt; <span class="stringliteral">&quot; no custom allocator was provided to the runtime options.&quot;</span>;</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;                    <span class="keywordflow">continue</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;            }</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;            <span class="keywordflow">else</span></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="comment">// If a custom memory allocator is provided make the backend use that instead of the default</span></div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;                <span class="keywordflow">if</span> (customAllocatorMapIterator != options.<a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml#a939528f239e70c85f833c87c5fe41d83">m_CustomAllocatorMap</a>.end())</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;                {</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;                    std::string err;</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;                    <span class="keywordflow">if</span> (!backend-&gt;UseCustomMemoryAllocator(customAllocatorMapIterator-&gt;second, err))</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;                    {</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;                        <a class="code" href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282">error</a>) &lt;&lt; <span class="stringliteral">&quot;The backend &quot;</span></div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;                                         &lt;&lt; <span class="keywordtype">id</span></div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;                                         &lt;&lt; <span class="stringliteral">&quot; reported an error when trying to use the provided custom allocator.&quot;</span></div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;                                            <span class="stringliteral">&quot; Backend won&#39;t be used.&quot;</span></div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;                                         &lt;&lt; <span class="stringliteral">&quot; ErrorMsg: &quot;</span> &lt;&lt; err;</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;                        <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;                    }</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;                    <span class="comment">// No errors so register the Custom Allocator with the BackendRegistry</span></div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;                    <a class="code" href="namespacearmnn.xhtml#ac2807505b850738bc8a1991ce669dd47">BackendRegistryInstance</a>().<a class="code" href="classarmnn_1_1_backend_registry.xhtml#a89e24dab4e47d8080ce0665f737a00e6">RegisterAllocator</a>(<span class="keywordtype">id</span>, customAllocatorMapIterator-&gt;second);</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;            }</div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;            <span class="comment">// check if custom memory optimizer strategy map is set</span></div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;            <span class="keywordflow">if</span> (!options.<a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml#a6e8601cb2ffa03a83dbfae67b598ba4e">m_MemoryOptimizerStrategyMap</a>.empty())</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;                <span class="keyword">auto</span> customMemoryOptimizerStrategyMapIterator = options.<a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml#a6e8601cb2ffa03a83dbfae67b598ba4e">m_MemoryOptimizerStrategyMap</a>.find(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;                <span class="comment">// if a memory optimizer strategy is provided make the backend use that instead of the default</span></div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;                <span class="keywordflow">if</span> (customMemoryOptimizerStrategyMapIterator != options.<a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml#a6e8601cb2ffa03a83dbfae67b598ba4e">m_MemoryOptimizerStrategyMap</a>.end())</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;                {</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;                    <span class="comment">// no errors.. register the memory optimizer strategy with the BackendRegistry</span></div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;                    <a class="code" href="namespacearmnn.xhtml#ac2807505b850738bc8a1991ce669dd47">BackendRegistryInstance</a>().<a class="code" href="classarmnn_1_1_backend_registry.xhtml#ad02fbefe5c0f3ec53059dd630f1d5117">RegisterMemoryOptimizerStrategy</a>(</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;                        <span class="keywordtype">id</span>, customMemoryOptimizerStrategyMapIterator-&gt;second);</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;                    <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;MemoryOptimizerStrategy  &quot;</span></div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;                                    &lt;&lt; customMemoryOptimizerStrategyMapIterator-&gt;second-&gt;GetName()</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;                                    &lt;&lt; <span class="stringliteral">&quot; set for the backend &quot;</span> &lt;&lt; <span class="keywordtype">id</span> &lt;&lt; <span class="stringliteral">&quot;.&quot;</span>;</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;                }</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;            }</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;            <span class="keywordflow">else</span></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="comment">// check if to use one of the existing memory optimizer strategies is set</span></div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;                std::string memoryOptimizerStrategyName = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;                <a class="code" href="namespacearmnn.xhtml#af457790132251cde6545072d879c7684">ParseOptions</a>(options.<a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml#aecebc69597fe0d38a3964031c6eeb0a8">m_BackendOptions</a>, <span class="keywordtype">id</span>, [&amp;](std::string name, <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_backend_options_1_1_var.xhtml">BackendOptions::Var</a>&amp; value)</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;                {</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;                    if (name == <span class="stringliteral">&quot;MemoryOptimizerStrategy&quot;</span>)</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;                        memoryOptimizerStrategyName = ParseStringBackendOption(value, <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;                    }</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;                });</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;                <span class="keywordflow">if</span> (memoryOptimizerStrategyName != <span class="stringliteral">&quot;&quot;</span>)</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;                {</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;                    std::shared_ptr&lt;IMemoryOptimizerStrategy&gt; strategy =</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;                            <a class="code" href="namespacearmnn.xhtml#a7c8192a429fc68220e4fc308062a02ba">GetMemoryOptimizerStrategy</a>(memoryOptimizerStrategyName);</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;                    <span class="keywordflow">if</span> (!strategy)</div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;                    {</div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;                        <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;MemoryOptimizerStrategy: &quot;</span> &lt;&lt; memoryOptimizerStrategyName</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;                                           &lt;&lt; <span class="stringliteral">&quot; was not found.&quot;</span>;</div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;                    }</div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;                    <span class="keywordflow">else</span></div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;                    {</div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;                        <span class="keyword">using</span> <a class="code" href="namespacearmnn.xhtml#ab24d74259a053475f6040dd701a01952">BackendCapability</a> = <a class="code" href="structarmnn_1_1_backend_options_1_1_backend_option.xhtml">BackendOptions::BackendOption</a>;</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;                        <span class="keyword">auto</span> strategyType = <a class="code" href="namespacearmnn.xhtml#aa0a94554d6ef64e32793b3d54b2563f0">GetMemBlockStrategyTypeName</a>(strategy-&gt;GetMemBlockStrategyType());</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;                        <a class="code" href="namespacearmnn.xhtml#ab24d74259a053475f6040dd701a01952">BackendCapability</a> memOptimizeStrategyCapability {strategyType, <span class="keyword">true</span>};</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;                        <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.xhtml#abd839f0f103c1ae19a4b38d59b869108">HasCapability</a>(memOptimizeStrategyCapability, <span class="keywordtype">id</span>))</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;                        {</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;                            <a class="code" href="namespacearmnn.xhtml#ac2807505b850738bc8a1991ce669dd47">BackendRegistryInstance</a>().<a class="code" href="classarmnn_1_1_backend_registry.xhtml#ad02fbefe5c0f3ec53059dd630f1d5117">RegisterMemoryOptimizerStrategy</a>(<span class="keywordtype">id</span>, strategy);</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;                            <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;MemoryOptimizerStrategy: &quot;</span></div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;                                            &lt;&lt; memoryOptimizerStrategyName &lt;&lt; <span class="stringliteral">&quot; set for the backend &quot;</span> &lt;&lt; <span class="keywordtype">id</span> &lt;&lt; <span class="stringliteral">&quot;.&quot;</span>;</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;                        <span class="keywordflow">else</span></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;                            <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;Backend &quot;</span></div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;                                               &lt;&lt; <span class="keywordtype">id</span></div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;                                               &lt;&lt; <span class="stringliteral">&quot; does not have multi-axis packing capability and cannot support&quot;</span></div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;                                               &lt;&lt; <span class="stringliteral">&quot;MemoryOptimizerStrategy: &quot;</span> &lt;&lt; memoryOptimizerStrategyName &lt;&lt; <span class="stringliteral">&quot;.&quot;</span>;</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;                    }</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;            }</div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;            <span class="keyword">auto</span> context = backend-&gt;CreateBackendContext(options);</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;            <span class="comment">// backends are allowed to return nullptrs if they</span></div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;            <span class="comment">// don&#39;t wish to create a backend specific context</span></div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;            <span class="keywordflow">if</span> (context)</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;            {</div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;                m_BackendContexts.emplace(std::make_pair(<span class="keywordtype">id</span>, std::move(context)));</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;            }</div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;            supportedBackends.emplace(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;            unique_ptr&lt;armnn::profiling::IBackendProfiling&gt; profilingIface =</div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;                std::make_unique&lt;armnn::profiling::BackendProfiling&gt;(<a class="code" href="classarmnn_1_1profiling_1_1_backend_profiling.xhtml">armnn::profiling::BackendProfiling</a>(</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;                    options, m_ProfilingService, <span class="keywordtype">id</span>));</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;</div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;            <span class="comment">// Backends may also provide a profiling context. Ask for it now.</span></div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;            <span class="keyword">auto</span> profilingContext = backend-&gt;CreateBackendProfilingContext(options, profilingIface);</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;            <span class="comment">// Backends that don&#39;t support profiling will return a null profiling context.</span></div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;            <span class="keywordflow">if</span> (profilingContext)</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="comment">// Pass the context onto the profiling service.</span></div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;                m_ProfilingService.<a class="code" href="classarmnn_1_1profiling_1_1_profiling_service.xhtml#ab156998ddd9e58d2f79567bfb70e122c">AddBackendProfilingContext</a>(<span class="keywordtype">id</span>, profilingContext);</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;        }</div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;        <span class="keywordflow">catch</span> (<span class="keyword">const</span> <a class="code" href="classarmnn_1_1_backend_unavailable_exception.xhtml">BackendUnavailableException</a>&amp;)</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;            <span class="comment">// Ignore backends which are unavailable</span></div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;        }</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;</div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;    <a class="code" href="namespacearmnn.xhtml#ac2807505b850738bc8a1991ce669dd47">BackendRegistryInstance</a>().<a class="code" href="classarmnn_1_1_backend_registry.xhtml#a00341f4ceb455800e7d1c46b9d0f3f4a">SetProfilingService</a>(m_ProfilingService);</div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;    <span class="comment">// pass configuration info to the profiling service</span></div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;    m_ProfilingService.<a class="code" href="classarmnn_1_1profiling_1_1_profiling_service.xhtml#a004992fdba75e298495d6b628234a4bd">ConfigureProfilingService</a>(options.m_ProfilingOptions);</div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;    <span class="keywordflow">if</span> (options.m_ProfilingOptions.m_EnableProfiling)</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;    {</div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;        <span class="comment">// try to wait for the profiling service to initialise</span></div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;        m_ProfilingService.<a class="code" href="classarmnn_1_1profiling_1_1_profiling_service.xhtml#a80a0e4644a0be7b00bc581cb786d5a4f">WaitForProfilingServiceActivation</a>(3000);</div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;    }</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;    m_DeviceSpec.<a class="code" href="classarmnn_1_1_device_spec.xhtml#a35b48a741948fd9b2fca9698a698fdae">AddSupportedBackends</a>(supportedBackends);</div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;</div><div class="line"><a name="l00505"></a><span class="lineno">  505</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;Initialization time: &quot;</span> &lt;&lt; std::setprecision(2)</div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;                    &lt;&lt; std::fixed &lt;&lt; <a class="code" href="namespacearmnn.xhtml#a441621f00fd5665898c81a5ae3473c6b">armnn::GetTimeDuration</a>(start_time).count() &lt;&lt; <span class="stringliteral">&quot; ms.&quot;</span>;</div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;}</div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;</div><div class="line"><a name="l00509"></a><span class="lineno"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#a67c5b82a7e34c291702233eb716cf96f">  509</a></span>&#160;<a class="code" href="structarmnn_1_1_runtime_impl.xhtml#a67c5b82a7e34c291702233eb716cf96f">RuntimeImpl::~RuntimeImpl</a>()</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="keyword">const</span> <span class="keyword">auto</span> startTime = <a class="code" href="namespacearmnn.xhtml#ac895f6f6897ce335b7b433201bae0b48">armnn::GetTimeNow</a>();</div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;    std::vector&lt;int&gt; networkIDs;</div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;    <span class="keywordflow">try</span></div><div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;    {</div><div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;        <span class="comment">// Coverity fix: The following code may throw an exception of type std::length_error.</span></div><div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;        std::transform(m_LoadedNetworks.begin(), m_LoadedNetworks.end(),</div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;                       std::back_inserter(networkIDs),</div><div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;                       [](<span class="keyword">const</span> <span class="keyword">auto</span> &amp;pair) { <span class="keywordflow">return</span> pair.first; });</div><div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;    }</div><div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;    <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</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;        <span class="comment">// Coverity fix: BOOST_LOG_TRIVIAL (typically used to report errors) may throw an</span></div><div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;        <span class="comment">// exception of type std::length_error.</span></div><div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;        <span class="comment">// Using stderr instead in this context as there is no point in nesting try-catch blocks here.</span></div><div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;        std::cerr &lt;&lt; <span class="stringliteral">&quot;WARNING: An error has occurred when getting the IDs of the networks to unload: &quot;</span> &lt;&lt; e.what()</div><div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;                  &lt;&lt; <span class="stringliteral">&quot;\nSome of the loaded networks may not be unloaded&quot;</span> &lt;&lt; std::endl;</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;    <span class="comment">// We then proceed to unload all the networks which IDs have been appended to the list</span></div><div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;    <span class="comment">// up to the point the exception was thrown (if any).</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">for</span> (<span class="keyword">auto</span> networkID : networkIDs)</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;        <span class="keywordflow">try</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;            <span class="comment">// Coverity fix: UnloadNetwork() may throw an exception of type std::length_error,</span></div><div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;            <span class="comment">// boost::log::v2s_mt_posix::odr_violation or boost::log::v2s_mt_posix::system_error</span></div><div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;            <a class="code" href="structarmnn_1_1_runtime_impl.xhtml#aed397991b99f485ffab9a42aece47019">UnloadNetwork</a>(networkID);</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;        <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div><div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;        {</div><div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;            <span class="comment">// Coverity fix: BOOST_LOG_TRIVIAL (typically used to report errors) may throw an</span></div><div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;            <span class="comment">// exception of type std::length_error.</span></div><div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;            <span class="comment">// Using stderr instead in this context as there is no point in nesting try-catch blocks here.</span></div><div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;            std::cerr &lt;&lt; <span class="stringliteral">&quot;WARNING: An error has occurred when unloading network &quot;</span> &lt;&lt; networkID &lt;&lt; <span class="stringliteral">&quot;: &quot;</span> &lt;&lt; e.what()</div><div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;                      &lt;&lt; std::endl;</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;</div><div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;    <span class="comment">// Clear all dynamic backends.</span></div><div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;    <a class="code" href="classarmnn_1_1_dynamic_backend_utils.xhtml#a7e786263f454b19c40b78c4092a4af5b">DynamicBackendUtils::DeregisterDynamicBackends</a>(m_DeviceSpec.<a class="code" href="classarmnn_1_1_device_spec.xhtml#a2a52bc9548350a186cdb8f9565eed4f0">GetDynamicBackends</a>());</div><div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;    m_DeviceSpec.<a class="code" href="classarmnn_1_1_device_spec.xhtml#a5051d926510964d87440330c0469d9c5">ClearDynamicBackends</a>();</div><div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;    m_BackendContexts.clear();</div><div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;</div><div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;    <a class="code" href="namespacearmnn.xhtml#ac2807505b850738bc8a1991ce669dd47">BackendRegistryInstance</a>().<a class="code" href="classarmnn_1_1_backend_registry.xhtml#a00341f4ceb455800e7d1c46b9d0f3f4a">SetProfilingService</a>(<a class="code" href="structarmnn_1_1_empty_optional.xhtml">armnn::EmptyOptional</a>());</div><div class="line"><a name="l00555"></a><span class="lineno">  555</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;Shutdown time: &quot;</span> &lt;&lt; std::setprecision(2)</div><div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;                    &lt;&lt; std::fixed &lt;&lt; <a class="code" href="namespacearmnn.xhtml#a441621f00fd5665898c81a5ae3473c6b">armnn::GetTimeDuration</a>(startTime).count() &lt;&lt; <span class="stringliteral">&quot; ms.&quot;</span>;</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;</div><div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;<a class="code" href="classarmnn_1_1_loaded_network.xhtml">LoadedNetwork</a>* RuntimeImpl::GetLoadedNetworkPtr(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a> networkId)<span class="keyword"> const</span></div><div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;    std::lock_guard&lt;std::mutex&gt; lockGuard(m_Mutex);</div><div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;    <span class="keywordflow">return</span> m_LoadedNetworks.at(networkId).get();</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;</div><div class="line"><a name="l00565"></a><span class="lineno"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#aa198ca53eeb01b6e2134da924ec36405">  565</a></span>&#160;<a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> <a class="code" href="structarmnn_1_1_runtime_impl.xhtml#aa198ca53eeb01b6e2134da924ec36405">RuntimeImpl::GetInputTensorInfo</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a> networkId, <a class="code" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> layerId)<span class="keyword"> const</span></div><div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;    <span class="keywordflow">return</span> GetLoadedNetworkPtr(networkId)-&gt;<a class="code" href="classarmnn_1_1_loaded_network.xhtml#af616683424cb40d83b5a923db7f06f11">GetInputTensorInfo</a>(layerId);</div><div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;}</div><div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;</div><div class="line"><a name="l00570"></a><span class="lineno"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#a81c83702b94931626c6d84a3fa915362">  570</a></span>&#160;<a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> <a class="code" href="structarmnn_1_1_runtime_impl.xhtml#a81c83702b94931626c6d84a3fa915362">RuntimeImpl::GetOutputTensorInfo</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a> networkId, <a class="code" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> layerId)<span class="keyword"> const</span></div><div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;    <span class="keywordflow">return</span> GetLoadedNetworkPtr(networkId)-&gt;<a class="code" href="classarmnn_1_1_loaded_network.xhtml#a2b6b57945bc68f659e08d28c8a015e91">GetOutputTensorInfo</a>(layerId);</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;</div><div class="line"><a name="l00575"></a><span class="lineno"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#ac2cb56a0d7ee6fb53e9f97e624973c19">  575</a></span>&#160;std::vector&lt;ImportedInputId&gt; <a class="code" href="structarmnn_1_1_runtime_impl.xhtml#ac2cb56a0d7ee6fb53e9f97e624973c19">RuntimeImpl::ImportInputs</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a> networkId, <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#aa01bce88f89975a5a031db4cc8861527">InputTensors</a>&amp; inputTensors,</div><div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;                                                       <a class="code" href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277">MemorySource</a> forceImportMemorySource)</div><div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;{</div><div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;    <span class="keywordflow">return</span> GetLoadedNetworkPtr(networkId)-&gt;<a class="code" href="classarmnn_1_1_loaded_network.xhtml#a704bd570f39deda992bccdc639640dc7">ImportInputs</a>(inputTensors, forceImportMemorySource);</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"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#a7db39b06bc7f50287f54320d26df4373">  581</a></span>&#160;std::vector&lt;ImportedOutputId&gt; <a class="code" href="structarmnn_1_1_runtime_impl.xhtml#a7db39b06bc7f50287f54320d26df4373">RuntimeImpl::ImportOutputs</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a> networkId, <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a8f091a512915d1cb29a4ebf13dfc53ea">OutputTensors</a>&amp; outputTensors,</div><div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;                                                         <a class="code" href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277">MemorySource</a> forceImportMemorySource)</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="keywordflow">return</span> GetLoadedNetworkPtr(networkId)-&gt;<a class="code" href="classarmnn_1_1_loaded_network.xhtml#ac88d932e6e015a59551322b25796b11a">ImportOutputs</a>(outputTensors, forceImportMemorySource);</div><div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;}</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"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#ab2498cef8d01323527d59b6bb5848eed">  587</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="structarmnn_1_1_runtime_impl.xhtml#ab2498cef8d01323527d59b6bb5848eed">RuntimeImpl::ClearImportedInputs</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a> networkId, <span class="keyword">const</span> std::vector&lt;ImportedInputId&gt; inputIds)</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">return</span> GetLoadedNetworkPtr(networkId)-&gt;<a class="code" href="classarmnn_1_1_loaded_network.xhtml#aa792fd8b43401e3d6665110cdb0af27b">ClearImportedInputs</a>(inputIds);</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"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#a746d54f647096c2f9932dae20a6590a2">  591</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="structarmnn_1_1_runtime_impl.xhtml#a746d54f647096c2f9932dae20a6590a2">RuntimeImpl::ClearImportedOutputs</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a> networkId, <span class="keyword">const</span> std::vector&lt;ImportedOutputId&gt; outputIds)</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> GetLoadedNetworkPtr(networkId)-&gt;<a class="code" href="classarmnn_1_1_loaded_network.xhtml#af06f742ce80985a8fbbbc028c20259b1">ClearImportedOutputs</a>(outputIds);</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"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#aca51209383683ab8dbe801bbfddfe0c0">  596</a></span>&#160;<a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> <a class="code" href="structarmnn_1_1_runtime_impl.xhtml#aca51209383683ab8dbe801bbfddfe0c0">RuntimeImpl::EnqueueWorkload</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a> networkId,</div><div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;                                <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#aa01bce88f89975a5a031db4cc8861527">InputTensors</a>&amp; inputTensors,</div><div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;                                <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a8f091a512915d1cb29a4ebf13dfc53ea">OutputTensors</a>&amp; outputTensors,</div><div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;                                std::vector&lt;ImportedInputId&gt; preImportedInputIds,</div><div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;                                std::vector&lt;ImportedOutputId&gt; preImportedOutputIds)</div><div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;{</div><div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;    <span class="keyword">const</span> <span class="keyword">auto</span> startTime = <a class="code" href="namespacearmnn.xhtml#ac895f6f6897ce335b7b433201bae0b48">armnn::GetTimeNow</a>();</div><div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;</div><div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;    <a class="code" href="classarmnn_1_1_loaded_network.xhtml">LoadedNetwork</a>* loadedNetwork = GetLoadedNetworkPtr(networkId);</div><div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;</div><div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;    <span class="keywordflow">if</span> (!loadedNetwork)</div><div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;    {</div><div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;        <a class="code" href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282">error</a>) &lt;&lt; <span class="stringliteral">&quot;A Network with an id of &quot;</span> &lt;&lt; networkId &lt;&lt; <span class="stringliteral">&quot; does not exist.&quot;</span>;</div><div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">Status::Failure</a>;</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;    <span class="keywordflow">if</span> (loadedNetwork-&gt;<a class="code" href="classarmnn_1_1_loaded_network.xhtml#a390c87e27deac4f51af9533053b2ee14">IsAsyncEnabled</a>())</div><div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;    {</div><div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;        <a class="code" href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282">error</a>) &lt;&lt; <span class="stringliteral">&quot;Network &quot;</span> &lt;&lt; networkId &lt;&lt; <span class="stringliteral">&quot; is async enabled.&quot;</span>;</div><div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">Status::Failure</a>;</div><div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;    }</div><div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;    <a class="code" href="classarmnn_1_1_profiler_manager.xhtml#a93857080c2523bf3395e7aa7e6024d5c">ProfilerManager::GetInstance</a>().<a class="code" href="classarmnn_1_1_profiler_manager.xhtml#a7b1e3e5bf386004541be2b5b22443208">RegisterProfiler</a>(loadedNetwork-&gt;<a class="code" href="classarmnn_1_1_loaded_network.xhtml#aee8e1cb09e0d4dcbe64df111c5edd55e">GetProfiler</a>().get());</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;    <a class="code" href="_profiling_8hpp.xhtml#a5ccc65e2c464ac05ce311fdae7ede03a">ARMNN_SCOPED_PROFILING_EVENT</a>(<a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Compute::Undefined</a>, <span class="stringliteral">&quot;EnqueueWorkload&quot;</span>);</div><div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;</div><div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;    <span class="keyword">static</span> thread_local <a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a> lastId = networkId;</div><div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;    <span class="keywordflow">if</span> (lastId != networkId)</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;        LoadedNetworkFuncSafe(lastId, [](<a class="code" href="classarmnn_1_1_loaded_network.xhtml">LoadedNetwork</a>* network)</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;                network-&gt;<a class="code" href="classarmnn_1_1_loaded_network.xhtml#aaf8558a23ae9be6e7ea165989f1fa808">FreeWorkingMemory</a>();</div><div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;            });</div><div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;    }</div><div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;    lastId=networkId;</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;    <span class="keyword">auto</span> status = loadedNetwork-&gt;<a class="code" href="classarmnn_1_1_loaded_network.xhtml#a87880cba8611688cc57bec8f913958e8">EnqueueWorkload</a>(inputTensors, outputTensors,</div><div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;                                                 preImportedInputIds, preImportedOutputIds);</div><div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;</div><div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;</div><div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;    <span class="comment">// Check if we imported, if not there&#39;s no need to call the After EnqueueWorkload events</span></div><div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;    <span class="keywordflow">if</span> (!preImportedInputIds.empty() || !preImportedOutputIds.empty())</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;        <span class="comment">// Call After EnqueueWorkload events</span></div><div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; context : m_BackendContexts)</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;            context.second-&gt;AfterEnqueueWorkload(networkId);</div><div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;        }</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;    <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;Execution time: &quot;</span> &lt;&lt; std::setprecision(2)</div><div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;                    &lt;&lt; std::fixed &lt;&lt; <a class="code" href="namespacearmnn.xhtml#a441621f00fd5665898c81a5ae3473c6b">armnn::GetTimeDuration</a>(startTime).count() &lt;&lt; <span class="stringliteral">&quot; ms.&quot;</span>;</div><div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;    <span class="keywordflow">return</span> status;</div><div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;}</div><div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;</div><div class="line"><a name="l00648"></a><span class="lineno"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#a5637cf5a5ddd5da1058606e26ca06737">  648</a></span>&#160;<a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> <a class="code" href="structarmnn_1_1_runtime_impl.xhtml#a5637cf5a5ddd5da1058606e26ca06737">RuntimeImpl::Execute</a>(<a class="code" href="classarmnn_1_1experimental_1_1_i_working_mem_handle.xhtml">IWorkingMemHandle</a>&amp; iWorkingMemHandle,</div><div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;                            <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#aa01bce88f89975a5a031db4cc8861527">InputTensors</a>&amp; inputTensors,</div><div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;                            <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a8f091a512915d1cb29a4ebf13dfc53ea">OutputTensors</a>&amp; outputTensors,</div><div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;                            std::vector&lt;ImportedInputId&gt; preImportedInputs,</div><div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;                            std::vector&lt;ImportedOutputId&gt; preImportedOutputs)</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;    <span class="keyword">const</span> <span class="keyword">auto</span> startTime = <a class="code" href="namespacearmnn.xhtml#ac895f6f6897ce335b7b433201bae0b48">armnn::GetTimeNow</a>();</div><div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;</div><div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;    <a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a> networkId = iWorkingMemHandle.<a class="code" href="classarmnn_1_1experimental_1_1_i_working_mem_handle.xhtml#abd6c4b9a4ef8432f47d0df514cd4a014">GetNetworkId</a>();</div><div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;    <a class="code" href="classarmnn_1_1_loaded_network.xhtml">LoadedNetwork</a>* loadedNetwork = GetLoadedNetworkPtr(networkId);</div><div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;</div><div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;    <span class="keywordflow">if</span> (!loadedNetwork)</div><div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;    {</div><div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;        <a class="code" href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282">error</a>) &lt;&lt; <span class="stringliteral">&quot;A Network with an id of &quot;</span> &lt;&lt; networkId &lt;&lt; <span class="stringliteral">&quot; does not exist.&quot;</span>;</div><div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">Status::Failure</a>;</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;    <span class="keywordflow">if</span> (!loadedNetwork-&gt;<a class="code" href="classarmnn_1_1_loaded_network.xhtml#a390c87e27deac4f51af9533053b2ee14">IsAsyncEnabled</a>())</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;        <a class="code" href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282">error</a>) &lt;&lt; <span class="stringliteral">&quot;Attempting execute &quot;</span> &lt;&lt; networkId &lt;&lt; <span class="stringliteral">&quot; when it is not async enabled.&quot;</span>;</div><div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">Status::Failure</a>;</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;    <a class="code" href="classarmnn_1_1_profiler_manager.xhtml#a93857080c2523bf3395e7aa7e6024d5c">ProfilerManager::GetInstance</a>().<a class="code" href="classarmnn_1_1_profiler_manager.xhtml#a7b1e3e5bf386004541be2b5b22443208">RegisterProfiler</a>(loadedNetwork-&gt;<a class="code" href="classarmnn_1_1_loaded_network.xhtml#aee8e1cb09e0d4dcbe64df111c5edd55e">GetProfiler</a>().get());</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">  671</span>&#160;    <a class="code" href="_profiling_8hpp.xhtml#a5ccc65e2c464ac05ce311fdae7ede03a">ARMNN_SCOPED_PROFILING_EVENT</a>(<a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Compute::Undefined</a>, <span class="stringliteral">&quot;Execute&quot;</span>);</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="keyword">auto</span> status = loadedNetwork-&gt;<a class="code" href="classarmnn_1_1_loaded_network.xhtml#a95b1c23f6f296a0c39383bef20fdd46a">Execute</a>(inputTensors,</div><div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;                                         outputTensors,</div><div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;                                         iWorkingMemHandle,</div><div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;                                         preImportedInputs,</div><div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;                                         preImportedOutputs);</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;    <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;Execution time: &quot;</span> &lt;&lt; std::setprecision(2)</div><div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;                    &lt;&lt; std::fixed &lt;&lt; <a class="code" href="namespacearmnn.xhtml#a441621f00fd5665898c81a5ae3473c6b">armnn::GetTimeDuration</a>(startTime).count() &lt;&lt; <span class="stringliteral">&quot; ms.&quot;</span>;</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">return</span> status;</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="comment"></span></div><div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;<span class="comment">/// Create a new unique WorkingMemHandle object. Create multiple handles if you wish to have</span></div><div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;<span class="comment">/// overlapped Execution by calling this function from different threads.</span></div><div class="line"><a name="l00687"></a><span class="lineno"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#a16e72675c37a8f251cf02951e222d4ab">  687</a></span>&#160;<span class="comment"></span>std::unique_ptr&lt;IWorkingMemHandle&gt; <a class="code" href="structarmnn_1_1_runtime_impl.xhtml#a16e72675c37a8f251cf02951e222d4ab">RuntimeImpl::CreateWorkingMemHandle</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a> networkId)</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;    <a class="code" href="classarmnn_1_1_loaded_network.xhtml">LoadedNetwork</a>* loadedNetwork = GetLoadedNetworkPtr(networkId);</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;    <span class="keywordflow">if</span> (!loadedNetwork)</div><div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;    {</div><div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;        <a class="code" href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282">error</a>) &lt;&lt; <span class="stringliteral">&quot;A Network with an id of &quot;</span> &lt;&lt; networkId &lt;&lt; <span class="stringliteral">&quot; does not exist.&quot;</span>;</div><div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;    }</div><div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;    <span class="keywordflow">if</span> (!loadedNetwork-&gt;<a class="code" href="classarmnn_1_1_loaded_network.xhtml#a390c87e27deac4f51af9533053b2ee14">IsAsyncEnabled</a>())</div><div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;    {</div><div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;        <a class="code" href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282">error</a>) &lt;&lt; <span class="stringliteral">&quot;Network &quot;</span> &lt;&lt; networkId &lt;&lt; <span class="stringliteral">&quot; is not async enabled.&quot;</span>;</div><div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;    }</div><div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;    <a class="code" href="classarmnn_1_1_profiler_manager.xhtml#a93857080c2523bf3395e7aa7e6024d5c">ProfilerManager::GetInstance</a>().<a class="code" href="classarmnn_1_1_profiler_manager.xhtml#a7b1e3e5bf386004541be2b5b22443208">RegisterProfiler</a>(loadedNetwork-&gt;<a class="code" href="classarmnn_1_1_loaded_network.xhtml#aee8e1cb09e0d4dcbe64df111c5edd55e">GetProfiler</a>().get());</div><div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;</div><div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;    <a class="code" href="_profiling_8hpp.xhtml#a5ccc65e2c464ac05ce311fdae7ede03a">ARMNN_SCOPED_PROFILING_EVENT</a>(<a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Compute::Undefined</a>, <span class="stringliteral">&quot;CreateWorkingMemHandle&quot;</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="keyword">static</span> thread_local <a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a> lastId = networkId;</div><div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;    <span class="keywordflow">if</span> (lastId != networkId)</div><div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;    {</div><div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;        LoadedNetworkFuncSafe(lastId, [](<a class="code" href="classarmnn_1_1_loaded_network.xhtml">LoadedNetwork</a>* network)</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;            network-&gt;<a class="code" href="classarmnn_1_1_loaded_network.xhtml#aaf8558a23ae9be6e7ea165989f1fa808">FreeWorkingMemory</a>();</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;    lastId=networkId;</div><div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;</div><div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;    <span class="keywordflow">return</span> loadedNetwork-&gt;<a class="code" href="classarmnn_1_1_loaded_network.xhtml#a16e72675c37a8f251cf02951e222d4ab">CreateWorkingMemHandle</a>(networkId);</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;</div><div class="line"><a name="l00718"></a><span class="lineno"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#a957014ce1bfd27e99f0a50b3ced439e1">  718</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="structarmnn_1_1_runtime_impl.xhtml#a957014ce1bfd27e99f0a50b3ced439e1">RuntimeImpl::RegisterDebugCallback</a>(<a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">NetworkId</a> networkId, <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a15f3ad9b5e4e3d46b0a6dda246a7bc28">DebugCallbackFunction</a>&amp; func)</div><div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;{</div><div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;    <a class="code" href="classarmnn_1_1_loaded_network.xhtml">LoadedNetwork</a>* loadedNetwork = GetLoadedNetworkPtr(networkId);</div><div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;    loadedNetwork-&gt;<a class="code" href="classarmnn_1_1_loaded_network.xhtml#a091ea8d2d804c8902f3120fdf2a36512">RegisterDebugCallback</a>(func);</div><div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;}</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;<span class="keywordtype">void</span> RuntimeImpl::LoadDynamicBackends(<span class="keyword">const</span> std::string&amp; overrideBackendPath)</div><div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;{</div><div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;    <span class="comment">// Get the paths where to load the dynamic backends from</span></div><div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;    std::vector&lt;std::string&gt; backendPaths = <a class="code" href="classarmnn_1_1_dynamic_backend_utils.xhtml#a6d47980f97dd4d3aab24d818f8474dce">DynamicBackendUtils::GetBackendPaths</a>(overrideBackendPath);</div><div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;</div><div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;    <span class="comment">// Get the shared objects to try to load as dynamic backends</span></div><div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;    std::vector&lt;std::string&gt; sharedObjects = <a class="code" href="classarmnn_1_1_dynamic_backend_utils.xhtml#a48e1fb944c3ef4086365aedcadb4c311">DynamicBackendUtils::GetSharedObjects</a>(backendPaths);</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;    <span class="comment">// Create a list of dynamic backends</span></div><div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;    m_DynamicBackends = <a class="code" href="classarmnn_1_1_dynamic_backend_utils.xhtml#a42e250dfa19b9df3abdb273e1d35fa5b">DynamicBackendUtils::CreateDynamicBackends</a>(sharedObjects);</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;    <span class="comment">// Register the dynamic backends in the backend registry</span></div><div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;    <a class="code" href="namespacearmnn.xhtml#a1854d9cda81304325664363c1fd0fb27">BackendIdSet</a> registeredBackendIds = <a class="code" href="classarmnn_1_1_dynamic_backend_utils.xhtml#a55415a62bbb0a72c1a2f333501989401">DynamicBackendUtils::RegisterDynamicBackends</a>(m_DynamicBackends);</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="comment">// Add the registered dynamic backend ids to the list of supported backends</span></div><div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;    m_DeviceSpec.<a class="code" href="classarmnn_1_1_device_spec.xhtml#a35b48a741948fd9b2fca9698a698fdae">AddSupportedBackends</a>(registeredBackendIds, <span class="keyword">true</span>);</div><div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;}</div><div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;</div><div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;} <span class="comment">// namespace armnn</span></div><div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407aad42f6697b035b7580e4fef93be20b4d"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407aad42f6697b035b7580e4fef93be20b4d">armnn::BoostLogSeverityMapping::debug</a></div></div>
<div class="ttc" id="classarmnn_1_1_device_spec_xhtml_a35b48a741948fd9b2fca9698a698fdae"><div class="ttname"><a href="classarmnn_1_1_device_spec.xhtml#a35b48a741948fd9b2fca9698a698fdae">armnn::DeviceSpec::AddSupportedBackends</a></div><div class="ttdeci">void AddSupportedBackends(const BackendIdSet &amp;backendIds, bool isDynamic=false)</div><div class="ttdef"><b>Definition:</b> <a href="_device_spec_8hpp_source.xhtml#l00030">DeviceSpec.hpp:30</a></div></div>
<div class="ttc" id="classarmnn_1_1_loaded_network_xhtml_a95b1c23f6f296a0c39383bef20fdd46a"><div class="ttname"><a href="classarmnn_1_1_loaded_network.xhtml#a95b1c23f6f296a0c39383bef20fdd46a">armnn::LoadedNetwork::Execute</a></div><div class="ttdeci">Status Execute(const InputTensors &amp;inputTensors, const OutputTensors &amp;outputTensors, IWorkingMemHandle &amp;workingMemHandle, std::vector&lt; ImportedInputId &gt; preImportedInputs={}, std::vector&lt; ImportedOutputId &gt; preImportedOutputs={})</div><div class="ttdoc">Thread safe execution of the loaded network. </div><div class="ttdef"><b>Definition:</b> <a href="_loaded_network_8cpp_source.xhtml#l01599">LoadedNetwork.cpp:1599</a></div></div>
<div class="ttc" id="structarmnn_1_1_runtime_impl_xhtml_aa198ca53eeb01b6e2134da924ec36405"><div class="ttname"><a href="structarmnn_1_1_runtime_impl.xhtml#aa198ca53eeb01b6e2134da924ec36405">armnn::RuntimeImpl::GetInputTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetInputTensorInfo(NetworkId networkId, LayerBindingId layerId) const</div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00565">Runtime.cpp:565</a></div></div>
<div class="ttc" id="classarmnn_1_1_loaded_network_xhtml_a16e72675c37a8f251cf02951e222d4ab"><div class="ttname"><a href="classarmnn_1_1_loaded_network.xhtml#a16e72675c37a8f251cf02951e222d4ab">armnn::LoadedNetwork::CreateWorkingMemHandle</a></div><div class="ttdeci">std::unique_ptr&lt; IWorkingMemHandle &gt; CreateWorkingMemHandle(NetworkId networkId)</div><div class="ttdoc">Create a new unique WorkingMemHandle object. </div><div class="ttdef"><b>Definition:</b> <a href="_loaded_network_8cpp_source.xhtml#l01821">LoadedNetwork.cpp:1821</a></div></div>
<div class="ttc" id="classarmnn_1_1profiling_1_1_profiling_service_xhtml_a80a0e4644a0be7b00bc581cb786d5a4f"><div class="ttname"><a href="classarmnn_1_1profiling_1_1_profiling_service.xhtml#a80a0e4644a0be7b00bc581cb786d5a4f">armnn::profiling::ProfilingService::WaitForProfilingServiceActivation</a></div><div class="ttdeci">void WaitForProfilingServiceActivation(unsigned int timeout) override</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_service_8cpp_source.xhtml#l00516">ProfilingService.cpp:516</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_abd839f0f103c1ae19a4b38d59b869108"><div class="ttname"><a href="namespacearmnn.xhtml#abd839f0f103c1ae19a4b38d59b869108">armnn::HasCapability</a></div><div class="ttdeci">bool HasCapability(const std::string &amp;name, const BackendCapabilities &amp;capabilities)</div><div class="ttdoc">Convenience function to check if a capability exists in a BackendCapabilites struct. </div><div class="ttdef"><b>Definition:</b> <a href="_backend_helper_8cpp_source.xhtml#l00058">BackendHelper.cpp:58</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#l00040">Runtime.cpp:40</a></div></div>
<div class="ttc" id="_memory_optimizer_strategy_library_8hpp_xhtml"><div class="ttname"><a href="_memory_optimizer_strategy_library_8hpp.xhtml">MemoryOptimizerStrategyLibrary.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_backend_registry_xhtml_afc0c63ca8db8957b58826f6d7bd231b2"><div class="ttname"><a href="classarmnn_1_1_backend_registry.xhtml#afc0c63ca8db8957b58826f6d7bd231b2">armnn::BackendRegistry::GetFactory</a></div><div class="ttdeci">FactoryFunction GetFactory(const BackendId &amp;id) const</div><div class="ttdef"><b>Definition:</b> <a href="_backend_registry_8cpp_source.xhtml#l00055">BackendRegistry.cpp:55</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_runtime_xhtml_af87d0743d1266e264c3197a32299f4b2"><div class="ttname"><a href="classarmnn_1_1_i_runtime.xhtml#af87d0743d1266e264c3197a32299f4b2">armnn::IRuntime::GetProfiler</a></div><div class="ttdeci">const std::shared_ptr&lt; IProfiler &gt; GetProfiler(NetworkId networkId) const</div><div class="ttdoc">Gets the profiler corresponding to the given network id. </div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00135">Runtime.cpp:135</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="classarmnn_1_1_backend_options_1_1_var_xhtml"><div class="ttname"><a href="classarmnn_1_1_backend_options_1_1_var.xhtml">armnn::BackendOptions::Var</a></div><div class="ttdoc">Very basic type safe variant. </div><div class="ttdef"><b>Definition:</b> <a href="_backend_options_8hpp_source.xhtml#l00038">BackendOptions.hpp:38</a></div></div>
<div class="ttc" id="classarmnn_1_1_dynamic_backend_utils_xhtml_a7e786263f454b19c40b78c4092a4af5b"><div class="ttname"><a href="classarmnn_1_1_dynamic_backend_utils.xhtml#a7e786263f454b19c40b78c4092a4af5b">armnn::DynamicBackendUtils::DeregisterDynamicBackends</a></div><div class="ttdeci">static void DeregisterDynamicBackends(const BackendIdSet &amp;dynamicBackends)</div><div class="ttdef"><b>Definition:</b> <a href="_dynamic_backend_utils_8cpp_source.xhtml#l00312">DynamicBackendUtils.cpp:312</a></div></div>
<div class="ttc" id="classarmnn_1_1experimental_1_1_i_working_mem_handle_xhtml_abd6c4b9a4ef8432f47d0df514cd4a014"><div class="ttname"><a href="classarmnn_1_1experimental_1_1_i_working_mem_handle.xhtml#abd6c4b9a4ef8432f47d0df514cd4a014">armnn::experimental::IWorkingMemHandle::GetNetworkId</a></div><div class="ttdeci">virtual NetworkId GetNetworkId()=0</div><div class="ttdoc">Returns the NetworkId of the Network that this IWorkingMemHandle works with. </div></div>
<div class="ttc" id="namespacearmnn_xhtml_a1854d9cda81304325664363c1fd0fb27"><div class="ttname"><a href="namespacearmnn.xhtml#a1854d9cda81304325664363c1fd0fb27">armnn::BackendIdSet</a></div><div class="ttdeci">std::unordered_set&lt; BackendId &gt; BackendIdSet</div><div class="ttdef"><b>Definition:</b> <a href="_backend_id_8hpp_source.xhtml#l00193">BackendId.hpp:193</a></div></div>
<div class="ttc" id="classarmnn_1_1profiling_1_1_timeline_utility_methods_xhtml_a0e5c863245b8d7dc5e874c0c66eebae1"><div class="ttname"><a href="classarmnn_1_1profiling_1_1_timeline_utility_methods.xhtml#a0e5c863245b8d7dc5e874c0c66eebae1">armnn::profiling::TimelineUtilityMethods::GetTimelineUtils</a></div><div class="ttdeci">static std::unique_ptr&lt; TimelineUtilityMethods &gt; GetTimelineUtils(ProfilingService &amp;profilingService)</div><div class="ttdef"><b>Definition:</b> <a href="_timeline_utility_methods_8cpp_source.xhtml#l00018">TimelineUtilityMethods.cpp:18</a></div></div>
<div class="ttc" id="classarmnn_1_1_profiler_manager_xhtml_a93857080c2523bf3395e7aa7e6024d5c"><div class="ttname"><a href="classarmnn_1_1_profiler_manager.xhtml#a93857080c2523bf3395e7aa7e6024d5c">armnn::ProfilerManager::GetInstance</a></div><div class="ttdeci">static ProfilerManager &amp; GetInstance()</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_8cpp_source.xhtml#l00568">Profiling.cpp:568</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="include_2armnn_2backends_2_i_backend_context_8hpp_xhtml"><div class="ttname"><a href="include_2armnn_2backends_2_i_backend_context_8hpp.xhtml">IBackendContext.hpp</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_af457790132251cde6545072d879c7684"><div class="ttname"><a href="namespacearmnn.xhtml#af457790132251cde6545072d879c7684">armnn::ParseOptions</a></div><div class="ttdeci">void ParseOptions(const std::vector&lt; BackendOptions &gt; &amp;options, BackendId backend, F f)</div><div class="ttdef"><b>Definition:</b> <a href="_backend_options_8hpp_source.xhtml#l00297">BackendOptions.hpp:297</a></div></div>
<div class="ttc" id="structarmnn_1_1_runtime_impl_xhtml_a5637cf5a5ddd5da1058606e26ca06737"><div class="ttname"><a href="structarmnn_1_1_runtime_impl.xhtml#a5637cf5a5ddd5da1058606e26ca06737">armnn::RuntimeImpl::Execute</a></div><div class="ttdeci">Status Execute(IWorkingMemHandle &amp;workingMemHandle, const InputTensors &amp;inputTensors, const OutputTensors &amp;outputTensors, std::vector&lt; ImportedInputId &gt; preImportedInputs, std::vector&lt; ImportedOutputId &gt; preImportedOutputs)</div><div class="ttdoc">This is an experimental function. </div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00648">Runtime.cpp:648</a></div></div>
<div class="ttc" id="include_2armnn_2_version_8hpp_xhtml_a50bf0553d5c4b76d18a3d37e155b4d11"><div class="ttname"><a href="include_2armnn_2_version_8hpp.xhtml#a50bf0553d5c4b76d18a3d37e155b4d11">ARMNN_VERSION</a></div><div class="ttdeci">#define ARMNN_VERSION</div><div class="ttdoc">ARMNN_VERSION: &quot;X.Y.Z&quot; where: X = Major version number Y = Minor version number Z = Patch version num...</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2_version_8hpp_source.xhtml#l00022">Version.hpp:22</a></div></div>
<div class="ttc" id="_runtime_8hpp_xhtml"><div class="ttname"><a href="_runtime_8hpp.xhtml">Runtime.hpp</a></div></div>
<div class="ttc" id="structarmnn_1_1_runtime_impl_xhtml_aed397991b99f485ffab9a42aece47019"><div class="ttname"><a href="structarmnn_1_1_runtime_impl.xhtml#aed397991b99f485ffab9a42aece47019">armnn::RuntimeImpl::UnloadNetwork</a></div><div class="ttdeci">Status UnloadNetwork(NetworkId networkId)</div><div class="ttdoc">Unloads a network from the Runtime. </div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00214">Runtime.cpp:214</a></div></div>
<div class="ttc" id="classarmnn_1_1_backend_registry_xhtml_ad02fbefe5c0f3ec53059dd630f1d5117"><div class="ttname"><a href="classarmnn_1_1_backend_registry.xhtml#ad02fbefe5c0f3ec53059dd630f1d5117">armnn::BackendRegistry::RegisterMemoryOptimizerStrategy</a></div><div class="ttdeci">void RegisterMemoryOptimizerStrategy(const BackendId &amp;id, std::shared_ptr&lt; IMemoryOptimizerStrategy &gt; strategy)</div><div class="ttdef"><b>Definition:</b> <a href="_backend_registry_8cpp_source.xhtml#l00131">BackendRegistry.cpp:131</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a150468a02bd7b2d2d061c4aaaee939f0"><div class="ttname"><a href="namespacearmnn.xhtml#a150468a02bd7b2d2d061c4aaaee939f0">armnn::IRuntimePtr</a></div><div class="ttdeci">std::unique_ptr&lt; IRuntime, void(*)(IRuntime *runtime)&gt; IRuntimePtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_runtime_8hpp_source.xhtml#l00031">IRuntime.hpp:31</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_runtime_xhtml_a25f528b76d8116e08cddc7d4a8661ee1"><div class="ttname"><a href="classarmnn_1_1_i_runtime.xhtml#a25f528b76d8116e08cddc7d4a8661ee1">armnn::IRuntime::GetInputTensorInfo</a></div><div class="ttdeci">TensorInfo GetInputTensorInfo(NetworkId networkId, LayerBindingId layerId) const</div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00070">Runtime.cpp:70</a></div></div>
<div class="ttc" id="classarmnn_1_1_backend_registry_xhtml_a89e24dab4e47d8080ce0665f737a00e6"><div class="ttname"><a href="classarmnn_1_1_backend_registry.xhtml#a89e24dab4e47d8080ce0665f737a00e6">armnn::BackendRegistry::RegisterAllocator</a></div><div class="ttdeci">void RegisterAllocator(const BackendId &amp;id, std::shared_ptr&lt; ICustomAllocator &gt; alloc)</div><div class="ttdef"><b>Definition:</b> <a href="_backend_registry_8cpp_source.xhtml#l00110">BackendRegistry.cpp:110</a></div></div>
<div class="ttc" id="classarmnn_1_1_loaded_network_xhtml_af616683424cb40d83b5a923db7f06f11"><div class="ttname"><a href="classarmnn_1_1_loaded_network.xhtml#af616683424cb40d83b5a923db7f06f11">armnn::LoadedNetwork::GetInputTensorInfo</a></div><div class="ttdeci">TensorInfo GetInputTensorInfo(LayerBindingId layerId) const</div><div class="ttdef"><b>Definition:</b> <a href="_loaded_network_8cpp_source.xhtml#l00588">LoadedNetwork.cpp:588</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="namespacearmnn_xhtml_ac2807505b850738bc8a1991ce669dd47"><div class="ttname"><a href="namespacearmnn.xhtml#ac2807505b850738bc8a1991ce669dd47">armnn::BackendRegistryInstance</a></div><div class="ttdeci">BackendRegistry &amp; BackendRegistryInstance()</div><div class="ttdef"><b>Definition:</b> <a href="_backend_registry_8cpp_source.xhtml#l00013">BackendRegistry.cpp:13</a></div></div>
<div class="ttc" id="structarmnn_1_1_runtime_impl_xhtml_af92b5ae61208a778571bcea7e6aac7b4"><div class="ttname"><a href="structarmnn_1_1_runtime_impl.xhtml#af92b5ae61208a778571bcea7e6aac7b4">armnn::RuntimeImpl::LoadNetwork</a></div><div class="ttdeci">Status LoadNetwork(NetworkId &amp;networkIdOut, IOptimizedNetworkPtr network)</div><div class="ttdoc">Loads a complete network into the Runtime. </div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00150">Runtime.cpp:150</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="classarmnn_1_1_dynamic_backend_utils_xhtml_a42e250dfa19b9df3abdb273e1d35fa5b"><div class="ttname"><a href="classarmnn_1_1_dynamic_backend_utils.xhtml#a42e250dfa19b9df3abdb273e1d35fa5b">armnn::DynamicBackendUtils::CreateDynamicBackends</a></div><div class="ttdeci">static std::vector&lt; DynamicBackendPtr &gt; CreateDynamicBackends(const std::vector&lt; std::string &gt; &amp;sharedObjects)</div><div class="ttdef"><b>Definition:</b> <a href="_dynamic_backend_utils_8cpp_source.xhtml#l00261">DynamicBackendUtils.cpp:261</a></div></div>
<div class="ttc" id="structarmnn_1_1_runtime_impl_xhtml_a81c83702b94931626c6d84a3fa915362"><div class="ttname"><a href="structarmnn_1_1_runtime_impl.xhtml#a81c83702b94931626c6d84a3fa915362">armnn::RuntimeImpl::GetOutputTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetOutputTensorInfo(NetworkId networkId, LayerBindingId layerId) const</div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00570">Runtime.cpp:570</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="structarmnn_1_1_i_runtime_1_1_creation_options_xhtml_a6e8601cb2ffa03a83dbfae67b598ba4e"><div class="ttname"><a href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml#a6e8601cb2ffa03a83dbfae67b598ba4e">armnn::IRuntime::CreationOptions::m_MemoryOptimizerStrategyMap</a></div><div class="ttdeci">std::map&lt; BackendId, std::shared_ptr&lt; IMemoryOptimizerStrategy &gt; &gt; m_MemoryOptimizerStrategyMap</div><div class="ttdoc">A map to define a custom memory optimizer strategy for specific backend Ids. </div><div class="ttdef"><b>Definition:</b> <a href="_i_runtime_8hpp_source.xhtml#l00120">IRuntime.hpp:120</a></div></div>
<div class="ttc" id="classarmnn_1_1_loaded_network_xhtml_a2b6b57945bc68f659e08d28c8a015e91"><div class="ttname"><a href="classarmnn_1_1_loaded_network.xhtml#a2b6b57945bc68f659e08d28c8a015e91">armnn::LoadedNetwork::GetOutputTensorInfo</a></div><div class="ttdeci">TensorInfo GetOutputTensorInfo(LayerBindingId layerId) const</div><div class="ttdef"><b>Definition:</b> <a href="_loaded_network_8cpp_source.xhtml#l00602">LoadedNetwork.cpp:602</a></div></div>
<div class="ttc" id="_backend_helper_8hpp_xhtml"><div class="ttname"><a href="_backend_helper_8hpp.xhtml">BackendHelper.hpp</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="classarmnn_1_1_i_runtime_xhtml"><div class="ttname"><a href="classarmnn_1_1_i_runtime.xhtml">armnn::IRuntime</a></div><div class="ttdef"><b>Definition:</b> <a href="_i_runtime_8hpp_source.xhtml#l00072">IRuntime.hpp:72</a></div></div>
<div class="ttc" id="classarmnn_1_1_loaded_network_xhtml_a704bd570f39deda992bccdc639640dc7"><div class="ttname"><a href="classarmnn_1_1_loaded_network.xhtml#a704bd570f39deda992bccdc639640dc7">armnn::LoadedNetwork::ImportInputs</a></div><div class="ttdeci">std::vector&lt; ImportedInputId &gt; ImportInputs(const InputTensors &amp;inputTensors, MemorySource forceImportMemorySource=MemorySource::Undefined)</div><div class="ttdef"><b>Definition:</b> <a href="_loaded_network_8cpp_source.xhtml#l01306">LoadedNetwork.cpp:1306</a></div></div>
<div class="ttc" id="structarmnn_1_1_i_runtime_1_1_creation_options_1_1_external_profiling_options_xhtml_a26d42007440bb01a1a6d0ab3b5a657ee"><div class="ttname"><a href="structarmnn_1_1_i_runtime_1_1_creation_options_1_1_external_profiling_options.xhtml#a26d42007440bb01a1a6d0ab3b5a657ee">armnn::IRuntime::CreationOptions::ExternalProfilingOptions::m_EnableProfiling</a></div><div class="ttdeci">bool m_EnableProfiling</div><div class="ttdoc">Indicates whether external profiling is enabled or not. </div><div class="ttdef"><b>Definition:</b> <a href="_i_runtime_8hpp_source.xhtml#l00136">IRuntime.hpp:136</a></div></div>
<div class="ttc" id="_dynamic_backend_utils_8hpp_xhtml"><div class="ttname"><a href="_dynamic_backend_utils_8hpp.xhtml">DynamicBackendUtils.hpp</a></div></div>
<div class="ttc" id="structarmnn_1_1_runtime_impl_xhtml_a957014ce1bfd27e99f0a50b3ced439e1"><div class="ttname"><a href="structarmnn_1_1_runtime_impl.xhtml#a957014ce1bfd27e99f0a50b3ced439e1">armnn::RuntimeImpl::RegisterDebugCallback</a></div><div class="ttdeci">void RegisterDebugCallback(NetworkId networkId, const DebugCallbackFunction &amp;func)</div><div class="ttdoc">Registers a callback function to debug layers performing custom computations on intermediate tensors...</div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00718">Runtime.cpp:718</a></div></div>
<div class="ttc" id="structarmnn_1_1_runtime_impl_xhtml_af87d0743d1266e264c3197a32299f4b2"><div class="ttname"><a href="structarmnn_1_1_runtime_impl.xhtml#af87d0743d1266e264c3197a32299f4b2">armnn::RuntimeImpl::GetProfiler</a></div><div class="ttdeci">const std::shared_ptr&lt; IProfiler &gt; GetProfiler(NetworkId networkId) const</div><div class="ttdoc">Gets the profiler corresponding to the given network id. </div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00270">Runtime.cpp:270</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a15f3ad9b5e4e3d46b0a6dda246a7bc28"><div class="ttname"><a href="namespacearmnn.xhtml#a15f3ad9b5e4e3d46b0a6dda246a7bc28">armnn::DebugCallbackFunction</a></div><div class="ttdeci">std::function&lt; void(LayerGuid guid, unsigned int slotIndex, ITensorHandle *tensorHandle)&gt; DebugCallbackFunction</div><div class="ttdoc">Define the type of callback for the Debug layer to call. </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00371">Types.hpp:371</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_runtime_xhtml_ad728a798fda08188df91623caebd527c"><div class="ttname"><a href="classarmnn_1_1_i_runtime.xhtml#ad728a798fda08188df91623caebd527c">armnn::IRuntime::~IRuntime</a></div><div class="ttdeci">~IRuntime()</div></div>
<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282">armnn::BoostLogSeverityMapping::error</a></div></div>
<div class="ttc" id="_backend_registry_8hpp_xhtml"><div class="ttname"><a href="_backend_registry_8hpp.xhtml">BackendRegistry.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_dynamic_backend_utils_xhtml_a6d47980f97dd4d3aab24d818f8474dce"><div class="ttname"><a href="classarmnn_1_1_dynamic_backend_utils.xhtml#a6d47980f97dd4d3aab24d818f8474dce">armnn::DynamicBackendUtils::GetBackendPaths</a></div><div class="ttdeci">static std::vector&lt; std::string &gt; GetBackendPaths(const std::string &amp;overrideBackendPath=&quot;&quot;)</div><div class="ttdef"><b>Definition:</b> <a href="_dynamic_backend_utils_8cpp_source.xhtml#l00079">DynamicBackendUtils.cpp:79</a></div></div>
<div class="ttc" id="_profiling_8hpp_xhtml_a5ccc65e2c464ac05ce311fdae7ede03a"><div class="ttname"><a href="_profiling_8hpp.xhtml#a5ccc65e2c464ac05ce311fdae7ede03a">ARMNN_SCOPED_PROFILING_EVENT</a></div><div class="ttdeci">#define ARMNN_SCOPED_PROFILING_EVENT(backendId, name)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_8hpp_source.xhtml#l00220">Profiling.hpp:220</a></div></div>
<div class="ttc" id="namespacearmnn_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#l00277">Types.hpp:277</a></div></div>
<div class="ttc" id="_timer_8hpp_xhtml"><div class="ttname"><a href="_timer_8hpp.xhtml">Timer.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_runtime_xhtml_a978f3d0d34a944b40240bd130d61e3b6"><div class="ttname"><a href="classarmnn_1_1_i_runtime.xhtml#a978f3d0d34a944b40240bd130d61e3b6">armnn::IRuntime::Destroy</a></div><div class="ttdeci">static void Destroy(IRuntime *runtime)</div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00045">Runtime.cpp:45</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#l00033">IRuntime.hpp:33</a></div></div>
<div class="ttc" id="_polymorphic_downcast_8hpp_xhtml"><div class="ttname"><a href="_polymorphic_downcast_8hpp.xhtml">PolymorphicDowncast.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_runtime_xhtml_a957014ce1bfd27e99f0a50b3ced439e1"><div class="ttname"><a href="classarmnn_1_1_i_runtime.xhtml#a957014ce1bfd27e99f0a50b3ced439e1">armnn::IRuntime::RegisterDebugCallback</a></div><div class="ttdeci">void RegisterDebugCallback(NetworkId networkId, const DebugCallbackFunction &amp;func)</div><div class="ttdoc">Registers a callback function to debug layers performing custom computations on intermediate tensors...</div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00140">Runtime.cpp:140</a></div></div>
<div class="ttc" id="classarmnn_1_1profiling_1_1_backend_profiling_xhtml"><div class="ttname"><a href="classarmnn_1_1profiling_1_1_backend_profiling.xhtml">armnn::profiling::BackendProfiling</a></div><div class="ttdef"><b>Definition:</b> <a href="_backend_profiling_8hpp_source.xhtml#l00017">BackendProfiling.hpp:17</a></div></div>
<div class="ttc" id="namespacestd_xhtml"><div class="ttname"><a href="namespacestd.xhtml">std</a></div><div class="ttdef"><b>Definition:</b> <a href="_backend_id_8hpp_source.xhtml#l00149">BackendId.hpp:149</a></div></div>
<div class="ttc" id="structarmnn_1_1_i_runtime_1_1_creation_options_xhtml_aecebc69597fe0d38a3964031c6eeb0a8"><div class="ttname"><a href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml#aecebc69597fe0d38a3964031c6eeb0a8">armnn::IRuntime::CreationOptions::m_BackendOptions</a></div><div class="ttdeci">std::vector&lt; BackendOptions &gt; m_BackendOptions</div><div class="ttdoc">Pass backend specific options. </div><div class="ttdef"><b>Definition:</b> <a href="_i_runtime_8hpp_source.xhtml#l00187">IRuntime.hpp:187</a></div></div>
<div class="ttc" id="_backend_profiling_8hpp_xhtml"><div class="ttname"><a href="_backend_profiling_8hpp.xhtml">BackendProfiling.hpp</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38"><div class="ttname"><a href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">armnn::Status::Success</a></div></div>
<div class="ttc" id="include_2armnn_2_version_8hpp_xhtml"><div class="ttname"><a href="include_2armnn_2_version_8hpp.xhtml">Version.hpp</a></div></div>
<div class="ttc" id="structarmnn_1_1_runtime_impl_xhtml_a75ccbc4465b34e691a31a5cea42689c0"><div class="ttname"><a href="structarmnn_1_1_runtime_impl.xhtml#a75ccbc4465b34e691a31a5cea42689c0">armnn::RuntimeImpl::ReportStructure</a></div><div class="ttdeci">void ReportStructure()</div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00282">Runtime.cpp:282</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ab24d74259a053475f6040dd701a01952"><div class="ttname"><a href="namespacearmnn.xhtml#ab24d74259a053475f6040dd701a01952">armnn::BackendCapability</a></div><div class="ttdeci">BackendCapability</div><div class="ttdoc">BackendCapability class. </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00254">Types.hpp:254</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#l00790">INetwork.hpp:790</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="classarmnn_1_1_dynamic_backend_utils_xhtml_a48e1fb944c3ef4086365aedcadb4c311"><div class="ttname"><a href="classarmnn_1_1_dynamic_backend_utils.xhtml#a48e1fb944c3ef4086365aedcadb4c311">armnn::DynamicBackendUtils::GetSharedObjects</a></div><div class="ttdeci">static std::vector&lt; std::string &gt; GetSharedObjects(const std::vector&lt; std::string &gt; &amp;backendPaths)</div><div class="ttdef"><b>Definition:</b> <a href="_dynamic_backend_utils_8cpp_source.xhtml#l00174">DynamicBackendUtils.cpp:174</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a0d8160388a127c1a23b37bc88dc6e2ec"><div class="ttname"><a href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">armnn::NetworkId</a></div><div class="ttdeci">int NetworkId</div><div class="ttdef"><b>Definition:</b> <a href="_i_runtime_8hpp_source.xhtml#l00025">IRuntime.hpp:25</a></div></div>
<div class="ttc" id="structarmnn_1_1_runtime_impl_xhtml_a67c5b82a7e34c291702233eb716cf96f"><div class="ttname"><a href="structarmnn_1_1_runtime_impl.xhtml#a67c5b82a7e34c291702233eb716cf96f">armnn::RuntimeImpl::~RuntimeImpl</a></div><div class="ttdeci">~RuntimeImpl()</div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00509">Runtime.cpp:509</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_runtime_xhtml_aed397991b99f485ffab9a42aece47019"><div class="ttname"><a href="classarmnn_1_1_i_runtime.xhtml#aed397991b99f485ffab9a42aece47019">armnn::IRuntime::UnloadNetwork</a></div><div class="ttdeci">Status UnloadNetwork(NetworkId networkId)</div><div class="ttdoc">Unloads a network from the IRuntime. </div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00120">Runtime.cpp:120</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_runtime_xhtml_ab2498cef8d01323527d59b6bb5848eed"><div class="ttname"><a href="classarmnn_1_1_i_runtime.xhtml#ab2498cef8d01323527d59b6bb5848eed">armnn::IRuntime::ClearImportedInputs</a></div><div class="ttdeci">void ClearImportedInputs(NetworkId networkId, const std::vector&lt; ImportedInputId &gt; inputIds)</div><div class="ttdoc">Un-import and delete the imported InputTensor/s This function is not thread safe and must not be used...</div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00092">Runtime.cpp:92</a></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_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#l00029">Types.hpp:29</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#l00242">INetwork.hpp:242</a></div></div>
<div class="ttc" id="classarmnn_1_1_backend_registry_xhtml_a00341f4ceb455800e7d1c46b9d0f3f4a"><div class="ttname"><a href="classarmnn_1_1_backend_registry.xhtml#a00341f4ceb455800e7d1c46b9d0f3f4a">armnn::BackendRegistry::SetProfilingService</a></div><div class="ttdeci">void SetProfilingService(armnn::Optional&lt; profiling::ProfilingService &amp;&gt; profilingService)</div><div class="ttdef"><b>Definition:</b> <a href="_backend_registry_8cpp_source.xhtml#l00105">BackendRegistry.cpp:105</a></div></div>
<div class="ttc" id="structarmnn_1_1_runtime_impl_xhtml_ab2498cef8d01323527d59b6bb5848eed"><div class="ttname"><a href="structarmnn_1_1_runtime_impl.xhtml#ab2498cef8d01323527d59b6bb5848eed">armnn::RuntimeImpl::ClearImportedInputs</a></div><div class="ttdeci">void ClearImportedInputs(NetworkId networkId, const std::vector&lt; ImportedInputId &gt; inputIds)</div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00587">Runtime.cpp:587</a></div></div>
<div class="ttc" id="structarmnn_1_1_i_runtime_1_1_creation_options_xhtml_a939528f239e70c85f833c87c5fe41d83"><div class="ttname"><a href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml#a939528f239e70c85f833c87c5fe41d83">armnn::IRuntime::CreationOptions::m_CustomAllocatorMap</a></div><div class="ttdeci">std::map&lt; BackendId, std::shared_ptr&lt; ICustomAllocator &gt; &gt; m_CustomAllocatorMap</div><div class="ttdoc">A map to define a custom memory allocator for specific backend Ids. </div><div class="ttdef"><b>Definition:</b> <a href="_i_runtime_8hpp_source.xhtml#l00112">IRuntime.hpp:112</a></div></div>
<div class="ttc" id="classarmnn_1_1experimental_1_1_i_working_mem_handle_xhtml"><div class="ttname"><a href="classarmnn_1_1experimental_1_1_i_working_mem_handle.xhtml">armnn::experimental::IWorkingMemHandle</a></div><div class="ttdef"><b>Definition:</b> <a href="_i_working_mem_handle_8hpp_source.xhtml#l00018">IWorkingMemHandle.hpp:18</a></div></div>
<div class="ttc" id="_assert_8hpp_xhtml_a5698be69cbd5dfe6c28fcd9867e8cbed"><div class="ttname"><a href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a></div><div class="ttdeci">#define ARMNN_ASSERT(COND)</div><div class="ttdef"><b>Definition:</b> <a href="_assert_8hpp_source.xhtml#l00014">Assert.hpp:14</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_runtime_xhtml_a27f91ba619c3c6fd5e640df91b3fd080"><div class="ttname"><a href="classarmnn_1_1_i_runtime.xhtml#a27f91ba619c3c6fd5e640df91b3fd080">armnn::IRuntime::Execute</a></div><div class="ttdeci">Status Execute(IWorkingMemHandle &amp;workingMemHandle, const InputTensors &amp;inputTensors, const OutputTensors &amp;outputTensors, std::vector&lt; ImportedInputId &gt; preImportedInputs={}, std::vector&lt; ImportedOutputId &gt; preImportedOutputs={})</div><div class="ttdoc">This is an experimental function. </div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00111">Runtime.cpp:111</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_runtime_xhtml_a92dbd7245696596a2c8e831de26cec02"><div class="ttname"><a href="classarmnn_1_1_i_runtime.xhtml#a92dbd7245696596a2c8e831de26cec02">armnn::IRuntime::pRuntimeImpl</a></div><div class="ttdeci">std::unique_ptr&lt; RuntimeImpl &gt; pRuntimeImpl</div><div class="ttdef"><b>Definition:</b> <a href="_i_runtime_8hpp_source.xhtml#l00288">IRuntime.hpp:288</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_runtime_xhtml_aca51209383683ab8dbe801bbfddfe0c0"><div class="ttname"><a href="classarmnn_1_1_i_runtime.xhtml#aca51209383683ab8dbe801bbfddfe0c0">armnn::IRuntime::EnqueueWorkload</a></div><div class="ttdeci">Status EnqueueWorkload(NetworkId networkId, const InputTensors &amp;inputTensors, const OutputTensors &amp;outputTensors, std::vector&lt; ImportedInputId &gt; preImportedInputIds={}, std::vector&lt; ImportedOutputId &gt; preImportedOutputIds={})</div><div class="ttdoc">Evaluates a network using input in inputTensors and outputs filled into outputTensors. </div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00101">Runtime.cpp:101</a></div></div>
<div class="ttc" id="classarmnn_1_1_loaded_network_xhtml_aa792fd8b43401e3d6665110cdb0af27b"><div class="ttname"><a href="classarmnn_1_1_loaded_network.xhtml#aa792fd8b43401e3d6665110cdb0af27b">armnn::LoadedNetwork::ClearImportedInputs</a></div><div class="ttdeci">void ClearImportedInputs(const std::vector&lt; ImportedInputId &gt; inputIds)</div><div class="ttdef"><b>Definition:</b> <a href="_loaded_network_8cpp_source.xhtml#l01557">LoadedNetwork.cpp:1557</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_runtime_xhtml_af92b5ae61208a778571bcea7e6aac7b4"><div class="ttname"><a href="classarmnn_1_1_i_runtime.xhtml#af92b5ae61208a778571bcea7e6aac7b4">armnn::IRuntime::LoadNetwork</a></div><div class="ttdeci">Status LoadNetwork(NetworkId &amp;networkIdOut, IOptimizedNetworkPtr network)</div><div class="ttdoc">Loads a complete network into the IRuntime. </div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00050">Runtime.cpp:50</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_device_spec_xhtml"><div class="ttname"><a href="classarmnn_1_1_i_device_spec.xhtml">armnn::IDeviceSpec</a></div><div class="ttdoc">Device specific knowledge to be passed to the optimizer. </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00267">Types.hpp:267</a></div></div>
<div class="ttc" id="classarmnn_1_1_runtime_exception_xhtml"><div class="ttname"><a href="classarmnn_1_1_runtime_exception.xhtml">armnn::RuntimeException</a></div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.xhtml#l00120">Exceptions.hpp:120</a></div></div>
<div class="ttc" id="structarmnn_1_1_runtime_impl_xhtml"><div class="ttname"><a href="structarmnn_1_1_runtime_impl.xhtml">armnn::RuntimeImpl</a></div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8hpp_source.xhtml#l00030">Runtime.hpp:30</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_runtime_xhtml_a4646ef5dbce8d3aae30fc99638226069"><div class="ttname"><a href="classarmnn_1_1_i_runtime.xhtml#a4646ef5dbce8d3aae30fc99638226069">armnn::IRuntime::CreateRaw</a></div><div class="ttdeci">static IRuntime * CreateRaw(const CreationOptions &amp;options)</div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00035">Runtime.cpp:35</a></div></div>
<div class="ttc" id="_logging_8hpp_xhtml"><div class="ttname"><a href="_logging_8hpp.xhtml">Logging.hpp</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a7c8192a429fc68220e4fc308062a02ba"><div class="ttname"><a href="namespacearmnn.xhtml#a7c8192a429fc68220e4fc308062a02ba">armnn::GetMemoryOptimizerStrategy</a></div><div class="ttdeci">std::unique_ptr&lt; IMemoryOptimizerStrategy &gt; GetMemoryOptimizerStrategy(const std::string &amp;strategyName)</div><div class="ttdef"><b>Definition:</b> <a href="_memory_optimizer_strategy_library_8hpp_source.xhtml#l00036">MemoryOptimizerStrategyLibrary.hpp:36</a></div></div>
<div class="ttc" id="classarmnn_1_1_loaded_network_xhtml_aaf8558a23ae9be6e7ea165989f1fa808"><div class="ttname"><a href="classarmnn_1_1_loaded_network.xhtml#aaf8558a23ae9be6e7ea165989f1fa808">armnn::LoadedNetwork::FreeWorkingMemory</a></div><div class="ttdeci">void FreeWorkingMemory()</div><div class="ttdef"><b>Definition:</b> <a href="_loaded_network_8cpp_source.xhtml#l01118">LoadedNetwork.cpp:1118</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_runtime_xhtml_a25db7b8e6fc90f8418439ccd33aaf184"><div class="ttname"><a href="classarmnn_1_1_i_runtime.xhtml#a25db7b8e6fc90f8418439ccd33aaf184">armnn::IRuntime::GetDeviceSpec</a></div><div class="ttdeci">const IDeviceSpec &amp; GetDeviceSpec() const</div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00125">Runtime.cpp:125</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#l00075">IRuntime.hpp:75</a></div></div>
<div class="ttc" id="structarmnn_1_1_i_runtime_1_1_creation_options_xhtml_ad89c99e4063390ba824022c60b885561"><div class="ttname"><a href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml#ad89c99e4063390ba824022c60b885561">armnn::IRuntime::CreationOptions::m_ProtectedMode</a></div><div class="ttdeci">bool m_ProtectedMode</div><div class="ttdoc">Setting this flag will allow the user to create the Runtime in protected mode. </div><div class="ttdef"><b>Definition:</b> <a href="_i_runtime_8hpp_source.xhtml#l00103">IRuntime.hpp:103</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_runtime_xhtml_ac2cb56a0d7ee6fb53e9f97e624973c19"><div class="ttname"><a href="classarmnn_1_1_i_runtime.xhtml#ac2cb56a0d7ee6fb53e9f97e624973c19">armnn::IRuntime::ImportInputs</a></div><div class="ttdeci">std::vector&lt; ImportedInputId &gt; ImportInputs(NetworkId networkId, const InputTensors &amp;inputTensors, MemorySource forceImportMemorySource=MemorySource::Undefined)</div><div class="ttdoc">ImportInputs separates the importing and mapping of InputTensors from network execution. </div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00080">Runtime.cpp:80</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#l00096">IRuntime.hpp:96</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_runtime_xhtml_a5dccecd36bb6eda573be616face68035"><div class="ttname"><a href="classarmnn_1_1_i_runtime.xhtml#a5dccecd36bb6eda573be616face68035">armnn::IRuntime::GetOutputTensorInfo</a></div><div class="ttdeci">TensorInfo GetOutputTensorInfo(NetworkId networkId, LayerBindingId layerId) const</div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00075">Runtime.cpp:75</a></div></div>
<div class="ttc" id="classarmnn_1_1_loaded_network_xhtml_a87880cba8611688cc57bec8f913958e8"><div class="ttname"><a href="classarmnn_1_1_loaded_network.xhtml#a87880cba8611688cc57bec8f913958e8">armnn::LoadedNetwork::EnqueueWorkload</a></div><div class="ttdeci">Status EnqueueWorkload(const InputTensors &amp;inputTensors, const OutputTensors &amp;outputTensors, std::vector&lt; ImportedInputId &gt; preImportedInputIds={}, std::vector&lt; ImportedOutputId &gt; preImportedOutputIds={})</div><div class="ttdoc">Single thread execution of the loaded network. </div><div class="ttdef"><b>Definition:</b> <a href="_loaded_network_8cpp_source.xhtml#l00737">LoadedNetwork.cpp:737</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="classarmnn_1_1_profiler_manager_xhtml_a7b1e3e5bf386004541be2b5b22443208"><div class="ttname"><a href="classarmnn_1_1_profiler_manager.xhtml#a7b1e3e5bf386004541be2b5b22443208">armnn::ProfilerManager::RegisterProfiler</a></div><div class="ttdeci">void RegisterProfiler(IProfiler *profiler)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_8cpp_source.xhtml#l00575">Profiling.cpp:575</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_runtime_xhtml_ab57e7be00c017cfa43de4f5141f1fc68"><div class="ttname"><a href="classarmnn_1_1_i_runtime.xhtml#ab57e7be00c017cfa43de4f5141f1fc68">armnn::IRuntime::IRuntime</a></div><div class="ttdeci">IRuntime()</div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00029">Runtime.cpp:29</a></div></div>
<div class="ttc" id="structarmnn_1_1_runtime_impl_xhtml_aca51209383683ab8dbe801bbfddfe0c0"><div class="ttname"><a href="structarmnn_1_1_runtime_impl.xhtml#aca51209383683ab8dbe801bbfddfe0c0">armnn::RuntimeImpl::EnqueueWorkload</a></div><div class="ttdeci">Status EnqueueWorkload(NetworkId networkId, const InputTensors &amp;inputTensors, const OutputTensors &amp;outputTensors, std::vector&lt; ImportedInputId &gt; preImportedInputIds={}, std::vector&lt; ImportedOutputId &gt; preImportedOutputIds={})</div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00596">Runtime.cpp:596</a></div></div>
<div class="ttc" id="classarmnn_1_1_loaded_network_xhtml"><div class="ttname"><a href="classarmnn_1_1_loaded_network.xhtml">armnn::LoadedNetwork</a></div><div class="ttdef"><b>Definition:</b> <a href="_loaded_network_8hpp_source.xhtml#l00041">LoadedNetwork.hpp:41</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="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="classarmnn_1_1_loaded_network_xhtml_aee8e1cb09e0d4dcbe64df111c5edd55e"><div class="ttname"><a href="classarmnn_1_1_loaded_network.xhtml#aee8e1cb09e0d4dcbe64df111c5edd55e">armnn::LoadedNetwork::GetProfiler</a></div><div class="ttdeci">const std::shared_ptr&lt; IProfiler &gt; &amp; GetProfiler() const</div><div class="ttdef"><b>Definition:</b> <a href="_loaded_network_8hpp_source.xhtml#l00086">LoadedNetwork.hpp:86</a></div></div>
<div class="ttc" id="classarmnn_1_1_loaded_network_xhtml_ac88d932e6e015a59551322b25796b11a"><div class="ttname"><a href="classarmnn_1_1_loaded_network.xhtml#ac88d932e6e015a59551322b25796b11a">armnn::LoadedNetwork::ImportOutputs</a></div><div class="ttdeci">std::vector&lt; ImportedOutputId &gt; ImportOutputs(const OutputTensors &amp;outputTensors, MemorySource forceImportMemorySource=MemorySource::Undefined)</div><div class="ttdef"><b>Definition:</b> <a href="_loaded_network_8cpp_source.xhtml#l01439">LoadedNetwork.cpp:1439</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a14fcd7f88d11cea0a018269dca5f9277"><div class="ttname"><a href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277">armnn::MemorySource</a></div><div class="ttdeci">MemorySource</div><div class="ttdoc">Define the Memory Source to reduce copies. </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00217">Types.hpp:217</a></div></div>
<div class="ttc" id="classarmnn_1_1_loaded_network_xhtml_a091ea8d2d804c8902f3120fdf2a36512"><div class="ttname"><a href="classarmnn_1_1_loaded_network.xhtml#a091ea8d2d804c8902f3120fdf2a36512">armnn::LoadedNetwork::RegisterDebugCallback</a></div><div class="ttdeci">void RegisterDebugCallback(const DebugCallbackFunction &amp;func)</div><div class="ttdef"><b>Definition:</b> <a href="_loaded_network_8cpp_source.xhtml#l02062">LoadedNetwork.cpp:2062</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_aa0a94554d6ef64e32793b3d54b2563f0"><div class="ttname"><a href="namespacearmnn.xhtml#aa0a94554d6ef64e32793b3d54b2563f0">armnn::GetMemBlockStrategyTypeName</a></div><div class="ttdeci">constexpr const char * GetMemBlockStrategyTypeName(MemBlockStrategyType memBlockStrategyType)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.xhtml#l00264">TypesUtils.hpp:264</a></div></div>
<div class="ttc" id="structarmnn_1_1_runtime_impl_xhtml_ac2cb56a0d7ee6fb53e9f97e624973c19"><div class="ttname"><a href="structarmnn_1_1_runtime_impl.xhtml#ac2cb56a0d7ee6fb53e9f97e624973c19">armnn::RuntimeImpl::ImportInputs</a></div><div class="ttdeci">std::vector&lt; ImportedInputId &gt; ImportInputs(NetworkId networkId, const InputTensors &amp;inputTensors, MemorySource forceImportMemorySource=MemorySource::Undefined)</div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00575">Runtime.cpp:575</a></div></div>
<div class="ttc" id="structarmnn_1_1_runtime_impl_xhtml_a16dc7f9aef55701fb8634997eef570b0"><div class="ttname"><a href="structarmnn_1_1_runtime_impl.xhtml#a16dc7f9aef55701fb8634997eef570b0">armnn::RuntimeImpl::RuntimeImpl</a></div><div class="ttdeci">RuntimeImpl(const IRuntime::CreationOptions &amp;options)</div><div class="ttdoc">Creates a runtime for workload execution. </div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00297">Runtime.cpp:297</a></div></div>
<div class="ttc" id="classarmnn_1_1_device_spec_xhtml_a2a52bc9548350a186cdb8f9565eed4f0"><div class="ttname"><a href="classarmnn_1_1_device_spec.xhtml#a2a52bc9548350a186cdb8f9565eed4f0">armnn::DeviceSpec::GetDynamicBackends</a></div><div class="ttdeci">const BackendIdSet &amp; GetDynamicBackends() const</div><div class="ttdef"><b>Definition:</b> <a href="_device_spec_8hpp_source.xhtml#l00048">DeviceSpec.hpp:48</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_runtime_xhtml_a16e72675c37a8f251cf02951e222d4ab"><div class="ttname"><a href="classarmnn_1_1_i_runtime.xhtml#a16e72675c37a8f251cf02951e222d4ab">armnn::IRuntime::CreateWorkingMemHandle</a></div><div class="ttdeci">std::unique_ptr&lt; IWorkingMemHandle &gt; CreateWorkingMemHandle(NetworkId networkId)</div><div class="ttdoc">Create a new unique WorkingMemHandle object. </div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00130">Runtime.cpp:130</a></div></div>
<div class="ttc" id="classarmnn_1_1_loaded_network_xhtml_a390c87e27deac4f51af9533053b2ee14"><div class="ttname"><a href="classarmnn_1_1_loaded_network.xhtml#a390c87e27deac4f51af9533053b2ee14">armnn::LoadedNetwork::IsAsyncEnabled</a></div><div class="ttdeci">bool IsAsyncEnabled()</div><div class="ttdef"><b>Definition:</b> <a href="_loaded_network_8hpp_source.xhtml#l00094">LoadedNetwork.hpp:94</a></div></div>
<div class="ttc" id="structarmnn_1_1_i_runtime_1_1_creation_options_1_1_external_profiling_options_xhtml_a5b304d775657afbf1fb724af57add374"><div class="ttname"><a href="structarmnn_1_1_i_runtime_1_1_creation_options_1_1_external_profiling_options.xhtml#a5b304d775657afbf1fb724af57add374">armnn::IRuntime::CreationOptions::ExternalProfilingOptions::m_TimelineEnabled</a></div><div class="ttdeci">bool m_TimelineEnabled</div><div class="ttdoc">Indicates whether external timeline profiling is enabled or not. </div><div class="ttdef"><b>Definition:</b> <a href="_i_runtime_8hpp_source.xhtml#l00138">IRuntime.hpp:138</a></div></div>
<div class="ttc" id="structarmnn_1_1_backend_options_1_1_backend_option_xhtml"><div class="ttname"><a href="structarmnn_1_1_backend_options_1_1_backend_option.xhtml">armnn::BackendOptions::BackendOption</a></div><div class="ttdef"><b>Definition:</b> <a href="_backend_options_8hpp_source.xhtml#l00215">BackendOptions.hpp:215</a></div></div>
<div class="ttc" id="classarmnn_1_1_device_spec_xhtml_a5051d926510964d87440330c0469d9c5"><div class="ttname"><a href="classarmnn_1_1_device_spec.xhtml#a5051d926510964d87440330c0469d9c5">armnn::DeviceSpec::ClearDynamicBackends</a></div><div class="ttdeci">void ClearDynamicBackends()</div><div class="ttdef"><b>Definition:</b> <a href="_device_spec_8hpp_source.xhtml#l00039">DeviceSpec.hpp:39</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_runtime_xhtml_a7db39b06bc7f50287f54320d26df4373"><div class="ttname"><a href="classarmnn_1_1_i_runtime.xhtml#a7db39b06bc7f50287f54320d26df4373">armnn::IRuntime::ImportOutputs</a></div><div class="ttdeci">std::vector&lt; ImportedOutputId &gt; ImportOutputs(NetworkId networkId, const OutputTensors &amp;outputTensors, MemorySource forceImportMemorySource=MemorySource::Undefined)</div><div class="ttdoc">ImportOutputs separates the importing and mapping of OutputTensors from network execution. </div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00086">Runtime.cpp:86</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_runtime_xhtml_a746d54f647096c2f9932dae20a6590a2"><div class="ttname"><a href="classarmnn_1_1_i_runtime.xhtml#a746d54f647096c2f9932dae20a6590a2">armnn::IRuntime::ClearImportedOutputs</a></div><div class="ttdeci">void ClearImportedOutputs(NetworkId networkId, const std::vector&lt; ImportedOutputId &gt; outputIds)</div><div class="ttdoc">Un-import and delete the imported OutputTensor/s This function is not thread safe and must not be use...</div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00096">Runtime.cpp:96</a></div></div>
<div class="ttc" id="structarmnn_1_1_runtime_impl_xhtml_a16e72675c37a8f251cf02951e222d4ab"><div class="ttname"><a href="structarmnn_1_1_runtime_impl.xhtml#a16e72675c37a8f251cf02951e222d4ab">armnn::RuntimeImpl::CreateWorkingMemHandle</a></div><div class="ttdeci">std::unique_ptr&lt; IWorkingMemHandle &gt; CreateWorkingMemHandle(NetworkId networkId)</div><div class="ttdoc">Create a new unique WorkingMemHandle object. </div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00687">Runtime.cpp:687</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a14fcd7f88d11cea0a018269dca5f9277a7f9067c59dd34aca0ad09a7f283ed1f8"><div class="ttname"><a href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277a7f9067c59dd34aca0ad09a7f283ed1f8">armnn::MemorySource::DmaBufProtected</a></div></div>
<div class="ttc" id="classarmnn_1_1_dynamic_backend_utils_xhtml_a55415a62bbb0a72c1a2f333501989401"><div class="ttname"><a href="classarmnn_1_1_dynamic_backend_utils.xhtml#a55415a62bbb0a72c1a2f333501989401">armnn::DynamicBackendUtils::RegisterDynamicBackends</a></div><div class="ttdeci">static BackendIdSet RegisterDynamicBackends(const std::vector&lt; DynamicBackendPtr &gt; &amp;dynamicBackends)</div><div class="ttdef"><b>Definition:</b> <a href="_dynamic_backend_utils_8cpp_source.xhtml#l00324">DynamicBackendUtils.cpp:324</a></div></div>
<div class="ttc" id="classarmnn_1_1profiling_1_1_profiling_service_xhtml_ab156998ddd9e58d2f79567bfb70e122c"><div class="ttname"><a href="classarmnn_1_1profiling_1_1_profiling_service.xhtml#ab156998ddd9e58d2f79567bfb70e122c">armnn::profiling::ProfilingService::AddBackendProfilingContext</a></div><div class="ttdeci">void AddBackendProfilingContext(const BackendId backendId, std::shared_ptr&lt; armnn::profiling::IBackendProfilingContext &gt; profilingContext)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_service_8cpp_source.xhtml#l00214">ProfilingService.cpp:214</a></div></div>
<div class="ttc" id="structarmnn_1_1_i_runtime_1_1_creation_options_xhtml_a30412a91cadff138686eaeb12f5357cc"><div class="ttname"><a href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml#a30412a91cadff138686eaeb12f5357cc">armnn::IRuntime::CreationOptions::m_ProfilingOptions</a></div><div class="ttdeci">ExternalProfilingOptions m_ProfilingOptions</div><div class="ttdef"><b>Definition:</b> <a href="_i_runtime_8hpp_source.xhtml#l00151">IRuntime.hpp:151</a></div></div>
<div class="ttc" id="structarmnn_1_1_runtime_impl_xhtml_a7db39b06bc7f50287f54320d26df4373"><div class="ttname"><a href="structarmnn_1_1_runtime_impl.xhtml#a7db39b06bc7f50287f54320d26df4373">armnn::RuntimeImpl::ImportOutputs</a></div><div class="ttdeci">std::vector&lt; ImportedOutputId &gt; ImportOutputs(NetworkId networkId, const OutputTensors &amp;outputTensors, MemorySource forceImportMemorySource=MemorySource::Undefined)</div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00581">Runtime.cpp:581</a></div></div>
<div class="ttc" id="classarmnn_1_1profiling_1_1_profiling_service_xhtml_a004992fdba75e298495d6b628234a4bd"><div class="ttname"><a href="classarmnn_1_1profiling_1_1_profiling_service.xhtml#a004992fdba75e298495d6b628234a4bd">armnn::profiling::ProfilingService::ConfigureProfilingService</a></div><div class="ttdeci">ProfilingState ConfigureProfilingService(const ExternalProfilingOptions &amp;options, bool resetProfilingService=false)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_service_8cpp_source.xhtml#l00062">ProfilingService.cpp:62</a></div></div>
<div class="ttc" id="classarmnn_1_1_loaded_network_xhtml_a8e94a5375ad367ddee9c69e04e110a54"><div class="ttname"><a href="classarmnn_1_1_loaded_network.xhtml#a8e94a5375ad367ddee9c69e04e110a54">armnn::LoadedNetwork::MakeLoadedNetwork</a></div><div class="ttdeci">static std::unique_ptr&lt; LoadedNetwork &gt; MakeLoadedNetwork(std::unique_ptr&lt; IOptimizedNetwork &gt; net, std::string &amp;errorMessage, const INetworkProperties &amp;networkProperties, profiling::ProfilingService &amp;profilingService)</div><div class="ttdef"><b>Definition:</b> <a href="_loaded_network_8cpp_source.xhtml#l00082">LoadedNetwork.cpp:82</a></div></div>
<div class="ttc" id="structarmnn_1_1_runtime_impl_xhtml_a746d54f647096c2f9932dae20a6590a2"><div class="ttname"><a href="structarmnn_1_1_runtime_impl.xhtml#a746d54f647096c2f9932dae20a6590a2">armnn::RuntimeImpl::ClearImportedOutputs</a></div><div class="ttdeci">void ClearImportedOutputs(NetworkId networkId, const std::vector&lt; ImportedOutputId &gt; outputIds)</div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00591">Runtime.cpp:591</a></div></div>
<div class="ttc" id="classarmnn_1_1_loaded_network_xhtml_af06f742ce80985a8fbbbc028c20259b1"><div class="ttname"><a href="classarmnn_1_1_loaded_network.xhtml#af06f742ce80985a8fbbbc028c20259b1">armnn::LoadedNetwork::ClearImportedOutputs</a></div><div class="ttdeci">void ClearImportedOutputs(const std::vector&lt; ImportedOutputId &gt; outputIds)</div><div class="ttdef"><b>Definition:</b> <a href="_loaded_network_8cpp_source.xhtml#l01578">LoadedNetwork.cpp:1578</a></div></div>
<div class="ttc" id="classarmnn_1_1_backend_unavailable_exception_xhtml"><div class="ttname"><a href="classarmnn_1_1_backend_unavailable_exception.xhtml">armnn::BackendUnavailableException</a></div><div class="ttdoc">Class for non-fatal exceptions raised while initialising a backend. </div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.xhtml#l00068">Exceptions.hpp:68</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_68267d1309a1af8e8297ef4c3efbcdba.xhtml">src</a></li><li class="navelem"><a class="el" href="dir_e0a84d05c80a2ef4231141dcbbeac5c8.xhtml">armnn</a></li><li class="navelem"><a class="el" href="_runtime_8cpp.xhtml">Runtime.cpp</a></li>
    <li class="footer">Generated on Wed Mar 9 2022 12:00:07 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>