blob: b3eb402a2346f5e5a17b9fd750d83193e3c5072b [file] [log] [blame]
Ryan OSheade36e4a2020-03-13 16:26:19 +00001<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6<meta name="generator" content="Doxygen 1.8.13"/>
7<meta name="viewport" content="width=device-width, initial-scale=1"/>
8<title>ArmNN: InferenceModel&lt; IParser, TDataType &gt; Class Template Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="navtree.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="resize.js"></script>
14<script type="text/javascript" src="navtreedata.js"></script>
15<script type="text/javascript" src="navtree.js"></script>
16<script type="text/javascript">
17 $(document).ready(initResizable);
18</script>
19<link href="search/search.css" rel="stylesheet" type="text/css"/>
20<script type="text/javascript" src="search/searchdata.js"></script>
21<script type="text/javascript" src="search/search.js"></script>
22<link href="doxygen.css" rel="stylesheet" type="text/css" />
23</head>
24<body>
25<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
26<div id="titlearea">
27<table cellspacing="0" cellpadding="0">
28 <tbody>
29 <tr style="height: 56px;">
30 <td id="projectalign" style="padding-left: 0.5em;">
31 <div id="projectname">ArmNN
32 &#160;<span id="projectnumber">NotReleased</span>
33 </div>
34 </td>
35 </tr>
36 </tbody>
37</table>
38</div>
39<!-- end header part -->
40<!-- Generated by Doxygen 1.8.13 -->
41<script type="text/javascript">
42var searchBox = new SearchBox("searchBox", "search",false,'Search');
43</script>
44<script type="text/javascript" src="menudata.js"></script>
45<script type="text/javascript" src="menu.js"></script>
46<script type="text/javascript">
47$(function() {
48 initMenu('',true,false,'search.php','Search');
49 $(document).ready(function() { init_search(); });
50});
51</script>
52<div id="main-nav"></div>
53</div><!-- top -->
54<div id="side-nav" class="ui-resizable side-nav-resizable">
55 <div id="nav-tree">
56 <div id="nav-tree-contents">
57 <div id="nav-sync" class="sync"></div>
58 </div>
59 </div>
60 <div id="splitbar" style="-moz-user-select:none;"
61 class="ui-resizable-handle">
62 </div>
63</div>
64<script type="text/javascript">
65$(document).ready(function(){initNavTree('class_inference_model.html','');});
66</script>
67<div id="doc-content">
68<!-- window showing the filter options -->
69<div id="MSearchSelectWindow"
70 onmouseover="return searchBox.OnSearchSelectShow()"
71 onmouseout="return searchBox.OnSearchSelectHide()"
72 onkeydown="return searchBox.OnSearchSelectKey(event)">
73</div>
74
75<!-- iframe showing the search results (closed by default) -->
76<div id="MSearchResultsWindow">
77<iframe src="javascript:void(0)" frameborder="0"
78 name="MSearchResults" id="MSearchResults">
79</iframe>
80</div>
81
82<div class="header">
83 <div class="summary">
84<a href="#nested-classes">Classes</a> &#124;
85<a href="#pub-types">Public Types</a> &#124;
86<a href="#pub-methods">Public Member Functions</a> &#124;
87<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
88<a href="class_inference_model-members.html">List of all members</a> </div>
89 <div class="headertitle">
90<div class="title">InferenceModel&lt; IParser, TDataType &gt; Class Template Reference</div> </div>
91</div><!--header-->
92<div class="contents">
93
94<p><code>#include &lt;<a class="el" href="_inference_model_8hpp_source.html">InferenceModel.hpp</a>&gt;</code></p>
95<table class="memberdecls">
96<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
97Classes</h2></td></tr>
98<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_inference_model_1_1_command_line_options.html">CommandLineOptions</a></td></tr>
99<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
100</table><table class="memberdecls">
101<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
102Public Types</h2></td></tr>
103<tr class="memitem:af6964b8f91085191c5228d1a67db4523"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_inference_model.html#af6964b8f91085191c5228d1a67db4523">DataType</a> = TDataType</td></tr>
104<tr class="separator:af6964b8f91085191c5228d1a67db4523"><td class="memSeparator" colspan="2">&#160;</td></tr>
105<tr class="memitem:a2e61c7404108440828ef7a45f310e229"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_inference_model.html#a2e61c7404108440828ef7a45f310e229">Params</a> = <a class="el" href="struct_inference_model_internal_1_1_params.html">InferenceModelInternal::Params</a></td></tr>
106<tr class="separator:a2e61c7404108440828ef7a45f310e229"><td class="memSeparator" colspan="2">&#160;</td></tr>
107<tr class="memitem:ae3ca0528045df8958ce5dcdf9d1af041"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_inference_model.html#ae3ca0528045df8958ce5dcdf9d1af041">QuantizationParams</a> = <a class="el" href="namespace_inference_model_internal.html#a6e713a319588c57fc854bc478f5ee13a">InferenceModelInternal::QuantizationParams</a></td></tr>
108<tr class="separator:ae3ca0528045df8958ce5dcdf9d1af041"><td class="memSeparator" colspan="2">&#160;</td></tr>
109<tr class="memitem:a9eb69ebdaf4ceb8014e7c8a540266100"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_inference_model.html#a9eb69ebdaf4ceb8014e7c8a540266100">TContainer</a> = boost::variant&lt; std::vector&lt; float &gt;, std::vector&lt; int &gt;, std::vector&lt; unsigned char &gt; &gt;</td></tr>
110<tr class="separator:a9eb69ebdaf4ceb8014e7c8a540266100"><td class="memSeparator" colspan="2">&#160;</td></tr>
111</table><table class="memberdecls">
112<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
113Public Member Functions</h2></td></tr>
114<tr class="memitem:a5a211a676b879363f0c5001698a14c50"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_inference_model.html#a5a211a676b879363f0c5001698a14c50">InferenceModel</a> (const <a class="el" href="class_inference_model.html#a2e61c7404108440828ef7a45f310e229">Params</a> &amp;params, bool enableProfiling, const std::string &amp;dynamicBackendsPath, const std::shared_ptr&lt; <a class="el" href="classarmnn_1_1_i_runtime.html">armnn::IRuntime</a> &gt; &amp;runtime=nullptr)</td></tr>
115<tr class="separator:a5a211a676b879363f0c5001698a14c50"><td class="memSeparator" colspan="2">&#160;</td></tr>
116<tr class="memitem:a262185c43532d5728c4bd7890f3b2235"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_inference_model.html#a262185c43532d5728c4bd7890f3b2235">CheckInputIndexIsValid</a> (unsigned int inputIndex) const</td></tr>
117<tr class="separator:a262185c43532d5728c4bd7890f3b2235"><td class="memSeparator" colspan="2">&#160;</td></tr>
118<tr class="memitem:a72a6db08ffca660ece7c2d86e2a14daa"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_inference_model.html#a72a6db08ffca660ece7c2d86e2a14daa">CheckOutputIndexIsValid</a> (unsigned int outputIndex) const</td></tr>
119<tr class="separator:a72a6db08ffca660ece7c2d86e2a14daa"><td class="memSeparator" colspan="2">&#160;</td></tr>
120<tr class="memitem:a679e4b22a845c8d7f58f6ca6a5df625f"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_inference_model.html#a679e4b22a845c8d7f58f6ca6a5df625f">GetInputSize</a> (unsigned int inputIndex=0u) const</td></tr>
121<tr class="separator:a679e4b22a845c8d7f58f6ca6a5df625f"><td class="memSeparator" colspan="2">&#160;</td></tr>
122<tr class="memitem:a8282dddf88e0deb3c414235e20a6cb2c"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_inference_model.html#a8282dddf88e0deb3c414235e20a6cb2c">GetOutputSize</a> (unsigned int outputIndex=0u) const</td></tr>
123<tr class="separator:a8282dddf88e0deb3c414235e20a6cb2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
124<tr class="memitem:a7af4f6c4d5f8720a6ea093a825722227"><td class="memItemLeft" align="right" valign="top">std::chrono::duration&lt; double, std::milli &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_inference_model.html#a7af4f6c4d5f8720a6ea093a825722227">Run</a> (const std::vector&lt; <a class="el" href="class_inference_model.html#a9eb69ebdaf4ceb8014e7c8a540266100">TContainer</a> &gt; &amp;inputContainers, std::vector&lt; <a class="el" href="class_inference_model.html#a9eb69ebdaf4ceb8014e7c8a540266100">TContainer</a> &gt; &amp;outputContainers)</td></tr>
125<tr class="separator:a7af4f6c4d5f8720a6ea093a825722227"><td class="memSeparator" colspan="2">&#160;</td></tr>
126<tr class="memitem:a9a28e0c17604e5a945409f994c020212"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespacearmnn.html#a280670a263dc4fd40491f6d0a2737f44">armnn::BindingPointInfo</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_inference_model.html#a9a28e0c17604e5a945409f994c020212">GetInputBindingInfo</a> (unsigned int inputIndex=0u) const</td></tr>
127<tr class="separator:a9a28e0c17604e5a945409f994c020212"><td class="memSeparator" colspan="2">&#160;</td></tr>
128<tr class="memitem:a0e0f3330fc1e6c1fa1d99d731490c483"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; <a class="el" href="namespacearmnn.html#a280670a263dc4fd40491f6d0a2737f44">armnn::BindingPointInfo</a> &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_inference_model.html#a0e0f3330fc1e6c1fa1d99d731490c483">GetInputBindingInfos</a> () const</td></tr>
129<tr class="separator:a0e0f3330fc1e6c1fa1d99d731490c483"><td class="memSeparator" colspan="2">&#160;</td></tr>
130<tr class="memitem:a325f1c17b5ff2153cae944e3c62820a2"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespacearmnn.html#a280670a263dc4fd40491f6d0a2737f44">armnn::BindingPointInfo</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_inference_model.html#a325f1c17b5ff2153cae944e3c62820a2">GetOutputBindingInfo</a> (unsigned int outputIndex=0u) const</td></tr>
131<tr class="separator:a325f1c17b5ff2153cae944e3c62820a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
132<tr class="memitem:ac0b73049e00e7013f5cc6ae7fcaedcd4"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; <a class="el" href="namespacearmnn.html#a280670a263dc4fd40491f6d0a2737f44">armnn::BindingPointInfo</a> &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_inference_model.html#ac0b73049e00e7013f5cc6ae7fcaedcd4">GetOutputBindingInfos</a> () const</td></tr>
133<tr class="separator:ac0b73049e00e7013f5cc6ae7fcaedcd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
134<tr class="memitem:a1a09727b3f781272e702516fffb7d97f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_inference_model.html#ae3ca0528045df8958ce5dcdf9d1af041">QuantizationParams</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_inference_model.html#a1a09727b3f781272e702516fffb7d97f">GetQuantizationParams</a> (unsigned int outputIndex=0u) const</td></tr>
135<tr class="separator:a1a09727b3f781272e702516fffb7d97f"><td class="memSeparator" colspan="2">&#160;</td></tr>
136<tr class="memitem:a066580d185559e2efdcb6cedd1709b9c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_inference_model.html#ae3ca0528045df8958ce5dcdf9d1af041">QuantizationParams</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_inference_model.html#a066580d185559e2efdcb6cedd1709b9c">GetInputQuantizationParams</a> (unsigned int inputIndex=0u) const</td></tr>
137<tr class="separator:a066580d185559e2efdcb6cedd1709b9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
138<tr class="memitem:ade1a8545be49b1c10e724ea8536907c7"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="class_inference_model.html#ae3ca0528045df8958ce5dcdf9d1af041">QuantizationParams</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_inference_model.html#ade1a8545be49b1c10e724ea8536907c7">GetAllQuantizationParams</a> () const</td></tr>
139<tr class="separator:ade1a8545be49b1c10e724ea8536907c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
140</table><table class="memberdecls">
141<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
142Static Public Member Functions</h2></td></tr>
143<tr class="memitem:afdd8d34e58b7a2dbf29e30d228c475a3"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_inference_model.html#afdd8d34e58b7a2dbf29e30d228c475a3">AddCommandLineOptions</a> (boost::program_options::options_description &amp;desc, <a class="el" href="struct_inference_model_1_1_command_line_options.html">CommandLineOptions</a> &amp;<a class="el" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>)</td></tr>
144<tr class="separator:afdd8d34e58b7a2dbf29e30d228c475a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
145</table>
146<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
147<div class="textblock"><h3>template&lt;typename IParser, typename TDataType&gt;<br />
148class InferenceModel&lt; IParser, TDataType &gt;</h3>
149
150
151<p class="definition">Definition at line <a class="el" href="_inference_model_8hpp_source.html#l00316">316</a> of file <a class="el" href="_inference_model_8hpp_source.html">InferenceModel.hpp</a>.</p>
152</div><h2 class="groupheader">Member Typedef Documentation</h2>
153<a id="af6964b8f91085191c5228d1a67db4523"></a>
154<h2 class="memtitle"><span class="permalink"><a href="#af6964b8f91085191c5228d1a67db4523">&#9670;&nbsp;</a></span>DataType</h2>
155
156<div class="memitem">
157<div class="memproto">
158 <table class="memname">
159 <tr>
160 <td class="memname">using <a class="el" href="class_inference_model.html#af6964b8f91085191c5228d1a67db4523">DataType</a> = TDataType</td>
161 </tr>
162 </table>
163</div><div class="memdoc">
164
165<p class="definition">Definition at line <a class="el" href="_inference_model_8hpp_source.html#l00319">319</a> of file <a class="el" href="_inference_model_8hpp_source.html">InferenceModel.hpp</a>.</p>
166
167</div>
168</div>
169<a id="a2e61c7404108440828ef7a45f310e229"></a>
170<h2 class="memtitle"><span class="permalink"><a href="#a2e61c7404108440828ef7a45f310e229">&#9670;&nbsp;</a></span>Params</h2>
171
172<div class="memitem">
173<div class="memproto">
174 <table class="memname">
175 <tr>
176 <td class="memname">using <a class="el" href="class_inference_model.html#a2e61c7404108440828ef7a45f310e229">Params</a> = <a class="el" href="struct_inference_model_internal_1_1_params.html">InferenceModelInternal::Params</a></td>
177 </tr>
178 </table>
179</div><div class="memdoc">
180
181<p class="definition">Definition at line <a class="el" href="_inference_model_8hpp_source.html#l00320">320</a> of file <a class="el" href="_inference_model_8hpp_source.html">InferenceModel.hpp</a>.</p>
182
183</div>
184</div>
185<a id="ae3ca0528045df8958ce5dcdf9d1af041"></a>
186<h2 class="memtitle"><span class="permalink"><a href="#ae3ca0528045df8958ce5dcdf9d1af041">&#9670;&nbsp;</a></span>QuantizationParams</h2>
187
188<div class="memitem">
189<div class="memproto">
190 <table class="memname">
191 <tr>
192 <td class="memname">using <a class="el" href="class_inference_model.html#ae3ca0528045df8958ce5dcdf9d1af041">QuantizationParams</a> = <a class="el" href="namespace_inference_model_internal.html#a6e713a319588c57fc854bc478f5ee13a">InferenceModelInternal::QuantizationParams</a></td>
193 </tr>
194 </table>
195</div><div class="memdoc">
196
197<p class="definition">Definition at line <a class="el" href="_inference_model_8hpp_source.html#l00321">321</a> of file <a class="el" href="_inference_model_8hpp_source.html">InferenceModel.hpp</a>.</p>
198
199</div>
200</div>
201<a id="a9eb69ebdaf4ceb8014e7c8a540266100"></a>
202<h2 class="memtitle"><span class="permalink"><a href="#a9eb69ebdaf4ceb8014e7c8a540266100">&#9670;&nbsp;</a></span>TContainer</h2>
203
204<div class="memitem">
205<div class="memproto">
206 <table class="memname">
207 <tr>
208 <td class="memname">using <a class="el" href="class_inference_model.html#a9eb69ebdaf4ceb8014e7c8a540266100">TContainer</a> = boost::variant&lt;std::vector&lt;float&gt;, std::vector&lt;int&gt;, std::vector&lt;unsigned char&gt; &gt;</td>
209 </tr>
210 </table>
211</div><div class="memdoc">
212
213<p class="definition">Definition at line <a class="el" href="_inference_model_8hpp_source.html#l00322">322</a> of file <a class="el" href="_inference_model_8hpp_source.html">InferenceModel.hpp</a>.</p>
214
215</div>
216</div>
217<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
218<a id="a5a211a676b879363f0c5001698a14c50"></a>
219<h2 class="memtitle"><span class="permalink"><a href="#a5a211a676b879363f0c5001698a14c50">&#9670;&nbsp;</a></span>InferenceModel()</h2>
220
221<div class="memitem">
222<div class="memproto">
223<table class="mlabels">
224 <tr>
225 <td class="mlabels-left">
226 <table class="memname">
227 <tr>
228 <td class="memname"><a class="el" href="class_inference_model.html">InferenceModel</a> </td>
229 <td>(</td>
230 <td class="paramtype">const <a class="el" href="class_inference_model.html#a2e61c7404108440828ef7a45f310e229">Params</a> &amp;&#160;</td>
231 <td class="paramname"><em>params</em>, </td>
232 </tr>
233 <tr>
234 <td class="paramkey"></td>
235 <td></td>
236 <td class="paramtype">bool&#160;</td>
237 <td class="paramname"><em>enableProfiling</em>, </td>
238 </tr>
239 <tr>
240 <td class="paramkey"></td>
241 <td></td>
242 <td class="paramtype">const std::string &amp;&#160;</td>
243 <td class="paramname"><em>dynamicBackendsPath</em>, </td>
244 </tr>
245 <tr>
246 <td class="paramkey"></td>
247 <td></td>
248 <td class="paramtype">const std::shared_ptr&lt; <a class="el" href="classarmnn_1_1_i_runtime.html">armnn::IRuntime</a> &gt; &amp;&#160;</td>
249 <td class="paramname"><em>runtime</em> = <code>nullptr</code>&#160;</td>
250 </tr>
251 <tr>
252 <td></td>
253 <td>)</td>
254 <td></td><td></td>
255 </tr>
256 </table>
257 </td>
258 <td class="mlabels-right">
259<span class="mlabels"><span class="mlabel">inline</span></span> </td>
260 </tr>
261</table>
262</div><div class="memdoc">
263
264<p class="definition">Definition at line <a class="el" href="_inference_model_8hpp_source.html#l00371">371</a> of file <a class="el" href="_inference_model_8hpp_source.html">InferenceModel.hpp</a>.</p>
265
266<p class="reference">References <a class="el" href="_heap_profiling_8hpp_source.html#l00045">ARMNN_SCOPED_HEAP_PROFILING</a>, <a class="el" href="_runtime_8cpp_source.html#l00032">IRuntime::Create()</a>, <a class="el" href="_inference_model_8hpp_source.html#l00116">CreateNetworkImpl&lt; IParser &gt;::Create()</a>, <a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">armnn::Failure</a>, <a class="el" href="_inference_model_8hpp_source.html#l00088">Params::m_ComputeDevices</a>, <a class="el" href="_i_network_8hpp_source.html#l00576">OptimizerOptions::m_Debug</a>, <a class="el" href="_i_runtime_8hpp_source.html#l00058">IRuntime::CreationOptions::m_DynamicBackendsPath</a>, <a class="el" href="_inference_model_8hpp_source.html#l00089">Params::m_DynamicBackendsPath</a>, <a class="el" href="_inference_model_8hpp_source.html#l00093">Params::m_EnableFp16TurboMode</a>, <a class="el" href="_i_runtime_8hpp_source.html#l00054">IRuntime::CreationOptions::m_EnableGpuProfiling</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00046">m_EnableProfiling</a>, <a class="el" href="_inference_model_8hpp_source.html#l00085">Params::m_InputBindings</a>, <a class="el" href="_inference_model_8hpp_source.html#l00084">Params::m_ModelPath</a>, <a class="el" href="_inference_model_8hpp_source.html#l00087">Params::m_OutputBindings</a>, <a class="el" href="_inference_model_8hpp_source.html#l00094">Params::m_PrintIntermediateLayers</a>, <a class="el" href="_i_network_8hpp_source.html#l00573">OptimizerOptions::m_ReduceFp32ToFp16</a>, <a class="el" href="_inference_model_8hpp_source.html#l00092">Params::m_VisualizePostOptimizationModel</a>, <a class="el" href="_network_8cpp_source.html#l00807">armnn::Optimize()</a>, and <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>.</p>
267<div class="fragment"><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; : <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#affc4c5e8c0f3e0fac268deec9b481941">m_EnableProfiling</a>(enableProfiling)</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; , m_DynamicBackendsPath(dynamicBackendsPath)</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">if</span> (runtime)</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; m_Runtime = runtime;</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; <span class="keywordflow">else</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options.html">armnn::IRuntime::CreationOptions</a> <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; options.<a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options.html#a2fe8c3eadf4f4f9c0c664a24a2a298f9">m_EnableGpuProfiling</a> = <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#affc4c5e8c0f3e0fac268deec9b481941">m_EnableProfiling</a>;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; options.<a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options.html#ae43cf4b5df0068ee6a9151c98947248b">m_DynamicBackendsPath</a> = m_DynamicBackendsPath;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; m_Runtime = std::move(<a class="code" href="classarmnn_1_1_i_runtime.html#ad44ecd3700748dc30dc4bbe34ba5bde7">armnn::IRuntime::Create</a>(options));</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; }</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; std::string invalidBackends;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordflow">if</span> (!CheckRequestedBackendsAreValid(params.m_ComputeDevices, <a class="code" href="classarmnn_1_1_optional.html">armnn::Optional&lt;std::string&amp;&gt;</a>(invalidBackends)))</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_exception.html">armnn::Exception</a>(<span class="stringliteral">&quot;Some backend IDs are invalid: &quot;</span> + invalidBackends);</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;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a> network = <a class="code" href="struct_create_network_impl.html#a4cbece5e7793be85f9a1e8a0ab9e02f8">CreateNetworkImpl&lt;IParser&gt;::Create</a>(params, m_InputBindings, m_OutputBindings);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="namespacearmnn.html#a674efcf6cbdb9e831d653ff0e821fb38">armnn::IOptimizedNetworkPtr</a> optNet{<span class="keyword">nullptr</span>, [](<a class="code" href="classarmnn_1_1_i_optimized_network.html">armnn::IOptimizedNetwork</a>*){}};</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; <a class="code" href="_heap_profiling_8hpp.html#aeeb927880fc4ffc2eea754a67d884a53">ARMNN_SCOPED_HEAP_PROFILING</a>(<span class="stringliteral">&quot;Optimizing&quot;</span>);</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; <a class="code" href="structarmnn_1_1_optimizer_options.html">armnn::OptimizerOptions</a> <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; options.<a class="code" href="structarmnn_1_1_optimizer_options.html#a6e1a42622ca43dafc7ba8e684c016eb4">m_ReduceFp32ToFp16</a> = params.m_EnableFp16TurboMode;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; options.<a class="code" href="structarmnn_1_1_optimizer_options.html#a69eb14082d40fa0a3cff50457344a5e0">m_Debug</a> = params.m_PrintIntermediateLayers;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; optNet = <a class="code" href="namespacearmnn.html#a82e98ef05fd67036d1195ba17174d685">armnn::Optimize</a>(*network, params.m_ComputeDevices, m_Runtime-&gt;GetDeviceSpec(), <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">if</span> (!optNet)</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_exception.html">armnn::Exception</a>(<span class="stringliteral">&quot;Optimize returned nullptr&quot;</span>);</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; }</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="keywordflow">if</span> (params.m_VisualizePostOptimizationModel)</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; boost::filesystem::path filename = params.m_ModelPath;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; filename.replace_extension(<span class="stringliteral">&quot;dot&quot;</span>);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; std::fstream file(filename.c_str(), std::ios_base::out);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; optNet-&gt;SerializeToDot(file);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a> ret;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="_heap_profiling_8hpp.html#aeeb927880fc4ffc2eea754a67d884a53">ARMNN_SCOPED_HEAP_PROFILING</a>(<span class="stringliteral">&quot;LoadNetwork&quot;</span>);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; ret = m_Runtime-&gt;LoadNetwork(m_NetworkIdentifier, std::move(optNet));</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; }</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">if</span> (ret == <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">armnn::Status::Failure</a>)</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="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_exception.html">armnn::Exception</a>(<span class="stringliteral">&quot;IRuntime::LoadNetwork failed&quot;</span>);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; }</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; }</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00026">Types.hpp:26</a></div></div>
268<div class="ttc" id="namespacearmnn_html_a82e98ef05fd67036d1195ba17174d685"><div class="ttname"><a href="namespacearmnn.html#a82e98ef05fd67036d1195ba17174d685">armnn::Optimize</a></div><div class="ttdeci">IOptimizedNetworkPtr Optimize(const INetwork &amp;network, const std::vector&lt; BackendId &gt; &amp;backendPreferences, const IDeviceSpec &amp;deviceSpec, const OptimizerOptions &amp;options=OptimizerOptions(), Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; messages=EmptyOptional())</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.html#l00807">Network.cpp:807</a></div></div>
269<div class="ttc" id="classarmnn_1_1_optional_html"><div class="ttname"><a href="classarmnn_1_1_optional.html">armnn::Optional</a></div><div class="ttdef"><b>Definition:</b> <a href="_optional_8hpp_source.html#l00270">Optional.hpp:270</a></div></div>
270<div class="ttc" id="structarmnn_1_1_optimizer_options_html_a69eb14082d40fa0a3cff50457344a5e0"><div class="ttname"><a href="structarmnn_1_1_optimizer_options.html#a69eb14082d40fa0a3cff50457344a5e0">armnn::OptimizerOptions::m_Debug</a></div><div class="ttdeci">bool m_Debug</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00576">INetwork.hpp:576</a></div></div>
271<div class="ttc" id="_heap_profiling_8hpp_html_aeeb927880fc4ffc2eea754a67d884a53"><div class="ttname"><a href="_heap_profiling_8hpp.html#aeeb927880fc4ffc2eea754a67d884a53">ARMNN_SCOPED_HEAP_PROFILING</a></div><div class="ttdeci">#define ARMNN_SCOPED_HEAP_PROFILING(TAG)</div><div class="ttdef"><b>Definition:</b> <a href="_heap_profiling_8hpp_source.html#l00045">HeapProfiling.hpp:45</a></div></div>
272<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_affc4c5e8c0f3e0fac268deec9b481941"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#affc4c5e8c0f3e0fac268deec9b481941">m_EnableProfiling</a></div><div class="ttdeci">options m_EnableProfiling</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00046">FileOnlyProfilingDecoratorTests.cpp:46</a></div></div>
273<div class="ttc" id="structarmnn_1_1_i_runtime_1_1_creation_options_html_a2fe8c3eadf4f4f9c0c664a24a2a298f9"><div class="ttname"><a href="structarmnn_1_1_i_runtime_1_1_creation_options.html#a2fe8c3eadf4f4f9c0c664a24a2a298f9">armnn::IRuntime::CreationOptions::m_EnableGpuProfiling</a></div><div class="ttdeci">bool m_EnableGpuProfiling</div><div class="ttdef"><b>Definition:</b> <a href="_i_runtime_8hpp_source.html#l00054">IRuntime.hpp:54</a></div></div>
274<div class="ttc" id="classarmnn_1_1_exception_html"><div class="ttname"><a href="classarmnn_1_1_exception.html">armnn::Exception</a></div><div class="ttdoc">Base class for all ArmNN exceptions so that users can filter to just those. </div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.html#l00046">Exceptions.hpp:46</a></div></div>
275<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00085">INetwork.hpp:85</a></div></div>
276<div class="ttc" id="structarmnn_1_1_optimizer_options_html"><div class="ttname"><a href="structarmnn_1_1_optimizer_options.html">armnn::OptimizerOptions</a></div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00560">INetwork.hpp:560</a></div></div>
277<div class="ttc" id="classarmnn_1_1_i_runtime_html_ad44ecd3700748dc30dc4bbe34ba5bde7"><div class="ttname"><a href="classarmnn_1_1_i_runtime.html#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.html#l00032">Runtime.cpp:32</a></div></div>
278<div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">armnn::Status::Failure</a></div></div>
279<div class="ttc" id="struct_create_network_impl_html_a4cbece5e7793be85f9a1e8a0ab9e02f8"><div class="ttname"><a href="struct_create_network_impl.html#a4cbece5e7793be85f9a1e8a0ab9e02f8">CreateNetworkImpl::Create</a></div><div class="ttdeci">static armnn::INetworkPtr Create(const Params &amp;params, std::vector&lt; armnn::BindingPointInfo &gt; &amp;inputBindings, std::vector&lt; armnn::BindingPointInfo &gt; &amp;outputBindings)</div><div class="ttdef"><b>Definition:</b> <a href="_inference_model_8hpp_source.html#l00116">InferenceModel.hpp:116</a></div></div>
280<div class="ttc" id="structarmnn_1_1_i_runtime_1_1_creation_options_html_ae43cf4b5df0068ee6a9151c98947248b"><div class="ttname"><a href="structarmnn_1_1_i_runtime_1_1_creation_options.html#ae43cf4b5df0068ee6a9151c98947248b">armnn::IRuntime::CreationOptions::m_DynamicBackendsPath</a></div><div class="ttdeci">std::string m_DynamicBackendsPath</div><div class="ttdef"><b>Definition:</b> <a href="_i_runtime_8hpp_source.html#l00058">IRuntime.hpp:58</a></div></div>
281<div class="ttc" id="classarmnn_1_1_i_optimized_network_html"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.html">armnn::IOptimizedNetwork</a></div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00546">INetwork.hpp:546</a></div></div>
282<div class="ttc" id="namespacearmnn_html_a674efcf6cbdb9e831d653ff0e821fb38"><div class="ttname"><a href="namespacearmnn.html#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.html#l00544">INetwork.hpp:544</a></div></div>
283<div class="ttc" id="structarmnn_1_1_i_runtime_1_1_creation_options_html"><div class="ttname"><a href="structarmnn_1_1_i_runtime_1_1_creation_options.html">armnn::IRuntime::CreationOptions</a></div><div class="ttdef"><b>Definition:</b> <a href="_i_runtime_8hpp_source.html#l00041">IRuntime.hpp:41</a></div></div>
284<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
285<div class="ttc" id="structarmnn_1_1_optimizer_options_html_a6e1a42622ca43dafc7ba8e684c016eb4"><div class="ttname"><a href="structarmnn_1_1_optimizer_options.html#a6e1a42622ca43dafc7ba8e684c016eb4">armnn::OptimizerOptions::m_ReduceFp32ToFp16</a></div><div class="ttdeci">bool m_ReduceFp32ToFp16</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.html#l00573">INetwork.hpp:573</a></div></div>
286</div><!-- fragment -->
287</div>
288</div>
289<h2 class="groupheader">Member Function Documentation</h2>
290<a id="afdd8d34e58b7a2dbf29e30d228c475a3"></a>
291<h2 class="memtitle"><span class="permalink"><a href="#afdd8d34e58b7a2dbf29e30d228c475a3">&#9670;&nbsp;</a></span>AddCommandLineOptions()</h2>
292
293<div class="memitem">
294<div class="memproto">
295<table class="mlabels">
296 <tr>
297 <td class="mlabels-left">
298 <table class="memname">
299 <tr>
300 <td class="memname">static void AddCommandLineOptions </td>
301 <td>(</td>
302 <td class="paramtype">boost::program_options::options_description &amp;&#160;</td>
303 <td class="paramname"><em>desc</em>, </td>
304 </tr>
305 <tr>
306 <td class="paramkey"></td>
307 <td></td>
308 <td class="paramtype"><a class="el" href="struct_inference_model_1_1_command_line_options.html">CommandLineOptions</a> &amp;&#160;</td>
309 <td class="paramname"><em>options</em>&#160;</td>
310 </tr>
311 <tr>
312 <td></td>
313 <td>)</td>
314 <td></td><td></td>
315 </tr>
316 </table>
317 </td>
318 <td class="mlabels-right">
319<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
320 </tr>
321</table>
322</div><div class="memdoc">
323
324<p class="definition">Definition at line <a class="el" href="_inference_model_8hpp_source.html#l00341">341</a> of file <a class="el" href="_inference_model_8hpp_source.html">InferenceModel.hpp</a>.</p>
325
326<p class="reference">References <a class="el" href="_backend_registry_8cpp_source.html#l00013">armnn::BackendRegistryInstance()</a>, <a class="el" href="_backend_registry_8cpp_source.html#l00076">BackendRegistry::GetBackendIdsAsString()</a>, <a class="el" href="_inference_model_8hpp_source.html#l00327">InferenceModel&lt; IParser, TDataType &gt;::CommandLineOptions::m_ComputeDevices</a>, <a class="el" href="_inference_model_8hpp_source.html#l00328">InferenceModel&lt; IParser, TDataType &gt;::CommandLineOptions::m_DynamicBackendsPath</a>, <a class="el" href="_inference_model_8hpp_source.html#l00330">InferenceModel&lt; IParser, TDataType &gt;::CommandLineOptions::m_EnableFp16TurboMode</a>, <a class="el" href="_inference_model_8hpp_source.html#l00331">InferenceModel&lt; IParser, TDataType &gt;::CommandLineOptions::m_Labels</a>, <a class="el" href="_inference_model_8hpp_source.html#l00326">InferenceModel&lt; IParser, TDataType &gt;::CommandLineOptions::m_ModelDir</a>, and <a class="el" href="_inference_model_8hpp_source.html#l00329">InferenceModel&lt; IParser, TDataType &gt;::CommandLineOptions::m_VisualizePostOptimizationModel</a>.</p>
327
328<p class="reference">Referenced by <a class="el" href="_inference_test_8inl_source.html#l00185">ClassifierTestCaseProvider&lt; TDatabase, InferenceModel &gt;::AddCommandLineOptions()</a>.</p>
329<div class="fragment"><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; {</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keyword">namespace </span>po = boost::program_options;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keyword">const</span> std::vector&lt;std::string&gt; defaultComputes = { <span class="stringliteral">&quot;CpuAcc&quot;</span>, <span class="stringliteral">&quot;CpuRef&quot;</span> };</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keyword">const</span> std::string backendsMessage = <span class="stringliteral">&quot;Which device to run layers on by default. Possible choices: &quot;</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; + <a class="code" href="namespacearmnn.html#ac2807505b850738bc8a1991ce669dd47">armnn::BackendRegistryInstance</a>().<a class="code" href="classarmnn_1_1_backend_registry.html#ae1de2f7ca1db17f45f97155e239b8b45">GetBackendIdsAsString</a>();</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; desc.add_options()</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; (<span class="stringliteral">&quot;model-dir,m&quot;</span>, po::value&lt;std::string&gt;(&amp;<a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>.m_ModelDir)-&gt;required(),</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="stringliteral">&quot;Path to directory containing model files (.caffemodel/.prototxt/.tflite)&quot;</span>)</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; (<span class="stringliteral">&quot;compute,c&quot;</span>, po::value&lt;std::vector&lt;std::string&gt;&gt;(&amp;<a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>.m_ComputeDevices)-&gt;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; default_value(defaultComputes, boost::algorithm::join(defaultComputes, <span class="stringliteral">&quot;, &quot;</span>))-&gt;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; multitoken(), backendsMessage.c_str())</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; (<span class="stringliteral">&quot;dynamic-backends-path,b&quot;</span>, po::value(&amp;<a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>.m_DynamicBackendsPath),</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="stringliteral">&quot;Path where to load any available dynamic backend from. &quot;</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="stringliteral">&quot;If left empty (the default), dynamic backends will not be used.&quot;</span>)</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; (<span class="stringliteral">&quot;labels,l&quot;</span>, po::value&lt;std::string&gt;(&amp;<a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>.m_Labels),</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="stringliteral">&quot;Text file containing one image filename - correct label pair per line, &quot;</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="stringliteral">&quot;used to test the accuracy of the network.&quot;</span>)</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; (<span class="stringliteral">&quot;visualize-optimized-model,v&quot;</span>,</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; po::value&lt;bool&gt;(&amp;<a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>.m_VisualizePostOptimizationModel)-&gt;default_value(<span class="keyword">false</span>),</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="stringliteral">&quot;Produce a dot file useful for visualizing the graph post optimization.&quot;</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="stringliteral">&quot;The file will have the same name as the model with the .dot extention.&quot;</span>)</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; (<span class="stringliteral">&quot;fp16-turbo-mode&quot;</span>, po::value&lt;bool&gt;(&amp;<a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>.m_EnableFp16TurboMode)-&gt;default_value(<span class="keyword">false</span>),</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="stringliteral">&quot;If this option is enabled FP32 layers, weights and biases will be converted &quot;</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="stringliteral">&quot;to FP16 where the backend supports it.&quot;</span>);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; }</div><div class="ttc" id="classarmnn_1_1_backend_registry_html_ae1de2f7ca1db17f45f97155e239b8b45"><div class="ttname"><a href="classarmnn_1_1_backend_registry.html#ae1de2f7ca1db17f45f97155e239b8b45">armnn::BackendRegistry::GetBackendIdsAsString</a></div><div class="ttdeci">std::string GetBackendIdsAsString() const</div><div class="ttdef"><b>Definition:</b> <a href="_backend_registry_8cpp_source.html#l00076">BackendRegistry.cpp:76</a></div></div>
330<div class="ttc" id="namespacearmnn_html_ac2807505b850738bc8a1991ce669dd47"><div class="ttname"><a href="namespacearmnn.html#ac2807505b850738bc8a1991ce669dd47">armnn::BackendRegistryInstance</a></div><div class="ttdeci">BackendRegistry &amp; BackendRegistryInstance()</div><div class="ttdef"><b>Definition:</b> <a href="_backend_registry_8cpp_source.html#l00013">BackendRegistry.cpp:13</a></div></div>
331<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
332</div><!-- fragment -->
333</div>
334</div>
335<a id="a262185c43532d5728c4bd7890f3b2235"></a>
336<h2 class="memtitle"><span class="permalink"><a href="#a262185c43532d5728c4bd7890f3b2235">&#9670;&nbsp;</a></span>CheckInputIndexIsValid()</h2>
337
338<div class="memitem">
339<div class="memproto">
340<table class="mlabels">
341 <tr>
342 <td class="mlabels-left">
343 <table class="memname">
344 <tr>
345 <td class="memname">void CheckInputIndexIsValid </td>
346 <td>(</td>
347 <td class="paramtype">unsigned int&#160;</td>
348 <td class="paramname"><em>inputIndex</em></td><td>)</td>
349 <td> const</td>
350 </tr>
351 </table>
352 </td>
353 <td class="mlabels-right">
354<span class="mlabels"><span class="mlabel">inline</span></span> </td>
355 </tr>
356</table>
357</div><div class="memdoc">
358
359<p class="definition">Definition at line <a class="el" href="_inference_model_8hpp_source.html#l00433">433</a> of file <a class="el" href="_inference_model_8hpp_source.html">InferenceModel.hpp</a>.</p>
360
361<p class="reference">References <a class="el" href="_inference_model_8hpp_source.html#l00085">Params::m_InputBindings</a>.</p>
362<div class="fragment"><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; {</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordflow">if</span> (m_InputBindings.size() &lt; inputIndex + 1)</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_exception.html">armnn::Exception</a>(boost::str(boost::format(<span class="stringliteral">&quot;Input index out of range: %1%&quot;</span>) % inputIndex));</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; }</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; }</div><div class="ttc" id="classarmnn_1_1_exception_html"><div class="ttname"><a href="classarmnn_1_1_exception.html">armnn::Exception</a></div><div class="ttdoc">Base class for all ArmNN exceptions so that users can filter to just those. </div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.html#l00046">Exceptions.hpp:46</a></div></div>
363</div><!-- fragment -->
364</div>
365</div>
366<a id="a72a6db08ffca660ece7c2d86e2a14daa"></a>
367<h2 class="memtitle"><span class="permalink"><a href="#a72a6db08ffca660ece7c2d86e2a14daa">&#9670;&nbsp;</a></span>CheckOutputIndexIsValid()</h2>
368
369<div class="memitem">
370<div class="memproto">
371<table class="mlabels">
372 <tr>
373 <td class="mlabels-left">
374 <table class="memname">
375 <tr>
376 <td class="memname">void CheckOutputIndexIsValid </td>
377 <td>(</td>
378 <td class="paramtype">unsigned int&#160;</td>
379 <td class="paramname"><em>outputIndex</em></td><td>)</td>
380 <td> const</td>
381 </tr>
382 </table>
383 </td>
384 <td class="mlabels-right">
385<span class="mlabels"><span class="mlabel">inline</span></span> </td>
386 </tr>
387</table>
388</div><div class="memdoc">
389
390<p class="definition">Definition at line <a class="el" href="_inference_model_8hpp_source.html#l00441">441</a> of file <a class="el" href="_inference_model_8hpp_source.html">InferenceModel.hpp</a>.</p>
391
392<p class="reference">References <a class="el" href="_inference_model_8hpp_source.html#l00087">Params::m_OutputBindings</a>.</p>
393<div class="fragment"><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">if</span> (m_OutputBindings.size() &lt; outputIndex + 1)</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_exception.html">armnn::Exception</a>(boost::str(boost::format(<span class="stringliteral">&quot;Output index out of range: %1%&quot;</span>) % outputIndex));</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; }</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div><div class="ttc" id="classarmnn_1_1_exception_html"><div class="ttname"><a href="classarmnn_1_1_exception.html">armnn::Exception</a></div><div class="ttdoc">Base class for all ArmNN exceptions so that users can filter to just those. </div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.html#l00046">Exceptions.hpp:46</a></div></div>
394</div><!-- fragment -->
395</div>
396</div>
397<a id="ade1a8545be49b1c10e724ea8536907c7"></a>
398<h2 class="memtitle"><span class="permalink"><a href="#ade1a8545be49b1c10e724ea8536907c7">&#9670;&nbsp;</a></span>GetAllQuantizationParams()</h2>
399
400<div class="memitem">
401<div class="memproto">
402<table class="mlabels">
403 <tr>
404 <td class="mlabels-left">
405 <table class="memname">
406 <tr>
407 <td class="memname">std::vector&lt;<a class="el" href="class_inference_model.html#ae3ca0528045df8958ce5dcdf9d1af041">QuantizationParams</a>&gt; GetAllQuantizationParams </td>
408 <td>(</td>
409 <td class="paramname"></td><td>)</td>
410 <td> const</td>
411 </tr>
412 </table>
413 </td>
414 <td class="mlabels-right">
415<span class="mlabels"><span class="mlabel">inline</span></span> </td>
416 </tr>
417</table>
418</div><div class="memdoc">
419
420<p class="definition">Definition at line <a class="el" href="_inference_model_8hpp_source.html#l00550">550</a> of file <a class="el" href="_inference_model_8hpp_source.html">InferenceModel.hpp</a>.</p>
421
422<p class="reference">References <a class="el" href="_inference_model_8hpp_source.html#l00089">Params::m_DynamicBackendsPath</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00046">m_EnableProfiling</a>, <a class="el" href="_inference_model_8hpp_source.html#l00085">Params::m_InputBindings</a>, <a class="el" href="_inference_model_8hpp_source.html#l00087">Params::m_OutputBindings</a>, <a class="el" href="_tensor_i_o_utils_8hpp_source.html#l00017">armnnUtils::MakeInputTensors()</a>, and <a class="el" href="_tensor_i_o_utils_8hpp_source.html#l00056">armnnUtils::MakeOutputTensors()</a>.</p>
423<div class="fragment"><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; {</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; std::vector&lt;QuantizationParams&gt; quantizationParams;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0u; i &lt; m_OutputBindings.size(); i++)</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; {</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; quantizationParams.push_back(<a class="code" href="class_inference_model.html#a1a09727b3f781272e702516fffb7d97f">GetQuantizationParams</a>(i));</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; }</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">return</span> quantizationParams;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; }</div><div class="ttc" id="class_inference_model_html_a1a09727b3f781272e702516fffb7d97f"><div class="ttname"><a href="class_inference_model.html#a1a09727b3f781272e702516fffb7d97f">InferenceModel::GetQuantizationParams</a></div><div class="ttdeci">QuantizationParams GetQuantizationParams(unsigned int outputIndex=0u) const</div><div class="ttdef"><b>Definition:</b> <a href="_inference_model_8hpp_source.html#l00536">InferenceModel.hpp:536</a></div></div>
424</div><!-- fragment -->
425</div>
426</div>
427<a id="a9a28e0c17604e5a945409f994c020212"></a>
428<h2 class="memtitle"><span class="permalink"><a href="#a9a28e0c17604e5a945409f994c020212">&#9670;&nbsp;</a></span>GetInputBindingInfo()</h2>
429
430<div class="memitem">
431<div class="memproto">
432<table class="mlabels">
433 <tr>
434 <td class="mlabels-left">
435 <table class="memname">
436 <tr>
437 <td class="memname">const <a class="el" href="namespacearmnn.html#a280670a263dc4fd40491f6d0a2737f44">armnn::BindingPointInfo</a>&amp; GetInputBindingInfo </td>
438 <td>(</td>
439 <td class="paramtype">unsigned int&#160;</td>
440 <td class="paramname"><em>inputIndex</em> = <code>0u</code></td><td>)</td>
441 <td> const</td>
442 </tr>
443 </table>
444 </td>
445 <td class="mlabels-right">
446<span class="mlabels"><span class="mlabel">inline</span></span> </td>
447 </tr>
448</table>
449</div><div class="memdoc">
450
451<p class="definition">Definition at line <a class="el" href="_inference_model_8hpp_source.html#l00514">514</a> of file <a class="el" href="_inference_model_8hpp_source.html">InferenceModel.hpp</a>.</p>
452
453<p class="reference">References <a class="el" href="_inference_model_8hpp_source.html#l00085">Params::m_InputBindings</a>.</p>
454
455<p class="reference">Referenced by <a class="el" href="_model_accuracy_tool-_armnn_8cpp_source.html#l00049">main()</a>.</p>
456<div class="fragment"><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; {</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <a class="code" href="class_inference_model.html#a262185c43532d5728c4bd7890f3b2235">CheckInputIndexIsValid</a>(inputIndex);</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">return</span> m_InputBindings[inputIndex];</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; }</div><div class="ttc" id="class_inference_model_html_a262185c43532d5728c4bd7890f3b2235"><div class="ttname"><a href="class_inference_model.html#a262185c43532d5728c4bd7890f3b2235">InferenceModel::CheckInputIndexIsValid</a></div><div class="ttdeci">void CheckInputIndexIsValid(unsigned int inputIndex) const</div><div class="ttdef"><b>Definition:</b> <a href="_inference_model_8hpp_source.html#l00433">InferenceModel.hpp:433</a></div></div>
457</div><!-- fragment -->
458</div>
459</div>
460<a id="a0e0f3330fc1e6c1fa1d99d731490c483"></a>
461<h2 class="memtitle"><span class="permalink"><a href="#a0e0f3330fc1e6c1fa1d99d731490c483">&#9670;&nbsp;</a></span>GetInputBindingInfos()</h2>
462
463<div class="memitem">
464<div class="memproto">
465<table class="mlabels">
466 <tr>
467 <td class="mlabels-left">
468 <table class="memname">
469 <tr>
470 <td class="memname">const std::vector&lt;<a class="el" href="namespacearmnn.html#a280670a263dc4fd40491f6d0a2737f44">armnn::BindingPointInfo</a>&gt;&amp; GetInputBindingInfos </td>
471 <td>(</td>
472 <td class="paramname"></td><td>)</td>
473 <td> const</td>
474 </tr>
475 </table>
476 </td>
477 <td class="mlabels-right">
478<span class="mlabels"><span class="mlabel">inline</span></span> </td>
479 </tr>
480</table>
481</div><div class="memdoc">
482
483<p class="definition">Definition at line <a class="el" href="_inference_model_8hpp_source.html#l00520">520</a> of file <a class="el" href="_inference_model_8hpp_source.html">InferenceModel.hpp</a>.</p>
484
485<p class="reference">References <a class="el" href="_inference_model_8hpp_source.html#l00085">Params::m_InputBindings</a>.</p>
486<div class="fragment"><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; {</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">return</span> m_InputBindings;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; }</div></div><!-- fragment -->
487</div>
488</div>
489<a id="a066580d185559e2efdcb6cedd1709b9c"></a>
490<h2 class="memtitle"><span class="permalink"><a href="#a066580d185559e2efdcb6cedd1709b9c">&#9670;&nbsp;</a></span>GetInputQuantizationParams()</h2>
491
492<div class="memitem">
493<div class="memproto">
494<table class="mlabels">
495 <tr>
496 <td class="mlabels-left">
497 <table class="memname">
498 <tr>
499 <td class="memname"><a class="el" href="class_inference_model.html#ae3ca0528045df8958ce5dcdf9d1af041">QuantizationParams</a> GetInputQuantizationParams </td>
500 <td>(</td>
501 <td class="paramtype">unsigned int&#160;</td>
502 <td class="paramname"><em>inputIndex</em> = <code>0u</code></td><td>)</td>
503 <td> const</td>
504 </tr>
505 </table>
506 </td>
507 <td class="mlabels-right">
508<span class="mlabels"><span class="mlabel">inline</span></span> </td>
509 </tr>
510</table>
511</div><div class="memdoc">
512
513<p class="definition">Definition at line <a class="el" href="_inference_model_8hpp_source.html#l00543">543</a> of file <a class="el" href="_inference_model_8hpp_source.html">InferenceModel.hpp</a>.</p>
514
515<p class="reference">References <a class="el" href="_inference_model_8hpp_source.html#l00085">Params::m_InputBindings</a>.</p>
516
517<p class="reference">Referenced by <a class="el" href="_network_execution_utils_8hpp_source.html#l00377">MainImpl()</a>.</p>
518<div class="fragment"><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; {</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <a class="code" href="class_inference_model.html#a262185c43532d5728c4bd7890f3b2235">CheckInputIndexIsValid</a>(inputIndex);</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keywordflow">return</span> std::make_pair(m_InputBindings[inputIndex].second.GetQuantizationScale(),</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; m_InputBindings[inputIndex].second.GetQuantizationOffset());</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; }</div><div class="ttc" id="class_inference_model_html_a262185c43532d5728c4bd7890f3b2235"><div class="ttname"><a href="class_inference_model.html#a262185c43532d5728c4bd7890f3b2235">InferenceModel::CheckInputIndexIsValid</a></div><div class="ttdeci">void CheckInputIndexIsValid(unsigned int inputIndex) const</div><div class="ttdef"><b>Definition:</b> <a href="_inference_model_8hpp_source.html#l00433">InferenceModel.hpp:433</a></div></div>
519</div><!-- fragment -->
520</div>
521</div>
522<a id="a679e4b22a845c8d7f58f6ca6a5df625f"></a>
523<h2 class="memtitle"><span class="permalink"><a href="#a679e4b22a845c8d7f58f6ca6a5df625f">&#9670;&nbsp;</a></span>GetInputSize()</h2>
524
525<div class="memitem">
526<div class="memproto">
527<table class="mlabels">
528 <tr>
529 <td class="mlabels-left">
530 <table class="memname">
531 <tr>
532 <td class="memname">unsigned int GetInputSize </td>
533 <td>(</td>
534 <td class="paramtype">unsigned int&#160;</td>
535 <td class="paramname"><em>inputIndex</em> = <code>0u</code></td><td>)</td>
536 <td> const</td>
537 </tr>
538 </table>
539 </td>
540 <td class="mlabels-right">
541<span class="mlabels"><span class="mlabel">inline</span></span> </td>
542 </tr>
543</table>
544</div><div class="memdoc">
545
546<p class="definition">Definition at line <a class="el" href="_inference_model_8hpp_source.html#l00449">449</a> of file <a class="el" href="_inference_model_8hpp_source.html">InferenceModel.hpp</a>.</p>
547
548<p class="reference">References <a class="el" href="_inference_model_8hpp_source.html#l00085">Params::m_InputBindings</a>.</p>
549
550<p class="reference">Referenced by <a class="el" href="_network_execution_utils_8hpp_source.html#l00377">MainImpl()</a>.</p>
551<div class="fragment"><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <a class="code" href="class_inference_model.html#a262185c43532d5728c4bd7890f3b2235">CheckInputIndexIsValid</a>(inputIndex);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">return</span> m_InputBindings[inputIndex].second.GetNumElements();</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; }</div><div class="ttc" id="class_inference_model_html_a262185c43532d5728c4bd7890f3b2235"><div class="ttname"><a href="class_inference_model.html#a262185c43532d5728c4bd7890f3b2235">InferenceModel::CheckInputIndexIsValid</a></div><div class="ttdeci">void CheckInputIndexIsValid(unsigned int inputIndex) const</div><div class="ttdef"><b>Definition:</b> <a href="_inference_model_8hpp_source.html#l00433">InferenceModel.hpp:433</a></div></div>
552</div><!-- fragment -->
553</div>
554</div>
555<a id="a325f1c17b5ff2153cae944e3c62820a2"></a>
556<h2 class="memtitle"><span class="permalink"><a href="#a325f1c17b5ff2153cae944e3c62820a2">&#9670;&nbsp;</a></span>GetOutputBindingInfo()</h2>
557
558<div class="memitem">
559<div class="memproto">
560<table class="mlabels">
561 <tr>
562 <td class="mlabels-left">
563 <table class="memname">
564 <tr>
565 <td class="memname">const <a class="el" href="namespacearmnn.html#a280670a263dc4fd40491f6d0a2737f44">armnn::BindingPointInfo</a>&amp; GetOutputBindingInfo </td>
566 <td>(</td>
567 <td class="paramtype">unsigned int&#160;</td>
568 <td class="paramname"><em>outputIndex</em> = <code>0u</code></td><td>)</td>
569 <td> const</td>
570 </tr>
571 </table>
572 </td>
573 <td class="mlabels-right">
574<span class="mlabels"><span class="mlabel">inline</span></span> </td>
575 </tr>
576</table>
577</div><div class="memdoc">
578
579<p class="definition">Definition at line <a class="el" href="_inference_model_8hpp_source.html#l00525">525</a> of file <a class="el" href="_inference_model_8hpp_source.html">InferenceModel.hpp</a>.</p>
580
581<p class="reference">References <a class="el" href="_inference_model_8hpp_source.html#l00087">Params::m_OutputBindings</a>.</p>
582<div class="fragment"><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <a class="code" href="class_inference_model.html#a72a6db08ffca660ece7c2d86e2a14daa">CheckOutputIndexIsValid</a>(outputIndex);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keywordflow">return</span> m_OutputBindings[outputIndex];</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; }</div><div class="ttc" id="class_inference_model_html_a72a6db08ffca660ece7c2d86e2a14daa"><div class="ttname"><a href="class_inference_model.html#a72a6db08ffca660ece7c2d86e2a14daa">InferenceModel::CheckOutputIndexIsValid</a></div><div class="ttdeci">void CheckOutputIndexIsValid(unsigned int outputIndex) const</div><div class="ttdef"><b>Definition:</b> <a href="_inference_model_8hpp_source.html#l00441">InferenceModel.hpp:441</a></div></div>
583</div><!-- fragment -->
584</div>
585</div>
586<a id="ac0b73049e00e7013f5cc6ae7fcaedcd4"></a>
587<h2 class="memtitle"><span class="permalink"><a href="#ac0b73049e00e7013f5cc6ae7fcaedcd4">&#9670;&nbsp;</a></span>GetOutputBindingInfos()</h2>
588
589<div class="memitem">
590<div class="memproto">
591<table class="mlabels">
592 <tr>
593 <td class="mlabels-left">
594 <table class="memname">
595 <tr>
596 <td class="memname">const std::vector&lt;<a class="el" href="namespacearmnn.html#a280670a263dc4fd40491f6d0a2737f44">armnn::BindingPointInfo</a>&gt;&amp; GetOutputBindingInfos </td>
597 <td>(</td>
598 <td class="paramname"></td><td>)</td>
599 <td> const</td>
600 </tr>
601 </table>
602 </td>
603 <td class="mlabels-right">
604<span class="mlabels"><span class="mlabel">inline</span></span> </td>
605 </tr>
606</table>
607</div><div class="memdoc">
608
609<p class="definition">Definition at line <a class="el" href="_inference_model_8hpp_source.html#l00531">531</a> of file <a class="el" href="_inference_model_8hpp_source.html">InferenceModel.hpp</a>.</p>
610
611<p class="reference">References <a class="el" href="_inference_model_8hpp_source.html#l00087">Params::m_OutputBindings</a>.</p>
612
613<p class="reference">Referenced by <a class="el" href="_network_execution_utils_8hpp_source.html#l00377">MainImpl()</a>.</p>
614<div class="fragment"><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; {</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">return</span> m_OutputBindings;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }</div></div><!-- fragment -->
615</div>
616</div>
617<a id="a8282dddf88e0deb3c414235e20a6cb2c"></a>
618<h2 class="memtitle"><span class="permalink"><a href="#a8282dddf88e0deb3c414235e20a6cb2c">&#9670;&nbsp;</a></span>GetOutputSize()</h2>
619
620<div class="memitem">
621<div class="memproto">
622<table class="mlabels">
623 <tr>
624 <td class="mlabels-left">
625 <table class="memname">
626 <tr>
627 <td class="memname">unsigned int GetOutputSize </td>
628 <td>(</td>
629 <td class="paramtype">unsigned int&#160;</td>
630 <td class="paramname"><em>outputIndex</em> = <code>0u</code></td><td>)</td>
631 <td> const</td>
632 </tr>
633 </table>
634 </td>
635 <td class="mlabels-right">
636<span class="mlabels"><span class="mlabel">inline</span></span> </td>
637 </tr>
638</table>
639</div><div class="memdoc">
640
641<p class="definition">Definition at line <a class="el" href="_inference_model_8hpp_source.html#l00455">455</a> of file <a class="el" href="_inference_model_8hpp_source.html">InferenceModel.hpp</a>.</p>
642
643<p class="reference">References <a class="el" href="_inference_model_8hpp_source.html#l00087">Params::m_OutputBindings</a>.</p>
644
645<p class="reference">Referenced by <a class="el" href="_model_accuracy_tool-_armnn_8cpp_source.html#l00049">main()</a>, and <a class="el" href="_network_execution_utils_8hpp_source.html#l00377">MainImpl()</a>.</p>
646<div class="fragment"><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <a class="code" href="class_inference_model.html#a72a6db08ffca660ece7c2d86e2a14daa">CheckOutputIndexIsValid</a>(outputIndex);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">return</span> m_OutputBindings[outputIndex].second.GetNumElements();</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; }</div><div class="ttc" id="class_inference_model_html_a72a6db08ffca660ece7c2d86e2a14daa"><div class="ttname"><a href="class_inference_model.html#a72a6db08ffca660ece7c2d86e2a14daa">InferenceModel::CheckOutputIndexIsValid</a></div><div class="ttdeci">void CheckOutputIndexIsValid(unsigned int outputIndex) const</div><div class="ttdef"><b>Definition:</b> <a href="_inference_model_8hpp_source.html#l00441">InferenceModel.hpp:441</a></div></div>
647</div><!-- fragment -->
648</div>
649</div>
650<a id="a1a09727b3f781272e702516fffb7d97f"></a>
651<h2 class="memtitle"><span class="permalink"><a href="#a1a09727b3f781272e702516fffb7d97f">&#9670;&nbsp;</a></span>GetQuantizationParams()</h2>
652
653<div class="memitem">
654<div class="memproto">
655<table class="mlabels">
656 <tr>
657 <td class="mlabels-left">
658 <table class="memname">
659 <tr>
660 <td class="memname"><a class="el" href="class_inference_model.html#ae3ca0528045df8958ce5dcdf9d1af041">QuantizationParams</a> GetQuantizationParams </td>
661 <td>(</td>
662 <td class="paramtype">unsigned int&#160;</td>
663 <td class="paramname"><em>outputIndex</em> = <code>0u</code></td><td>)</td>
664 <td> const</td>
665 </tr>
666 </table>
667 </td>
668 <td class="mlabels-right">
669<span class="mlabels"><span class="mlabel">inline</span></span> </td>
670 </tr>
671</table>
672</div><div class="memdoc">
673
674<p class="definition">Definition at line <a class="el" href="_inference_model_8hpp_source.html#l00536">536</a> of file <a class="el" href="_inference_model_8hpp_source.html">InferenceModel.hpp</a>.</p>
675
676<p class="reference">References <a class="el" href="_inference_model_8hpp_source.html#l00087">Params::m_OutputBindings</a>.</p>
677<div class="fragment"><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; {</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <a class="code" href="class_inference_model.html#a72a6db08ffca660ece7c2d86e2a14daa">CheckOutputIndexIsValid</a>(outputIndex);</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">return</span> std::make_pair(m_OutputBindings[outputIndex].second.GetQuantizationScale(),</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; m_OutputBindings[outputIndex].second.GetQuantizationOffset());</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; }</div><div class="ttc" id="class_inference_model_html_a72a6db08ffca660ece7c2d86e2a14daa"><div class="ttname"><a href="class_inference_model.html#a72a6db08ffca660ece7c2d86e2a14daa">InferenceModel::CheckOutputIndexIsValid</a></div><div class="ttdeci">void CheckOutputIndexIsValid(unsigned int outputIndex) const</div><div class="ttdef"><b>Definition:</b> <a href="_inference_model_8hpp_source.html#l00441">InferenceModel.hpp:441</a></div></div>
678</div><!-- fragment -->
679</div>
680</div>
681<a id="a7af4f6c4d5f8720a6ea093a825722227"></a>
682<h2 class="memtitle"><span class="permalink"><a href="#a7af4f6c4d5f8720a6ea093a825722227">&#9670;&nbsp;</a></span>Run()</h2>
683
684<div class="memitem">
685<div class="memproto">
686<table class="mlabels">
687 <tr>
688 <td class="mlabels-left">
689 <table class="memname">
690 <tr>
691 <td class="memname">std::chrono::duration&lt;double, std::milli&gt; Run </td>
692 <td>(</td>
693 <td class="paramtype">const std::vector&lt; <a class="el" href="class_inference_model.html#a9eb69ebdaf4ceb8014e7c8a540266100">TContainer</a> &gt; &amp;&#160;</td>
694 <td class="paramname"><em>inputContainers</em>, </td>
695 </tr>
696 <tr>
697 <td class="paramkey"></td>
698 <td></td>
699 <td class="paramtype">std::vector&lt; <a class="el" href="class_inference_model.html#a9eb69ebdaf4ceb8014e7c8a540266100">TContainer</a> &gt; &amp;&#160;</td>
700 <td class="paramname"><em>outputContainers</em>&#160;</td>
701 </tr>
702 <tr>
703 <td></td>
704 <td>)</td>
705 <td></td><td></td>
706 </tr>
707 </table>
708 </td>
709 <td class="mlabels-right">
710<span class="mlabels"><span class="mlabel">inline</span></span> </td>
711 </tr>
712</table>
713</div><div class="memdoc">
714
715<p class="definition">Definition at line <a class="el" href="_inference_model_8hpp_source.html#l00461">461</a> of file <a class="el" href="_inference_model_8hpp_source.html">InferenceModel.hpp</a>.</p>
716
717<p class="reference">References <a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">armnn::Failure</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00046">m_EnableProfiling</a>, <a class="el" href="_tensor_i_o_utils_8hpp_source.html#l00017">armnnUtils::MakeInputTensors()</a>, and <a class="el" href="_tensor_i_o_utils_8hpp_source.html#l00056">armnnUtils::MakeOutputTensors()</a>.</p>
718
719<p class="reference">Referenced by <a class="el" href="_network_execution_utils_8hpp_source.html#l00377">MainImpl()</a>.</p>
720<div class="fragment"><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; {</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; outputContainers.size(); ++i)</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> expectedOutputDataSize = <a class="code" href="class_inference_model.html#a8282dddf88e0deb3c414235e20a6cb2c">GetOutputSize</a>(i);</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; boost::apply_visitor([expectedOutputDataSize, i](<span class="keyword">auto</span>&amp;&amp; value)</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> actualOutputDataSize = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(value.size());</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">if</span> (actualOutputDataSize &lt; expectedOutputDataSize)</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; {</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputIndex = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(i);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_exception.html">armnn::Exception</a>(</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; boost::str(boost::format(<span class="stringliteral">&quot;Not enough data for output #%1%: expected &quot;</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="stringliteral">&quot;%2% elements, got %3%&quot;</span>) % outputIndex % expectedOutputDataSize % actualOutputDataSize));</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; }</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; },</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; outputContainers[i]);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; }</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; std::shared_ptr&lt;armnn::IProfiler&gt; profiler = m_Runtime-&gt;GetProfiler(m_NetworkIdentifier);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">if</span> (profiler)</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; profiler-&gt;EnableProfiling(<a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#affc4c5e8c0f3e0fac268deec9b481941">m_EnableProfiling</a>);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="comment">// Start timer to record inference time in EnqueueWorkload (in milliseconds)</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> start_time = GetCurrentTime();</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a> ret = m_Runtime-&gt;EnqueueWorkload(m_NetworkIdentifier,</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <a class="code" href="namespacearmnn_utils.html#ad5310a199d4969927169ed084b1f6c28">MakeInputTensors</a>(inputContainers),</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <a class="code" href="namespacearmnn_utils.html#ad4efd5a7fa660df5246466d83517220d">MakeOutputTensors</a>(outputContainers));</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> end_time = GetCurrentTime();</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="comment">// if profiling is enabled print out the results</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">if</span> (profiler &amp;&amp; profiler-&gt;IsProfilingEnabled())</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; profiler-&gt;Print(std::cout);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">if</span> (ret == <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">armnn::Status::Failure</a>)</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; {</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_exception.html">armnn::Exception</a>(<span class="stringliteral">&quot;IRuntime::EnqueueWorkload failed&quot;</span>);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; {</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordflow">return</span> std::chrono::duration&lt;double, std::milli&gt;(end_time - start_time);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; }</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; }</div><div class="ttc" id="namespacearmnn_utils_html_ad4efd5a7fa660df5246466d83517220d"><div class="ttname"><a href="namespacearmnn_utils.html#ad4efd5a7fa660df5246466d83517220d">armnnUtils::MakeOutputTensors</a></div><div class="ttdeci">armnn::OutputTensors MakeOutputTensors(const std::vector&lt; armnn::BindingPointInfo &gt; &amp;outputBindings, std::vector&lt; TContainer &gt; &amp;outputDataContainers)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_i_o_utils_8hpp_source.html#l00056">TensorIOUtils.hpp:56</a></div></div>
721<div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00026">Types.hpp:26</a></div></div>
722<div class="ttc" id="namespacearmnn_utils_html_ad5310a199d4969927169ed084b1f6c28"><div class="ttname"><a href="namespacearmnn_utils.html#ad5310a199d4969927169ed084b1f6c28">armnnUtils::MakeInputTensors</a></div><div class="ttdeci">armnn::InputTensors MakeInputTensors(const std::vector&lt; armnn::BindingPointInfo &gt; &amp;inputBindings, const std::vector&lt; TContainer &gt; &amp;inputDataContainers)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_i_o_utils_8hpp_source.html#l00017">TensorIOUtils.hpp:17</a></div></div>
723<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_affc4c5e8c0f3e0fac268deec9b481941"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#affc4c5e8c0f3e0fac268deec9b481941">m_EnableProfiling</a></div><div class="ttdeci">options m_EnableProfiling</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00046">FileOnlyProfilingDecoratorTests.cpp:46</a></div></div>
724<div class="ttc" id="classarmnn_1_1_exception_html"><div class="ttname"><a href="classarmnn_1_1_exception.html">armnn::Exception</a></div><div class="ttdoc">Base class for all ArmNN exceptions so that users can filter to just those. </div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.html#l00046">Exceptions.hpp:46</a></div></div>
725<div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">armnn::Status::Failure</a></div></div>
726<div class="ttc" id="class_inference_model_html_a8282dddf88e0deb3c414235e20a6cb2c"><div class="ttname"><a href="class_inference_model.html#a8282dddf88e0deb3c414235e20a6cb2c">InferenceModel::GetOutputSize</a></div><div class="ttdeci">unsigned int GetOutputSize(unsigned int outputIndex=0u) const</div><div class="ttdef"><b>Definition:</b> <a href="_inference_model_8hpp_source.html#l00455">InferenceModel.hpp:455</a></div></div>
727</div><!-- fragment -->
728</div>
729</div>
730<hr/>The documentation for this class was generated from the following file:<ul>
731<li>tests/<a class="el" href="_inference_model_8hpp_source.html">InferenceModel.hpp</a></li>
732</ul>
733</div><!-- contents -->
734</div><!-- doc-content -->
735<!-- start footer part -->
736<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
737 <ul>
738 <li class="navelem"><a class="el" href="class_inference_model.html">InferenceModel</a></li>
739 <li class="footer">Generated on Fri Mar 13 2020 16:07:01 for ArmNN by
740 <a href="http://www.doxygen.org/index.html">
741 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
742 </ul>
743</div>
744</body>
745</html>