aboutsummaryrefslogtreecommitdiff
path: root/21.02/_runtime_8cpp_source.xhtml
blob: 6eb012388cb1435c8ce2b88b0473c5abf3a90fd8 (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
<!-- 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">21.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="_labels_and_event_classes_8hpp.xhtml">LabelsAndEventClasses.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="_polymorphic_downcast_8hpp.xhtml">armnn/utility/PolymorphicDowncast.hpp</a>&gt;</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</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="l00020"></a><span class="lineno">   20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespacearmnn.xhtml">armnn</a>;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespacestd.xhtml">std</a>;</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">namespace </span><a class="code" href="namespacearmnn.xhtml">armnn</a></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;{</div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#ab57e7be00c017cfa43de4f5141f1fc68">   26</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="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#aeea37dec9d86de31f4847592df906062">   28</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="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</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="l00031"></a><span class="lineno">   31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#a4646ef5dbce8d3aae30fc99638226069">   32</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="l00033"></a><span class="lineno">   33</span>&#160;{</div><div class="line"><a name="l00034"></a><span class="lineno">   34</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="l00035"></a><span class="lineno">   35</span>&#160;}</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"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#ad44ecd3700748dc30dc4bbe34ba5bde7">   37</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="l00038"></a><span class="lineno">   38</span>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno">   39</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="l00040"></a><span class="lineno">   40</span>&#160;}</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"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#a978f3d0d34a944b40240bd130d61e3b6">   42</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="l00043"></a><span class="lineno">   43</span>&#160;{</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;    <span class="keyword">delete</span> runtime;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;}</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"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#af92b5ae61208a778571bcea7e6aac7b4">   47</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#a83015160d8c67d5d77735eb0d4033d9a">NetworkId</a>&amp; networkIdOut, <a class="code" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a> network)</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;    <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="l00050"></a><span class="lineno">   50</span>&#160;}</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"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#a0e36bbd86f21d7ddec31588deed2ac77">   52</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#a83015160d8c67d5d77735eb0d4033d9a">NetworkId</a>&amp; networkIdOut,</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;                             <a class="code" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a> network,</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;                             std::string&amp; errorMessage)</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;{</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    <span class="keywordflow">return</span> <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="l00057"></a><span class="lineno">   57</span>&#160;}</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"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#a65582587432a8dd20c3b1ad2a4f1f642">   59</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#a83015160d8c67d5d77735eb0d4033d9a">NetworkId</a>&amp; networkIdOut,</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;                             <a class="code" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a> network,</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;                             std::string&amp; errorMessage,</div><div class="line"><a name="l00062"></a><span class="lineno">   62</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="l00063"></a><span class="lineno">   63</span>&#160;{</div><div class="line"><a name="l00064"></a><span class="lineno">   64</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="l00065"></a><span class="lineno">   65</span>&#160;}</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"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#aa198ca53eeb01b6e2134da924ec36405">   67</a></span>&#160;<a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#aa198ca53eeb01b6e2134da924ec36405">IRuntime::GetInputTensorInfo</a>(<a class="code" href="namespacearmnn.xhtml#a83015160d8c67d5d77735eb0d4033d9a">NetworkId</a> networkId, <a class="code" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> layerId)<span class="keyword"> const</span></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00069"></a><span class="lineno">   69</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="l00070"></a><span class="lineno">   70</span>&#160;}</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#a81c83702b94931626c6d84a3fa915362">   72</a></span>&#160;<a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a81c83702b94931626c6d84a3fa915362">IRuntime::GetOutputTensorInfo</a>(<a class="code" href="namespacearmnn.xhtml#a83015160d8c67d5d77735eb0d4033d9a">NetworkId</a> networkId, <a class="code" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> layerId)<span class="keyword"> const</span></div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00074"></a><span class="lineno">   74</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="l00075"></a><span class="lineno">   75</span>&#160;}</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#ab88fe81be37ed549ae7247c18025cc35">   77</a></span>&#160;<a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#ab88fe81be37ed549ae7247c18025cc35">IRuntime::EnqueueWorkload</a>(<a class="code" href="namespacearmnn.xhtml#a83015160d8c67d5d77735eb0d4033d9a">NetworkId</a> networkId,</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;                                 <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#aa01bce88f89975a5a031db4cc8861527">InputTensors</a>&amp; inputTensors,</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;                                 <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a8f091a512915d1cb29a4ebf13dfc53ea">OutputTensors</a>&amp; outputTensors)</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;{</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    <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="l00082"></a><span class="lineno">   82</span>&#160;}</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#aed397991b99f485ffab9a42aece47019">   84</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#a83015160d8c67d5d77735eb0d4033d9a">NetworkId</a> networkId)</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;{</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_runtime.xhtml#a92dbd7245696596a2c8e831de26cec02">pRuntimeImpl</a>-&gt;UnloadNetwork(networkId);</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;}</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#a25db7b8e6fc90f8418439ccd33aaf184">   89</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="l00090"></a><span class="lineno">   90</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00091"></a><span class="lineno">   91</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="l00092"></a><span class="lineno">   92</span>&#160;}</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"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#af87d0743d1266e264c3197a32299f4b2">   94</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#a83015160d8c67d5d77735eb0d4033d9a">NetworkId</a> networkId)<span class="keyword"> const</span></div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00096"></a><span class="lineno">   96</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="l00097"></a><span class="lineno">   97</span>&#160;}</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_runtime.xhtml#a957014ce1bfd27e99f0a50b3ced439e1">   99</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#a83015160d8c67d5d77735eb0d4033d9a">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="l00100"></a><span class="lineno">  100</span>&#160;{</div><div class="line"><a name="l00101"></a><span class="lineno">  101</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="l00102"></a><span class="lineno">  102</span>&#160;}</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;<span class="keywordtype">int</span> RuntimeImpl::GenerateNetworkId()</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;{</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    <span class="keywordflow">return</span> m_NetworkIdCounter++;</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;}</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#af92b5ae61208a778571bcea7e6aac7b4">  109</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#a83015160d8c67d5d77735eb0d4033d9a">NetworkId</a>&amp; networkIdOut, <a class="code" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a> inNetwork)</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">  111</span>&#160;    std::string ignoredErrorMessage;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</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="l00113"></a><span class="lineno">  113</span>&#160;}</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#a0e36bbd86f21d7ddec31588deed2ac77">  115</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#a83015160d8c67d5d77735eb0d4033d9a">NetworkId</a>&amp; networkIdOut,</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;                                <a class="code" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a> inNetwork,</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;                                std::string&amp; errorMessage)</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;    <a class="code" href="structarmnn_1_1_i_network_properties.xhtml">INetworkProperties</a> networkProperties;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</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="l00121"></a><span class="lineno">  121</span>&#160;}</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#a65582587432a8dd20c3b1ad2a4f1f642">  123</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#a83015160d8c67d5d77735eb0d4033d9a">NetworkId</a>&amp; networkIdOut,</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;                                <a class="code" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a> inNetwork,</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;                                std::string&amp; errorMessage,</div><div class="line"><a name="l00126"></a><span class="lineno">  126</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="l00127"></a><span class="lineno">  127</span>&#160;{</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml">IOptimizedNetwork</a>* rawNetwork = inNetwork.release();</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    networkIdOut = GenerateNetworkId();</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">for</span> (<span class="keyword">auto</span>&amp;&amp; context : m_BackendContexts)</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;        context.second-&gt;BeforeLoadNetwork(networkIdOut);</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    }</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;    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="l00138"></a><span class="lineno">  138</span>&#160;        std::unique_ptr&lt;IOptimizedNetwork&gt;(rawNetwork),</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;        errorMessage,</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;        networkProperties,</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;        m_ProfilingService);</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    <span class="keywordflow">if</span> (!loadedNetwork)</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="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">Status::Failure</a>;</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;</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;        std::lock_guard&lt;std::mutex&gt; lockGuard(m_Mutex);</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;        <span class="comment">// Stores the network</span></div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;        m_LoadedNetworks[networkIdOut] = std::move(loadedNetwork);</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    }</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; context : m_BackendContexts)</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    {</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;        context.second-&gt;AfterLoadNetwork(networkIdOut);</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;    }</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    <span class="keywordflow">if</span> (m_ProfilingService.IsProfilingEnabled())</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;    {</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;        m_ProfilingService.IncrementCounterValue(armnn::profiling::NETWORK_LOADS);</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">  165</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">Status::Success</a>;</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;}</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#aed397991b99f485ffab9a42aece47019">  168</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#a83015160d8c67d5d77735eb0d4033d9a">NetworkId</a> networkId)</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="keywordtype">bool</span> unloadOk = <span class="keyword">true</span>;</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; context : m_BackendContexts)</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    {</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;        unloadOk &amp;= context.second-&gt;BeforeUnloadNetwork(networkId);</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    }</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    <span class="keywordflow">if</span> (!unloadOk)</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;        <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="l00179"></a><span class="lineno">  179</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="l00180"></a><span class="lineno">  180</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">Status::Failure</a>;</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;    std::unique_ptr&lt;profiling::TimelineUtilityMethods&gt; timelineUtils =</div><div class="line"><a name="l00184"></a><span class="lineno">  184</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="l00185"></a><span class="lineno">  185</span>&#160;    {</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;        std::lock_guard&lt;std::mutex&gt; lockGuard(m_Mutex);</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;        <span class="comment">// If timeline recording is on mark the Network end of life</span></div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;        <span class="keywordflow">if</span> (timelineUtils)</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="keyword">auto</span> search = m_LoadedNetworks.find(networkId);</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;            <span class="keywordflow">if</span> (search != m_LoadedNetworks.end())</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;                <a class="code" href="classarmnn_1_1profiling_1_1_profiling_guid.xhtml">profiling::ProfilingGuid</a> networkGuid = search-&gt;second-&gt;GetNetworkGuid();</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;                timelineUtils-&gt;RecordEvent(networkGuid,</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;                                           <a class="code" href="classarmnn_1_1profiling_1_1_labels_and_event_classes.xhtml#abff887aa42263e0816432cdd0987e27d">profiling::LabelsAndEventClasses::ARMNN_PROFILING_EOL_EVENT_CLASS</a>);</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;            }</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;        }</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;        <span class="keywordflow">if</span> (m_LoadedNetworks.erase(networkId) == 0)</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;            <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="l00202"></a><span class="lineno">  202</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">Status::Failure</a>;</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;        }</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;        <span class="keywordflow">if</span> (m_ProfilingService.IsProfilingEnabled())</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;        {</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;            m_ProfilingService.IncrementCounterValue(armnn::profiling::NETWORK_UNLOADS);</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;        }</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;    }</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">for</span> (<span class="keyword">auto</span>&amp;&amp; context : m_BackendContexts)</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;        context.second-&gt;AfterUnloadNetwork(networkId);</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;    }</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;    <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="l00217"></a><span class="lineno">  217</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">Status::Success</a>;</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;}</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#af87d0743d1266e264c3197a32299f4b2">  220</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#a83015160d8c67d5d77735eb0d4033d9a">NetworkId</a> networkId)<span class="keyword"> const</span></div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;    <span class="keyword">auto</span> it = m_LoadedNetworks.find(networkId);</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;    <span class="keywordflow">if</span> (it != m_LoadedNetworks.end())</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    {</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;        <span class="keyword">auto</span>&amp; loadedNetwork = it-&gt;second;</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;        <span class="keywordflow">return</span> loadedNetwork-&gt;GetProfiler();</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;    <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;}</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#a75ccbc4465b34e691a31a5cea42689c0">  232</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="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">// 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="l00235"></a><span class="lineno">  235</span>&#160;    <span class="comment">// if (profilingService.IsProfilingEnabled()){}</span></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;    LoadedNetworks::iterator it = m_LoadedNetworks.begin();</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;    <span class="keywordflow">while</span> (it != 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;        <span class="keyword">auto</span>&amp; loadedNetwork = it-&gt;second;</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;        loadedNetwork-&gt;SendNetworkStructure();</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;        <span class="comment">// Increment the Iterator to point to next entry</span></div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;        it++;</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;</div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#a16dc7f9aef55701fb8634997eef570b0">  247</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="l00248"></a><span class="lineno">  248</span>&#160;    : m_NetworkIdCounter(0),</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;      m_ProfilingService(*this)</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;{</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;    <span class="keyword">const</span> <span class="keyword">auto</span> start_time = <a class="code" href="namespacearmnn.xhtml#ac895f6f6897ce335b7b433201bae0b48">armnn::GetTimeNow</a>();</div><div class="line"><a name="l00252"></a><span class="lineno">  252</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> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;    <span class="keywordflow">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="l00255"></a><span class="lineno">  255</span>&#160;    {</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;        <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_runtime_exception.xhtml">RuntimeException</a>(<span class="stringliteral">&quot;It is not possible to enable timeline reporting without profiling being enabled&quot;</span>);</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;    }</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;    <span class="comment">// Load any available/compatible dynamic backend before the runtime</span></div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;    <span class="comment">// goes through the backend registry</span></div><div class="line"><a name="l00261"></a><span class="lineno">  261</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="l00262"></a><span class="lineno">  262</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;    <a class="code" href="namespacearmnn.xhtml#a1854d9cda81304325664363c1fd0fb27">BackendIdSet</a> supportedBackends;</div><div class="line"><a name="l00264"></a><span class="lineno">  264</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="l00265"></a><span class="lineno">  265</span>&#160;    {</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;        <span class="comment">// Store backend contexts for the supported ones</span></div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;        <span class="keywordflow">try</span> {</div><div class="line"><a name="l00268"></a><span class="lineno">  268</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="l00269"></a><span class="lineno">  269</span>&#160;            <span class="keyword">auto</span> backend = factoryFun();</div><div class="line"><a name="l00270"></a><span class="lineno">  270</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="l00271"></a><span class="lineno">  271</span>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;            <span class="keyword">auto</span> context = backend-&gt;CreateBackendContext(options);</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;            <span class="comment">// backends are allowed to return nullptrs if they</span></div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;            <span class="comment">// don&#39;t wish to create a backend specific context</span></div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;            <span class="keywordflow">if</span> (context)</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;                m_BackendContexts.emplace(std::make_pair(<span class="keywordtype">id</span>, std::move(context)));</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;            }</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;            supportedBackends.emplace(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;            unique_ptr&lt;armnn::profiling::IBackendProfiling&gt; profilingIface =</div><div class="line"><a name="l00283"></a><span class="lineno">  283</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="l00284"></a><span class="lineno">  284</span>&#160;                    options, m_ProfilingService, <span class="keywordtype">id</span>));</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;            <span class="comment">// Backends may also provide a profiling context. Ask for it now.</span></div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;            <span class="keyword">auto</span> profilingContext = backend-&gt;CreateBackendProfilingContext(options, profilingIface);</div><div class="line"><a name="l00288"></a><span class="lineno">  288</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="l00289"></a><span class="lineno">  289</span>&#160;            <span class="keywordflow">if</span> (profilingContext)</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;            {</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;                <span class="comment">// Pass the context onto the profiling service.</span></div><div class="line"><a name="l00292"></a><span class="lineno">  292</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="l00293"></a><span class="lineno">  293</span>&#160;            }</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;        }</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;        <span class="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="l00296"></a><span class="lineno">  296</span>&#160;        {</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;            <span class="comment">// Ignore backends which are unavailable</span></div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;        }</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;    }</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;    <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="l00302"></a><span class="lineno">  302</span>&#160;    <span class="comment">// pass configuration info to the profiling service</span></div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;    m_ProfilingService.<a class="code" href="classarmnn_1_1profiling_1_1_profiling_service.xhtml#a004992fdba75e298495d6b628234a4bd">ConfigureProfilingService</a>(options.<a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml#a30412a91cadff138686eaeb12f5357cc">m_ProfilingOptions</a>);</div><div class="line"><a name="l00304"></a><span class="lineno">  304</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#a26d42007440bb01a1a6d0ab3b5a657ee">m_EnableProfiling</a>)</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;    {</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;        <span class="comment">// try to wait for the profiling service to initialise</span></div><div class="line"><a name="l00307"></a><span class="lineno">  307</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="l00308"></a><span class="lineno">  308</span>&#160;    }</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;    m_DeviceSpec.<a class="code" href="classarmnn_1_1_device_spec.xhtml#a35b48a741948fd9b2fca9698a698fdae">AddSupportedBackends</a>(supportedBackends);</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;    <a class="code" href="_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="l00313"></a><span class="lineno">  313</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\n&quot;</span>;</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;}</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;</div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#a67c5b82a7e34c291702233eb716cf96f">  316</a></span>&#160;<a class="code" href="structarmnn_1_1_runtime_impl.xhtml#a67c5b82a7e34c291702233eb716cf96f">RuntimeImpl::~RuntimeImpl</a>()</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;{</div><div class="line"><a name="l00318"></a><span class="lineno">  318</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="l00319"></a><span class="lineno">  319</span>&#160;    std::vector&lt;int&gt; networkIDs;</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;    <span class="keywordflow">try</span></div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;    {</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;        <span class="comment">// Coverity fix: The following code may throw an exception of type std::length_error.</span></div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;        std::transform(m_LoadedNetworks.begin(), m_LoadedNetworks.end(),</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;                       std::back_inserter(networkIDs),</div><div class="line"><a name="l00325"></a><span class="lineno">  325</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="l00326"></a><span class="lineno">  326</span>&#160;    }</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;    <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;    {</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;        <span class="comment">// Coverity fix: BOOST_LOG_TRIVIAL (typically used to report errors) may throw an</span></div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;        <span class="comment">// exception of type std::length_error.</span></div><div class="line"><a name="l00331"></a><span class="lineno">  331</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="l00332"></a><span class="lineno">  332</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="l00333"></a><span class="lineno">  333</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="l00334"></a><span class="lineno">  334</span>&#160;    }</div><div class="line"><a name="l00335"></a><span class="lineno">  335</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="l00336"></a><span class="lineno">  336</span>&#160;    <span class="comment">// up to the point the exception was thrown (if any).</span></div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> networkID : networkIDs)</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;    {</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;        <span class="keywordflow">try</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">// Coverity fix: UnloadNetwork() may throw an exception of type std::length_error,</span></div><div class="line"><a name="l00343"></a><span class="lineno">  343</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="l00344"></a><span class="lineno">  344</span>&#160;            <a class="code" href="structarmnn_1_1_runtime_impl.xhtml#aed397991b99f485ffab9a42aece47019">UnloadNetwork</a>(networkID);</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;        }</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;        <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;        {</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;            <span class="comment">// Coverity fix: BOOST_LOG_TRIVIAL (typically used to report errors) may throw an</span></div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;            <span class="comment">// exception of type std::length_error.</span></div><div class="line"><a name="l00350"></a><span class="lineno">  350</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="l00351"></a><span class="lineno">  351</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="l00352"></a><span class="lineno">  352</span>&#160;                      &lt;&lt; std::endl;</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;        }</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;    }</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;    <span class="comment">// Clear all dynamic backends.</span></div><div class="line"><a name="l00357"></a><span class="lineno">  357</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="l00358"></a><span class="lineno">  358</span>&#160;    m_DeviceSpec.<a class="code" href="classarmnn_1_1_device_spec.xhtml#a5051d926510964d87440330c0469d9c5">ClearDynamicBackends</a>();</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;    m_BackendContexts.clear();</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;</div><div class="line"><a name="l00361"></a><span class="lineno">  361</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="l00362"></a><span class="lineno">  362</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="l00363"></a><span class="lineno">  363</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\n&quot;</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;</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;<a class="code" href="classarmnn_1_1_loaded_network.xhtml">LoadedNetwork</a>* RuntimeImpl::GetLoadedNetworkPtr(<a class="code" href="namespacearmnn.xhtml#a83015160d8c67d5d77735eb0d4033d9a">NetworkId</a> networkId)<span class="keyword"> const</span></div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;    std::lock_guard&lt;std::mutex&gt; lockGuard(m_Mutex);</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;    <span class="keywordflow">return</span> m_LoadedNetworks.at(networkId).get();</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;}</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;</div><div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#aa198ca53eeb01b6e2134da924ec36405">  372</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#a83015160d8c67d5d77735eb0d4033d9a">NetworkId</a> networkId, <a class="code" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> layerId)<span class="keyword"> const</span></div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00374"></a><span class="lineno">  374</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="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"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#a81c83702b94931626c6d84a3fa915362">  377</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#a83015160d8c67d5d77735eb0d4033d9a">NetworkId</a> networkId, <a class="code" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> layerId)<span class="keyword"> const</span></div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00379"></a><span class="lineno">  379</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="l00380"></a><span class="lineno">  380</span>&#160;}</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;</div><div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#ab88fe81be37ed549ae7247c18025cc35">  383</a></span>&#160;<a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> <a class="code" href="structarmnn_1_1_runtime_impl.xhtml#ab88fe81be37ed549ae7247c18025cc35">RuntimeImpl::EnqueueWorkload</a>(<a class="code" href="namespacearmnn.xhtml#a83015160d8c67d5d77735eb0d4033d9a">NetworkId</a> networkId,</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;                                <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#aa01bce88f89975a5a031db4cc8861527">InputTensors</a>&amp; inputTensors,</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;                                <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a8f091a512915d1cb29a4ebf13dfc53ea">OutputTensors</a>&amp; outputTensors)</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;    <a class="code" href="classarmnn_1_1_loaded_network.xhtml">LoadedNetwork</a>* loadedNetwork = GetLoadedNetworkPtr(networkId);</div><div class="line"><a name="l00388"></a><span class="lineno">  388</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="l00389"></a><span class="lineno">  389</span>&#160;</div><div class="line"><a name="l00390"></a><span class="lineno">  390</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="l00391"></a><span class="lineno">  391</span>&#160;</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;    <span class="keyword">static</span> thread_local <a class="code" href="namespacearmnn.xhtml#a83015160d8c67d5d77735eb0d4033d9a">NetworkId</a> lastId = networkId;</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;    <span class="keywordflow">if</span> (lastId != networkId)</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;    {</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;        LoadedNetworkFuncSafe(lastId, [](<a class="code" href="classarmnn_1_1_loaded_network.xhtml">LoadedNetwork</a>* network)</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;            {</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;                network-&gt;<a class="code" href="classarmnn_1_1_loaded_network.xhtml#aaf8558a23ae9be6e7ea165989f1fa808">FreeWorkingMemory</a>();</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;            });</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;    }</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;    lastId=networkId;</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;    <span class="keywordflow">return</span> loadedNetwork-&gt;<a class="code" href="classarmnn_1_1_loaded_network.xhtml#a878c3febb600fd2ccf3b5cb1f9a61e27">EnqueueWorkload</a>(inputTensors, outputTensors);</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"><a class="line" href="structarmnn_1_1_runtime_impl.xhtml#a957014ce1bfd27e99f0a50b3ced439e1">  405</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#a83015160d8c67d5d77735eb0d4033d9a">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="l00406"></a><span class="lineno">  406</span>&#160;{</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;    <a class="code" href="classarmnn_1_1_loaded_network.xhtml">LoadedNetwork</a>* loadedNetwork = GetLoadedNetworkPtr(networkId);</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;    loadedNetwork-&gt;<a class="code" href="classarmnn_1_1_loaded_network.xhtml#a091ea8d2d804c8902f3120fdf2a36512">RegisterDebugCallback</a>(func);</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;}</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;<span class="keywordtype">void</span> RuntimeImpl::LoadDynamicBackends(<span class="keyword">const</span> std::string&amp; overrideBackendPath)</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;{</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;    <span class="comment">// Get the paths where to load the dynamic backends from</span></div><div class="line"><a name="l00414"></a><span class="lineno">  414</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="l00415"></a><span class="lineno">  415</span>&#160;</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;    <span class="comment">// Get the shared objects to try to load as dynamic backends</span></div><div class="line"><a name="l00417"></a><span class="lineno">  417</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="l00418"></a><span class="lineno">  418</span>&#160;</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;    <span class="comment">// Create a list of dynamic backends</span></div><div class="line"><a name="l00420"></a><span class="lineno">  420</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="l00421"></a><span class="lineno">  421</span>&#160;</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;    <span class="comment">// Register the dynamic backends in the backend registry</span></div><div class="line"><a name="l00423"></a><span class="lineno">  423</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="l00424"></a><span class="lineno">  424</span>&#160;</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;    <span class="comment">// Add the registered dynamic backend ids to the list of supported backends</span></div><div class="line"><a name="l00426"></a><span class="lineno">  426</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="l00427"></a><span class="lineno">  427</span>&#160;}</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;} <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="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">TensorInfo GetInputTensorInfo(NetworkId networkId, LayerBindingId layerId) const</div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00372">Runtime.cpp:372</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#l00514">ProfilingService.cpp:514</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#l00037">Runtime.cpp:37</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#l00054">BackendRegistry.cpp:54</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#l00094">Runtime.cpp:94</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_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="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#l00191">BackendId.hpp:191</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#l00015">TimelineUtilityMethods.cpp:15</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#l00489">Profiling.cpp:489</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="classarmnn_1_1_i_runtime_xhtml_aa198ca53eeb01b6e2134da924ec36405"><div class="ttname"><a href="classarmnn_1_1_i_runtime.xhtml#aa198ca53eeb01b6e2134da924ec36405">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#l00067">Runtime.cpp:67</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="classarmnn_1_1profiling_1_1_profiling_guid_xhtml"><div class="ttname"><a href="classarmnn_1_1profiling_1_1_profiling_guid.xhtml">armnn::profiling::ProfilingGuid</a></div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00291">Types.hpp:291</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#l00168">Runtime.cpp:168</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#l00026">IRuntime.hpp:26</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#l00321">LoadedNetwork.cpp:321</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#l00202">Logging.hpp:202</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#l00109">Runtime.cpp:109</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#l00340">Tensor.hpp:340</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">TensorInfo GetOutputTensorInfo(NetworkId networkId, LayerBindingId layerId) const</div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00377">Runtime.cpp:377</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a83015160d8c67d5d77735eb0d4033d9a"><div class="ttname"><a href="namespacearmnn.xhtml#a83015160d8c67d5d77735eb0d4033d9a">armnn::NetworkId</a></div><div class="ttdeci">int NetworkId</div><div class="ttdef"><b>Definition:</b> <a href="_i_runtime_8hpp_source.xhtml#l00020">IRuntime.hpp:20</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="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#l00335">LoadedNetwork.cpp:335</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__software__tools_8dox_source.xhtml#l00006">01_00_software_tools.dox:6</a></div></div>
<div class="ttc" id="structarmnn_1_1_runtime_impl_xhtml_ab88fe81be37ed549ae7247c18025cc35"><div class="ttname"><a href="structarmnn_1_1_runtime_impl.xhtml#ab88fe81be37ed549ae7247c18025cc35">armnn::RuntimeImpl::EnqueueWorkload</a></div><div class="ttdeci">Status EnqueueWorkload(NetworkId networkId, const InputTensors &amp;inputTensors, const OutputTensors &amp;outputTensors)</div><div class="ttdef"><b>Definition:</b> <a href="_runtime_8cpp_source.xhtml#l00383">Runtime.cpp:383</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#l00040">IRuntime.hpp:40</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="ttdef"><b>Definition:</b> <a href="_i_runtime_8hpp_source.xhtml#l00075">IRuntime.hpp:75</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#l00405">Runtime.cpp:405</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#l00220">Runtime.cpp:220</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#l00283">Types.hpp:283</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="_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="classarmnn_1_1profiling_1_1_labels_and_event_classes_xhtml_abff887aa42263e0816432cdd0987e27d"><div class="ttname"><a href="classarmnn_1_1profiling_1_1_labels_and_event_classes.xhtml#abff887aa42263e0816432cdd0987e27d">armnn::profiling::LabelsAndEventClasses::ARMNN_PROFILING_EOL_EVENT_CLASS</a></div><div class="ttdeci">static ARMNN_DLLEXPORT ProfilingStaticGuid ARMNN_PROFILING_EOL_EVENT_CLASS</div><div class="ttdef"><b>Definition:</b> <a href="_labels_and_event_classes_8hpp_source.xhtml#l00060">LabelsAndEventClasses.hpp:60</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#l00173">Profiling.hpp:173</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#l00210">Types.hpp:210</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#l00042">Runtime.cpp:42</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#l00028">IRuntime.hpp:28</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#l00099">Runtime.cpp:99</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#l00147">BackendId.hpp:147</a></div></div>
<div class="ttc" id="_labels_and_event_classes_8hpp_xhtml"><div class="ttname"><a href="_labels_and_event_classes_8hpp.xhtml">LabelsAndEventClasses.hpp</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#l00232">Runtime.cpp:232</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#l00699">INetwork.hpp:699</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_runtime_xhtml_a81c83702b94931626c6d84a3fa915362"><div class="ttname"><a href="classarmnn_1_1_i_runtime.xhtml#a81c83702b94931626c6d84a3fa915362">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#l00072">Runtime.cpp:72</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="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#l00316">Runtime.cpp:316</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#l00084">Runtime.cpp:84</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#l00341">Tensor.hpp:341</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#l00026">Types.hpp:26</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#l00174">INetwork.hpp:174</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#l00104">BackendRegistry.cpp:104</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_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#l00177">IRuntime.hpp:177</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#l00047">Runtime.cpp:47</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#l00200">Types.hpp:200</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#l00032">Runtime.cpp:32</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="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#l00725">LoadedNetwork.cpp:725</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#l00089">Runtime.cpp:89</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#l00043">IRuntime.hpp:43</a></div></div>
<div class="ttc" id="classarmnn_1_1_loaded_network_xhtml_a878c3febb600fd2ccf3b5cb1f9a61e27"><div class="ttname"><a href="classarmnn_1_1_loaded_network.xhtml#a878c3febb600fd2ccf3b5cb1f9a61e27">armnn::LoadedNetwork::EnqueueWorkload</a></div><div class="ttdeci">Status EnqueueWorkload(const InputTensors &amp;inputTensors, const OutputTensors &amp;outputTensors)</div><div class="ttdef"><b>Definition:</b> <a href="_loaded_network_8cpp_source.xhtml#l00470">LoadedNetwork.cpp:470</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#l00060">IRuntime.hpp:60</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#l00496">Profiling.cpp:496</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#l00026">Runtime.cpp:26</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#l00034">LoadedNetwork.hpp:34</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="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#l00053">LoadedNetwork.hpp:53</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#l00795">LoadedNetwork.cpp:795</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#l00247">Runtime.cpp:247</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="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="ttdef"><b>Definition:</b> <a href="_i_runtime_8hpp_source.xhtml#l00076">IRuntime.hpp:76</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_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#l00212">ProfilingService.cpp:212</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#l00084">IRuntime.hpp:84</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#l00060">ProfilingService.cpp:60</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#l00083">LoadedNetwork.cpp:83</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_runtime_xhtml_ab88fe81be37ed549ae7247c18025cc35"><div class="ttname"><a href="classarmnn_1_1_i_runtime.xhtml#ab88fe81be37ed549ae7247c18025cc35">armnn::IRuntime::EnqueueWorkload</a></div><div class="ttdeci">Status EnqueueWorkload(NetworkId networkId, const InputTensors &amp;inputTensors, const OutputTensors &amp;outputTensors)</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#l00077">Runtime.cpp:77</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 Thu Feb 25 2021 17:27:29 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>