aboutsummaryrefslogtreecommitdiff
path: root/21.02/_mock_backend_8cpp_source.xhtml
blob: d8a64efa80c291dbbf12e5f9bf2ead0cf796dbda (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
<!-- 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/backends/backendsCommon/test/MockBackend.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('_mock_backend_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">MockBackend.cpp</div>  </div>
</div><!--header-->
<div class="contents">
<a href="_mock_backend_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. All rights reserved.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// SPDX-License-Identifier: MIT</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;</div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_mock_backend_8hpp.xhtml">MockBackend.hpp</a>&quot;</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_mock_backend_id_8hpp.xhtml">MockBackendId.hpp</a>&quot;</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;</div><div class="line"><a name="l00009"></a><span class="lineno">    9</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="l00010"></a><span class="lineno">   10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno">   11</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="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2armnn_2backends_2_i_memory_manager_8hpp.xhtml">armnn/backends/IMemoryManager.hpp</a>&gt;</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;</div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_optimizer_8hpp.xhtml">Optimizer.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="_subgraph_view_selector_8hpp.xhtml">SubgraphViewSelector.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;algorithm&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="keyword">namespace</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;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="keywordtype">bool</span> IsLayerSupported(<span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* layer)</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;    <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(layer != <span class="keyword">nullptr</span>);</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">   26</span>&#160;    <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">armnn::LayerType</a> layerType = layer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#ad8e15c530c929ab823d89ae9fd2d3f11">GetType</a>();</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;    <span class="keywordflow">switch</span> (layerType)</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;    {</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">armnn::LayerType::Input</a>:</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">armnn::LayerType::Output</a>:</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a7c5531bbefed0945814f874baf9e0e0f">armnn::LayerType::Addition</a>:</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a">armnn::LayerType::Convolution2d</a>:</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;        <span class="comment">// Layer supported</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;    <span class="keywordflow">default</span>:</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;        <span class="comment">// Layer unsupported</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;    }</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;}</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="keywordtype">bool</span> IsLayerSupported(<span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>&amp; layer)</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;    <span class="keywordflow">return</span> IsLayerSupported(&amp;layer);</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;}</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="keywordtype">bool</span> IsLayerOptimizable(<span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* layer)</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;{</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(layer != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    <span class="comment">// A Layer is not optimizable if its name contains &quot;unoptimizable&quot;</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    <span class="keyword">const</span> std::string layerName(layer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a7ddf0cf6f620d59c10e63495ace795d0">GetName</a>());</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    <span class="keywordtype">bool</span> optimizable = layerName.find(<span class="stringliteral">&quot;unoptimizable&quot;</span>) == std::string::npos;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    <span class="keywordflow">return</span> optimizable;</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;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="keywordtype">bool</span> IsLayerOptimizable(<span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>&amp; layer)</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;{</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    <span class="keywordflow">return</span> IsLayerOptimizable(&amp;layer);</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;}</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;} <span class="comment">// Anonymous namespace</span></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="keyword">namespace </span><a class="code" href="namespacearmnn.xhtml">armnn</a></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_mock_backend_initialiser.xhtml#a844886db133bb7190b48f9af35bc6d58">   67</a></span>&#160;<a class="code" href="classarmnn_1_1_mock_backend_initialiser.xhtml#a844886db133bb7190b48f9af35bc6d58">MockBackendInitialiser::MockBackendInitialiser</a>()</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;{</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    <a class="code" href="namespacearmnn.xhtml#ac2807505b850738bc8a1991ce669dd47">BackendRegistryInstance</a>().<a class="code" href="classarmnn_1_1_backend_registry.xhtml#a0318ffa738b798986c4347ea9fe5ab37">Register</a>(<a class="code" href="classarmnn_1_1_mock_backend.xhtml#a177af502214bbc8123fbb4a3c4f0a1b8">MockBackend::GetIdStatic</a>(),</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">   72</span>&#160;                                           <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#ade0af9dacaa52cafdd701bef2e901c77">IBackendInternalUniquePtr</a>(<span class="keyword">new</span> <a class="code" href="classarmnn_1_1_mock_backend.xhtml">MockBackend</a>);</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;                                       });</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;}</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classarmnn_1_1_mock_backend_initialiser.xhtml#a196b5c64c6b7d52b16a9073d91302f71">   76</a></span>&#160;<a class="code" href="classarmnn_1_1_mock_backend_initialiser.xhtml#a196b5c64c6b7d52b16a9073d91302f71">MockBackendInitialiser::~MockBackendInitialiser</a>()</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;{</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    <span class="keywordflow">try</span></div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    {</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;        <a class="code" href="namespacearmnn.xhtml#ac2807505b850738bc8a1991ce669dd47">BackendRegistryInstance</a>().<a class="code" href="classarmnn_1_1_backend_registry.xhtml#a41895cd60f4b1bfd0b88571a8773ff1c">Deregister</a>(<a class="code" href="classarmnn_1_1_mock_backend.xhtml#a177af502214bbc8123fbb4a3c4f0a1b8">MockBackend::GetIdStatic</a>());</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    }</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    <span class="keywordflow">catch</span> (...)</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">   84</span>&#160;        std::cerr &lt;&lt; <span class="stringliteral">&quot;could not deregister mock backend&quot;</span> &lt;&lt; std::endl;</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;}</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"><a class="line" href="classarmnn_1_1_mock_backend.xhtml#a177af502214bbc8123fbb4a3c4f0a1b8">   88</a></span>&#160;<span class="keyword">const</span> <a class="code" href="classarmnn_1_1_backend_id.xhtml">BackendId</a>&amp; <a class="code" href="classarmnn_1_1_mock_backend.xhtml#a177af502214bbc8123fbb4a3c4f0a1b8">MockBackend::GetIdStatic</a>()</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;{</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> s_Id{<a class="code" href="namespacearmnn.xhtml#a17955517b0d148f7ffdbffe8b46e41e0">MockBackendId</a>()};</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    <span class="keywordflow">return</span> s_Id;</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_mock_backend.xhtml#a8e19e275c8162e34e6d8d10a9245dbc9">   94</a></span>&#160;<a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a72ca1cf423bda4b0a9ffb789627126de">IBackendInternal::IWorkloadFactoryPtr</a> <a class="code" href="classarmnn_1_1_mock_backend.xhtml#a8e19e275c8162e34e6d8d10a9245dbc9">MockBackend::CreateWorkloadFactory</a>(</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; <span class="comment">/*memoryManager*/</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a72ca1cf423bda4b0a9ffb789627126de">IWorkloadFactoryPtr</a>{};</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">   99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classarmnn_1_1_mock_backend.xhtml#a801cf3170dc777aca3e6f926d1bd70a5">  100</a></span>&#160;<a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#ada6d56575c0fe53cf23c7ae4610c6367">IBackendInternal::IBackendContextPtr</a> <a class="code" href="classarmnn_1_1_mock_backend.xhtml#a801cf3170dc777aca3e6f926d1bd70a5">MockBackend::CreateBackendContext</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml">IRuntime::CreationOptions</a>&amp;)<span class="keyword"> const</span></div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#ada6d56575c0fe53cf23c7ae4610c6367">IBackendContextPtr</a>{};</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;</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classarmnn_1_1_mock_backend.xhtml#ac2480fbc4ae790e2e64f55d78b7f31a0">  105</a></span>&#160;<a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#aaece3a614f6691da8de8c7295cb1b07f">IBackendInternal::IBackendProfilingContextPtr</a> <a class="code" href="classarmnn_1_1_mock_backend.xhtml#ac2480fbc4ae790e2e64f55d78b7f31a0">MockBackend::CreateBackendProfilingContext</a>(</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    <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_backend_internal.xhtml#a34ab83489d1c5043b2b9b4a2ec13c481">IBackendProfilingPtr</a>&amp; backendProfiling)</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;    <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(options);</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    std::shared_ptr&lt;armnn::MockBackendProfilingContext&gt; context =</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;        std::make_shared&lt;MockBackendProfilingContext&gt;(backendProfiling);</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <a class="code" href="classarmnn_1_1_mock_backend_profiling_service.xhtml#a15a5e913e48840d7b767a4453d83f361">MockBackendProfilingService::Instance</a>().<a class="code" href="classarmnn_1_1_mock_backend_profiling_service.xhtml#a3458b64cd6375e3842160a28ad6e2301">SetProfilingContextPtr</a>(context);</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    <span class="keywordflow">return</span> context;</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="classarmnn_1_1_mock_backend.xhtml#a93fcb3bff141d8c77b53466a44b58eee">  115</a></span>&#160;<a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a12bff6d51d63dac1375c89bc8415dc46">IBackendInternal::IMemoryManagerUniquePtr</a> <a class="code" href="classarmnn_1_1_mock_backend.xhtml#a93fcb3bff141d8c77b53466a44b58eee">MockBackend::CreateMemoryManager</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a12bff6d51d63dac1375c89bc8415dc46">IMemoryManagerUniquePtr</a>{};</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;}</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classarmnn_1_1_mock_backend.xhtml#a87acb43c72272d9db21c547d4f4996cb">  120</a></span>&#160;<a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#ad1794808004025d6e06c176507197b24">IBackendInternal::Optimizations</a> <a class="code" href="classarmnn_1_1_mock_backend.xhtml#a87acb43c72272d9db21c547d4f4996cb">MockBackend::GetOptimizations</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#ad1794808004025d6e06c176507197b24">Optimizations</a>{};</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;}</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classarmnn_1_1_mock_backend.xhtml#a93d4285a3ea5e4e3b35578484d889daa">  125</a></span>&#160;<a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a11fa919c11fe46aad613b2e960fcfe90">IBackendInternal::ILayerSupportSharedPtr</a> <a class="code" href="classarmnn_1_1_mock_backend.xhtml#a93d4285a3ea5e4e3b35578484d889daa">MockBackend::GetLayerSupport</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <span class="keyword">static</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a11fa919c11fe46aad613b2e960fcfe90">ILayerSupportSharedPtr</a> layerSupport{<span class="keyword">new</span> <a class="code" href="classarmnn_1_1_mock_layer_support.xhtml">MockLayerSupport</a>};</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    <span class="keywordflow">return</span> layerSupport;</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;</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classarmnn_1_1_mock_backend.xhtml#a3c7ed3d210544740ecb3fa9c28d56c34">  131</a></span>&#160;<a class="code" href="classarmnn_1_1_optimization_views.xhtml">OptimizationViews</a> <a class="code" href="classarmnn_1_1_mock_backend.xhtml#a3c7ed3d210544740ecb3fa9c28d56c34">MockBackend::OptimizeSubgraphView</a>(<span class="keyword">const</span> <a class="code" href="classarmnn_1_1_subgraph_view.xhtml">SubgraphView</a>&amp; subgraph)<span class="keyword"> const</span></div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    <span class="comment">// Prepare the optimization views</span></div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    <a class="code" href="classarmnn_1_1_optimization_views.xhtml">OptimizationViews</a> optimizationViews;</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;    <span class="comment">// Get the layers of the input sub-graph</span></div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_subgraph_view.xhtml#a74798938fdaeae75c8adfa4a7439e7f9">SubgraphView::Layers</a>&amp; subgraphLayers = subgraph.<a class="code" href="classarmnn_1_1_subgraph_view.xhtml#ac8ac9809196ec980b8472fbc8367697a">GetLayers</a>();</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    <span class="comment">// Parse the layers</span></div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    <a class="code" href="classarmnn_1_1_subgraph_view.xhtml#a74798938fdaeae75c8adfa4a7439e7f9">SubgraphView::Layers</a> supportedLayers;</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    <a class="code" href="classarmnn_1_1_subgraph_view.xhtml#a74798938fdaeae75c8adfa4a7439e7f9">SubgraphView::Layers</a> unsupportedLayers;</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    <a class="code" href="classarmnn_1_1_subgraph_view.xhtml#a74798938fdaeae75c8adfa4a7439e7f9">SubgraphView::Layers</a> untouchedLayers;</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    std::for_each(subgraphLayers.begin(),</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;                  subgraphLayers.end(),</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;                  [&amp;](<a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>* layer)</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    {</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;        <span class="keywordtype">bool</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a928c74de863a45a07986816d7c9ad68a">supported</a> = IsLayerSupported(layer);</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;        <span class="keywordflow">if</span> (supported)</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;        {</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;            <span class="comment">// Layer supported, check if it&#39;s optimizable</span></div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;            <span class="keywordtype">bool</span> optimizable = IsLayerOptimizable(layer);</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;            <span class="keywordflow">if</span> (optimizable)</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;            {</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;                <span class="comment">// Layer fully supported</span></div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;                supportedLayers.push_back(layer);</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;            <span class="keywordflow">else</span></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;                <span class="comment">// Layer supported but not optimizable</span></div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;                untouchedLayers.push_back(layer);</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;        }</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;        <span class="keywordflow">else</span></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="comment">// Layer unsupported</span></div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;            unsupportedLayers.push_back(layer);</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;        }</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;    });</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    <span class="comment">// Check if there are supported layers</span></div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    <span class="keywordflow">if</span> (!supportedLayers.empty())</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;        <span class="comment">// Select the layers that are neither inputs or outputs, but that are optimizable</span></div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;        <span class="keyword">auto</span> supportedSubgraphSelector = [](<span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>&amp; layer)</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">return</span> layer.<a class="code" href="classarmnn_1_1_layer.xhtml#ad8e15c530c929ab823d89ae9fd2d3f11">GetType</a>() != <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">LayerType::Input</a> &amp;&amp;</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;                   layer.<a class="code" href="classarmnn_1_1_layer.xhtml#ad8e15c530c929ab823d89ae9fd2d3f11">GetType</a>() != <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">LayerType::Output</a> &amp;&amp;</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;                   IsLayerSupported(layer) &amp;&amp;</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;                   IsLayerOptimizable(layer);</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;        };</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;        <span class="comment">// Apply the subgraph selector to the supported layers to group them into sub-graphs were appropriate</span></div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;        <a class="code" href="classarmnn_1_1_subgraph_view.xhtml">SubgraphView</a> mutableSubgraph(subgraph);</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;        <a class="code" href="classarmnn_1_1_subgraph_view_selector.xhtml#aaf71a63dbbc776f8961b0f4fdb9da021">SubgraphViewSelector::Subgraphs</a> supportedSubgraphs =</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;                <a class="code" href="classarmnn_1_1_subgraph_view_selector.xhtml#a3730b0a6006f0d87f894a44e01869d90">SubgraphViewSelector::SelectSubgraphs</a>(mutableSubgraph, supportedSubgraphSelector);</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;        <span class="comment">// Create a substitution pair for each supported sub-graph</span></div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;        std::for_each(supportedSubgraphs.begin(),</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;                      supportedSubgraphs.end(),</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;                      [&amp;optimizationViews](<span class="keyword">const</span> <a class="code" href="classarmnn_1_1_subgraph_view.xhtml#a4684a457c7786484375f06e9ab2d2265">SubgraphView::SubgraphViewPtr</a>&amp; supportedSubgraph)</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;        {</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;            <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(supportedSubgraph != <span class="keyword">nullptr</span>);</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_1_pre_compiled_layer.xhtml">PreCompiledLayer</a>* preCompiledLayer =</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;                optimizationViews.<a class="code" href="classarmnn_1_1_optimization_views.xhtml#a49800ad35ea869aa5569519760d3b339">GetGraph</a>().<a class="code" href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">AddLayer</a>&lt;<a class="code" href="classarmnn_1_1_pre_compiled_layer.xhtml">PreCompiledLayer</a>&gt;(</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;                        <a class="code" href="structarmnn_1_1_pre_compiled_descriptor.xhtml">PreCompiledDescriptor</a>(supportedSubgraph-&gt;GetNumInputSlots(),</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;                                              supportedSubgraph-&gt;GetNumOutputSlots()),</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;                        <span class="stringliteral">&quot;pre-compiled&quot;</span>);</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;            preCompiledLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a3f6ad59212fa8a47c9265162fff8a274">SetBackendId</a>(<a class="code" href="namespacearmnn.xhtml#a17955517b0d148f7ffdbffe8b46e41e0">MockBackendId</a>());</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="classarmnn_1_1_subgraph_view.xhtml">SubgraphView</a> substitutionSubgraph(*supportedSubgraph);</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;            <a class="code" href="classarmnn_1_1_subgraph_view.xhtml">SubgraphView</a> replacementSubgraph(preCompiledLayer);</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;            optimizationViews.<a class="code" href="classarmnn_1_1_optimization_views.xhtml#a57340147dcb1c0ae05fdf14ff7af8a01">AddSubstitution</a>({ substitutionSubgraph, replacementSubgraph });</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;        });</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;    }</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    <span class="comment">// Check if there are unsupported layers</span></div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;    <span class="keywordflow">if</span> (!unsupportedLayers.empty())</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="comment">// Select the layers that are neither inputs or outputs, and are not optimizable</span></div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;        <span class="keyword">auto</span> unsupportedSubgraphSelector = [](<span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>&amp; layer)</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;        {</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;            <span class="keywordflow">return</span> layer.<a class="code" href="classarmnn_1_1_layer.xhtml#ad8e15c530c929ab823d89ae9fd2d3f11">GetType</a>() != <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">LayerType::Input</a> &amp;&amp;</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;                   layer.<a class="code" href="classarmnn_1_1_layer.xhtml#ad8e15c530c929ab823d89ae9fd2d3f11">GetType</a>() != <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">LayerType::Output</a> &amp;&amp;</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;                   !IsLayerSupported(layer);</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;        };</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;        <span class="comment">// Apply the subgraph selector to the unsupported layers to group them into sub-graphs were appropriate</span></div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;        <a class="code" href="classarmnn_1_1_subgraph_view.xhtml">SubgraphView</a> mutableSubgraph(subgraph);</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;        <a class="code" href="classarmnn_1_1_subgraph_view_selector.xhtml#aaf71a63dbbc776f8961b0f4fdb9da021">SubgraphViewSelector::Subgraphs</a> unsupportedSubgraphs =</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;                <a class="code" href="classarmnn_1_1_subgraph_view_selector.xhtml#a3730b0a6006f0d87f894a44e01869d90">SubgraphViewSelector::SelectSubgraphs</a>(mutableSubgraph, unsupportedSubgraphSelector);</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;        <span class="comment">// Add each unsupported sub-graph to the list of failed sub-graphs in the optimizization views</span></div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;        std::for_each(unsupportedSubgraphs.begin(),</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;                      unsupportedSubgraphs.end(),</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;                      [&amp;optimizationViews](<span class="keyword">const</span> <a class="code" href="classarmnn_1_1_subgraph_view.xhtml#a4684a457c7786484375f06e9ab2d2265">SubgraphView::SubgraphViewPtr</a>&amp; unsupportedSubgraph)</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;            <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(unsupportedSubgraph != <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;            optimizationViews.<a class="code" href="classarmnn_1_1_optimization_views.xhtml#a1b29d43c2596e40987838f6d1f819858">AddFailedSubgraph</a>(<a class="code" href="classarmnn_1_1_subgraph_view.xhtml">SubgraphView</a>(*unsupportedSubgraph));</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;        });</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;</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;    <span class="comment">// Check if there are untouched layers</span></div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    <span class="keywordflow">if</span> (!untouchedLayers.empty())</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    {</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;        <span class="comment">// Select the layers that are neither inputs or outputs, that are supported but that and are not optimizable</span></div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;        <span class="keyword">auto</span> untouchedSubgraphSelector = [](<span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>&amp; layer)</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;        {</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;            <span class="keywordflow">return</span> layer.<a class="code" href="classarmnn_1_1_layer.xhtml#ad8e15c530c929ab823d89ae9fd2d3f11">GetType</a>() != <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">LayerType::Input</a> &amp;&amp;</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;                   layer.<a class="code" href="classarmnn_1_1_layer.xhtml#ad8e15c530c929ab823d89ae9fd2d3f11">GetType</a>() != <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">LayerType::Output</a> &amp;&amp;</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;                   IsLayerSupported(layer) &amp;&amp;</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;                   !IsLayerOptimizable(layer);</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">  247</span>&#160;        <span class="comment">// Apply the subgraph selector to the untouched layers to group them into sub-graphs were appropriate</span></div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;        <a class="code" href="classarmnn_1_1_subgraph_view.xhtml">SubgraphView</a> mutableSubgraph(subgraph);</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;        <a class="code" href="classarmnn_1_1_subgraph_view_selector.xhtml#aaf71a63dbbc776f8961b0f4fdb9da021">SubgraphViewSelector::Subgraphs</a> untouchedSubgraphs =</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;                <a class="code" href="classarmnn_1_1_subgraph_view_selector.xhtml#a3730b0a6006f0d87f894a44e01869d90">SubgraphViewSelector::SelectSubgraphs</a>(mutableSubgraph, untouchedSubgraphSelector);</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;        <span class="comment">// Add each untouched sub-graph to the list of untouched sub-graphs in the optimizization views</span></div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;        std::for_each(untouchedSubgraphs.begin(),</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;                      untouchedSubgraphs.end(),</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;                      [&amp;optimizationViews](<span class="keyword">const</span> <a class="code" href="classarmnn_1_1_subgraph_view.xhtml#a4684a457c7786484375f06e9ab2d2265">SubgraphView::SubgraphViewPtr</a>&amp; untouchedSubgraph)</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;        {</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;            <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(untouchedSubgraph != <span class="keyword">nullptr</span>);</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;            optimizationViews.<a class="code" href="classarmnn_1_1_optimization_views.xhtml#a28e41bdd6b719a3d60a1a0de2e1ebc95">AddUntouchedSubgraph</a>(<a class="code" href="classarmnn_1_1_subgraph_view.xhtml">SubgraphView</a>(*untouchedSubgraph));</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;        });</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;    }</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;    <span class="keywordflow">return</span> optimizationViews;</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;}</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">// namespace armnn</span></div><div class="ttc" id="classarmnn_1_1_mock_backend_xhtml"><div class="ttname"><a href="classarmnn_1_1_mock_backend.xhtml">armnn::MockBackend</a></div><div class="ttdef"><b>Definition:</b> <a href="_mock_backend_8hpp_source.xhtml#l00143">MockBackend.hpp:143</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_backend_internal_xhtml_a72ca1cf423bda4b0a9ffb789627126de"><div class="ttname"><a href="classarmnn_1_1_i_backend_internal.xhtml#a72ca1cf423bda4b0a9ffb789627126de">armnn::IBackendInternal::IWorkloadFactoryPtr</a></div><div class="ttdeci">std::unique_ptr&lt; IWorkloadFactory &gt; IWorkloadFactoryPtr</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_i_backend_internal_8hpp_source.xhtml#l00080">IBackendInternal.hpp:80</a></div></div>
<div class="ttc" id="classarmnn_1_1_mock_backend_profiling_service_xhtml_a3458b64cd6375e3842160a28ad6e2301"><div class="ttname"><a href="classarmnn_1_1_mock_backend_profiling_service.xhtml#a3458b64cd6375e3842160a28ad6e2301">armnn::MockBackendProfilingService::SetProfilingContextPtr</a></div><div class="ttdeci">void SetProfilingContextPtr(std::shared_ptr&lt; MockBackendProfilingContext &gt; shared)</div><div class="ttdef"><b>Definition:</b> <a href="_mock_backend_8hpp_source.xhtml#l00134">MockBackend.hpp:134</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_backend_internal_xhtml_ad1794808004025d6e06c176507197b24"><div class="ttname"><a href="classarmnn_1_1_i_backend_internal.xhtml#ad1794808004025d6e06c176507197b24">armnn::IBackendInternal::Optimizations</a></div><div class="ttdeci">std::vector&lt; OptimizationPtr &gt; Optimizations</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_i_backend_internal_8hpp_source.xhtml#l00086">IBackendInternal.hpp:86</a></div></div>
<div class="ttc" id="classarmnn_1_1_backend_registry_xhtml_a0318ffa738b798986c4347ea9fe5ab37"><div class="ttname"><a href="classarmnn_1_1_backend_registry.xhtml#a0318ffa738b798986c4347ea9fe5ab37">armnn::BackendRegistry::Register</a></div><div class="ttdeci">void Register(const BackendId &amp;id, FactoryFunction factory)</div><div class="ttdef"><b>Definition:</b> <a href="_backend_registry_8cpp_source.xhtml#l00019">BackendRegistry.cpp:19</a></div></div>
<div class="ttc" id="classarmnn_1_1_mock_layer_support_xhtml"><div class="ttname"><a href="classarmnn_1_1_mock_layer_support.xhtml">armnn::MockLayerSupport</a></div><div class="ttdef"><b>Definition:</b> <a href="_mock_backend_8hpp_source.xhtml#l00171">MockBackend.hpp:171</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_graph_xhtml_a7563c5b899e7d0ada08fd0fdb202f205"><div class="ttname"><a href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">armnn::Graph::AddLayer</a></div><div class="ttdeci">LayerT * AddLayer(Args &amp;&amp;... args)</div><div class="ttdoc">Adds a new layer, of type LayerType, to the graph constructed with the arguments passed. </div><div class="ttdef"><b>Definition:</b> <a href="_graph_8hpp_source.xhtml#l00402">Graph.hpp:402</a></div></div>
<div class="ttc" id="classarmnn_1_1_mock_backend_initialiser_xhtml_a196b5c64c6b7d52b16a9073d91302f71"><div class="ttname"><a href="classarmnn_1_1_mock_backend_initialiser.xhtml#a196b5c64c6b7d52b16a9073d91302f71">armnn::MockBackendInitialiser::~MockBackendInitialiser</a></div><div class="ttdeci">~MockBackendInitialiser()</div><div class="ttdef"><b>Definition:</b> <a href="_mock_backend_8cpp_source.xhtml#l00076">MockBackend.cpp:76</a></div></div>
<div class="ttc" id="_mock_backend_8hpp_xhtml"><div class="ttname"><a href="_mock_backend_8hpp.xhtml">MockBackend.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_mock_backend_xhtml_a8e19e275c8162e34e6d8d10a9245dbc9"><div class="ttname"><a href="classarmnn_1_1_mock_backend.xhtml#a8e19e275c8162e34e6d8d10a9245dbc9">armnn::MockBackend::CreateWorkloadFactory</a></div><div class="ttdeci">IBackendInternal::IWorkloadFactoryPtr CreateWorkloadFactory(const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager=nullptr) const override</div><div class="ttdef"><b>Definition:</b> <a href="_mock_backend_8cpp_source.xhtml#l00094">MockBackend.cpp:94</a></div></div>
<div class="ttc" id="classarmnn_1_1_mock_backend_initialiser_xhtml_a844886db133bb7190b48f9af35bc6d58"><div class="ttname"><a href="classarmnn_1_1_mock_backend_initialiser.xhtml#a844886db133bb7190b48f9af35bc6d58">armnn::MockBackendInitialiser::MockBackendInitialiser</a></div><div class="ttdeci">MockBackendInitialiser()</div><div class="ttdef"><b>Definition:</b> <a href="_mock_backend_8cpp_source.xhtml#l00067">MockBackend.cpp:67</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">armnn::LayerType::Output</a></div></div>
<div class="ttc" id="classarmnn_1_1_mock_backend_xhtml_a93d4285a3ea5e4e3b35578484d889daa"><div class="ttname"><a href="classarmnn_1_1_mock_backend.xhtml#a93d4285a3ea5e4e3b35578484d889daa">armnn::MockBackend::GetLayerSupport</a></div><div class="ttdeci">IBackendInternal::ILayerSupportSharedPtr GetLayerSupport() const override</div><div class="ttdef"><b>Definition:</b> <a href="_mock_backend_8cpp_source.xhtml#l00125">MockBackend.cpp:125</a></div></div>
<div class="ttc" id="classarmnn_1_1_optimization_views_xhtml_a57340147dcb1c0ae05fdf14ff7af8a01"><div class="ttname"><a href="classarmnn_1_1_optimization_views.xhtml#a57340147dcb1c0ae05fdf14ff7af8a01">armnn::OptimizationViews::AddSubstitution</a></div><div class="ttdeci">void AddSubstitution(SubstitutionPair &amp;&amp;substitution)</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_optimization_views_8hpp_source.xhtml#l00034">OptimizationViews.hpp:34</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a17955517b0d148f7ffdbffe8b46e41e0"><div class="ttname"><a href="namespacearmnn.xhtml#a17955517b0d148f7ffdbffe8b46e41e0">armnn::MockBackendId</a></div><div class="ttdeci">constexpr const char * MockBackendId()</div><div class="ttdef"><b>Definition:</b> <a href="_mock_backend_id_8hpp_source.xhtml#l00011">MockBackendId.hpp:11</a></div></div>
<div class="ttc" id="classarmnn_1_1_mock_backend_xhtml_a801cf3170dc777aca3e6f926d1bd70a5"><div class="ttname"><a href="classarmnn_1_1_mock_backend.xhtml#a801cf3170dc777aca3e6f926d1bd70a5">armnn::MockBackend::CreateBackendContext</a></div><div class="ttdeci">IBackendInternal::IBackendContextPtr CreateBackendContext(const IRuntime::CreationOptions &amp;) const override</div><div class="ttdoc">Create the runtime context of the backend. </div><div class="ttdef"><b>Definition:</b> <a href="_mock_backend_8cpp_source.xhtml#l00100">MockBackend.cpp:100</a></div></div>
<div class="ttc" id="classarmnn_1_1_optimization_views_xhtml"><div class="ttname"><a href="classarmnn_1_1_optimization_views.xhtml">armnn::OptimizationViews</a></div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_optimization_views_8hpp_source.xhtml#l00013">OptimizationViews.hpp:13</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="classarmnn_1_1_mock_backend_xhtml_a3c7ed3d210544740ecb3fa9c28d56c34"><div class="ttname"><a href="classarmnn_1_1_mock_backend.xhtml#a3c7ed3d210544740ecb3fa9c28d56c34">armnn::MockBackend::OptimizeSubgraphView</a></div><div class="ttdeci">OptimizationViews OptimizeSubgraphView(const SubgraphView &amp;subgraph) const override</div><div class="ttdef"><b>Definition:</b> <a href="_mock_backend_8cpp_source.xhtml#l00131">MockBackend.cpp:131</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="classarmnn_1_1_i_backend_internal_xhtml_a12bff6d51d63dac1375c89bc8415dc46"><div class="ttname"><a href="classarmnn_1_1_i_backend_internal.xhtml#a12bff6d51d63dac1375c89bc8415dc46">armnn::IBackendInternal::IMemoryManagerUniquePtr</a></div><div class="ttdeci">std::unique_ptr&lt; IMemoryManager &gt; IMemoryManagerUniquePtr</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_i_backend_internal_8hpp_source.xhtml#l00091">IBackendInternal.hpp:91</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
<div class="ttc" id="classarmnn_1_1_layer_xhtml_a3f6ad59212fa8a47c9265162fff8a274"><div class="ttname"><a href="classarmnn_1_1_layer.xhtml#a3f6ad59212fa8a47c9265162fff8a274">armnn::Layer::SetBackendId</a></div><div class="ttdeci">void SetBackendId(const BackendId &amp;id)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8hpp_source.xhtml#l00270">Layer.hpp:270</a></div></div>
<div class="ttc" id="classarmnn_1_1_mock_backend_xhtml_a87acb43c72272d9db21c547d4f4996cb"><div class="ttname"><a href="classarmnn_1_1_mock_backend.xhtml#a87acb43c72272d9db21c547d4f4996cb">armnn::MockBackend::GetOptimizations</a></div><div class="ttdeci">IBackendInternal::Optimizations GetOptimizations() const override</div><div class="ttdef"><b>Definition:</b> <a href="_mock_backend_8cpp_source.xhtml#l00120">MockBackend.cpp:120</a></div></div>
<div class="ttc" id="_backend_registry_8hpp_xhtml"><div class="ttname"><a href="_backend_registry_8hpp.xhtml">BackendRegistry.hpp</a></div></div>
<div class="ttc" id="_optimizer_8hpp_xhtml"><div class="ttname"><a href="_optimizer_8hpp.xhtml">Optimizer.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_subgraph_view_xhtml"><div class="ttname"><a href="classarmnn_1_1_subgraph_view.xhtml">armnn::SubgraphView</a></div><div class="ttdoc">The SubgraphView class represents a subgraph of a Graph. </div><div class="ttdef"><b>Definition:</b> <a href="_subgraph_view_8hpp_source.xhtml#l00023">SubgraphView.hpp:23</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_backend_internal_xhtml_a34ab83489d1c5043b2b9b4a2ec13c481"><div class="ttname"><a href="classarmnn_1_1_i_backend_internal.xhtml#a34ab83489d1c5043b2b9b4a2ec13c481">armnn::IBackendInternal::IBackendProfilingPtr</a></div><div class="ttdeci">std::unique_ptr&lt; armnn::profiling::IBackendProfiling &gt; IBackendProfilingPtr</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_i_backend_internal_8hpp_source.xhtml#l00084">IBackendInternal.hpp:84</a></div></div>
<div class="ttc" id="classarmnn_1_1_subgraph_view_xhtml_a4684a457c7786484375f06e9ab2d2265"><div class="ttname"><a href="classarmnn_1_1_subgraph_view.xhtml#a4684a457c7786484375f06e9ab2d2265">armnn::SubgraphView::SubgraphViewPtr</a></div><div class="ttdeci">std::unique_ptr&lt; SubgraphView &gt; SubgraphViewPtr</div><div class="ttdef"><b>Definition:</b> <a href="_subgraph_view_8hpp_source.xhtml#l00037">SubgraphView.hpp:37</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_backend_internal_xhtml_a693b40e6b94e958836aeb0410ca186bd"><div class="ttname"><a href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a></div><div class="ttdeci">std::shared_ptr&lt; IMemoryManager &gt; IMemoryManagerSharedPtr</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_i_backend_internal_8hpp_source.xhtml#l00092">IBackendInternal.hpp:92</a></div></div>
<div class="ttc" id="classarmnn_1_1_mock_backend_xhtml_a177af502214bbc8123fbb4a3c4f0a1b8"><div class="ttname"><a href="classarmnn_1_1_mock_backend.xhtml#a177af502214bbc8123fbb4a3c4f0a1b8">armnn::MockBackend::GetIdStatic</a></div><div class="ttdeci">static const BackendId &amp; GetIdStatic()</div><div class="ttdef"><b>Definition:</b> <a href="_mock_backend_8cpp_source.xhtml#l00088">MockBackend.cpp:88</a></div></div>
<div class="ttc" id="classarmnn_1_1_optimization_views_xhtml_a1b29d43c2596e40987838f6d1f819858"><div class="ttname"><a href="classarmnn_1_1_optimization_views.xhtml#a1b29d43c2596e40987838f6d1f819858">armnn::OptimizationViews::AddFailedSubgraph</a></div><div class="ttdeci">void AddFailedSubgraph(SubgraphView &amp;&amp;subgraph)</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_optimization_views_8hpp_source.xhtml#l00039">OptimizationViews.hpp:39</a></div></div>
<div class="ttc" id="classarmnn_1_1_layer_xhtml_ad8e15c530c929ab823d89ae9fd2d3f11"><div class="ttname"><a href="classarmnn_1_1_layer.xhtml#ad8e15c530c929ab823d89ae9fd2d3f11">armnn::Layer::GetType</a></div><div class="ttdeci">LayerType GetType() const override</div><div class="ttdoc">Returns the armnn::LayerType of this layer. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_8hpp_source.xhtml#l00265">Layer.hpp:265</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a">armnn::LayerType::Convolution2d</a></div></div>
<div class="ttc" id="classarmnn_1_1_subgraph_view_selector_xhtml_aaf71a63dbbc776f8961b0f4fdb9da021"><div class="ttname"><a href="classarmnn_1_1_subgraph_view_selector.xhtml#aaf71a63dbbc776f8961b0f4fdb9da021">armnn::SubgraphViewSelector::Subgraphs</a></div><div class="ttdeci">std::vector&lt; SubgraphViewPtr &gt; Subgraphs</div><div class="ttdef"><b>Definition:</b> <a href="_subgraph_view_selector_8hpp_source.xhtml#l00025">SubgraphViewSelector.hpp:25</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_mock_backend_profiling_service_xhtml_a15a5e913e48840d7b767a4453d83f361"><div class="ttname"><a href="classarmnn_1_1_mock_backend_profiling_service.xhtml#a15a5e913e48840d7b767a4453d83f361">armnn::MockBackendProfilingService::Instance</a></div><div class="ttdeci">static MockBackendProfilingService &amp; Instance()</div><div class="ttdef"><b>Definition:</b> <a href="_mock_backend_8hpp_source.xhtml#l00123">MockBackend.hpp:123</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a7c5531bbefed0945814f874baf9e0e0f"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a7c5531bbefed0945814f874baf9e0e0f">armnn::LayerType::Addition</a></div></div>
<div class="ttc" id="classarmnn_1_1_optimization_views_xhtml_a28e41bdd6b719a3d60a1a0de2e1ebc95"><div class="ttname"><a href="classarmnn_1_1_optimization_views.xhtml#a28e41bdd6b719a3d60a1a0de2e1ebc95">armnn::OptimizationViews::AddUntouchedSubgraph</a></div><div class="ttdeci">void AddUntouchedSubgraph(SubgraphView &amp;&amp;subgraph)</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_optimization_views_8hpp_source.xhtml#l00044">OptimizationViews.hpp:44</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_mock_backend_xhtml_ac2480fbc4ae790e2e64f55d78b7f31a0"><div class="ttname"><a href="classarmnn_1_1_mock_backend.xhtml#ac2480fbc4ae790e2e64f55d78b7f31a0">armnn::MockBackend::CreateBackendProfilingContext</a></div><div class="ttdeci">IBackendInternal::IBackendProfilingContextPtr CreateBackendProfilingContext(const IRuntime::CreationOptions &amp;creationOptions, IBackendProfilingPtr &amp;backendProfiling) override</div><div class="ttdoc">Create context specifically used for profiling interaction from backends. </div><div class="ttdef"><b>Definition:</b> <a href="_mock_backend_8cpp_source.xhtml#l00105">MockBackend.cpp:105</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_backend_internal_xhtml_a11fa919c11fe46aad613b2e960fcfe90"><div class="ttname"><a href="classarmnn_1_1_i_backend_internal.xhtml#a11fa919c11fe46aad613b2e960fcfe90">armnn::IBackendInternal::ILayerSupportSharedPtr</a></div><div class="ttdeci">std::shared_ptr&lt; ILayerSupport &gt; ILayerSupportSharedPtr</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_i_backend_internal_8hpp_source.xhtml#l00087">IBackendInternal.hpp:87</a></div></div>
<div class="ttc" id="classarmnn_1_1_subgraph_view_selector_xhtml_a3730b0a6006f0d87f894a44e01869d90"><div class="ttname"><a href="classarmnn_1_1_subgraph_view_selector.xhtml#a3730b0a6006f0d87f894a44e01869d90">armnn::SubgraphViewSelector::SelectSubgraphs</a></div><div class="ttdeci">static Subgraphs SelectSubgraphs(Graph &amp;graph, const LayerSelectorFunction &amp;selector)</div><div class="ttdoc">Selects subgraphs from a graph based on the selector function and the algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="_subgraph_view_selector_8cpp_source.xhtml#l00255">SubgraphViewSelector.cpp:255</a></div></div>
<div class="ttc" id="classarmnn_1_1_pre_compiled_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_pre_compiled_layer.xhtml">armnn::PreCompiledLayer</a></div><div class="ttdef"><b>Definition:</b> <a href="_pre_compiled_layer_8hpp_source.xhtml#l00022">PreCompiledLayer.hpp:22</a></div></div>
<div class="ttc" id="classarmnn_1_1_optimization_views_xhtml_a49800ad35ea869aa5569519760d3b339"><div class="ttname"><a href="classarmnn_1_1_optimization_views.xhtml#a49800ad35ea869aa5569519760d3b339">armnn::OptimizationViews::GetGraph</a></div><div class="ttdeci">Graph &amp; GetGraph()</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_optimization_views_8hpp_source.xhtml#l00059">OptimizationViews.hpp:59</a></div></div>
<div class="ttc" id="classarmnn_1_1_backend_registry_xhtml_a41895cd60f4b1bfd0b88571a8773ff1c"><div class="ttname"><a href="classarmnn_1_1_backend_registry.xhtml#a41895cd60f4b1bfd0b88571a8773ff1c">armnn::BackendRegistry::Deregister</a></div><div class="ttdeci">void Deregister(const BackendId &amp;id)</div><div class="ttdef"><b>Definition:</b> <a href="_backend_registry_8cpp_source.xhtml#l00039">BackendRegistry.cpp:39</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">armnn::LayerType::Input</a></div></div>
<div class="ttc" id="classarmnn_1_1_subgraph_view_xhtml_ac8ac9809196ec980b8472fbc8367697a"><div class="ttname"><a href="classarmnn_1_1_subgraph_view.xhtml#ac8ac9809196ec980b8472fbc8367697a">armnn::SubgraphView::GetLayers</a></div><div class="ttdeci">const Layers &amp; GetLayers() const</div><div class="ttdef"><b>Definition:</b> <a href="_subgraph_view_8cpp_source.xhtml#l00164">SubgraphView.cpp:164</a></div></div>
<div class="ttc" id="include_2armnn_2backends_2_i_memory_manager_8hpp_xhtml"><div class="ttname"><a href="include_2armnn_2backends_2_i_memory_manager_8hpp.xhtml">IMemoryManager.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_layer_xhtml_a7ddf0cf6f620d59c10e63495ace795d0"><div class="ttname"><a href="classarmnn_1_1_layer.xhtml#a7ddf0cf6f620d59c10e63495ace795d0">armnn::Layer::GetName</a></div><div class="ttdeci">const char * GetName() const override</div><div class="ttdoc">Returns the name of the layer. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_8hpp_source.xhtml#l00311">Layer.hpp:311</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ade0af9dacaa52cafdd701bef2e901c77"><div class="ttname"><a href="namespacearmnn.xhtml#ade0af9dacaa52cafdd701bef2e901c77">armnn::IBackendInternalUniquePtr</a></div><div class="ttdeci">std::unique_ptr&lt; IBackendInternal &gt; IBackendInternalUniquePtr</div><div class="ttdef"><b>Definition:</b> <a href="_backend_registry_8hpp_source.xhtml#l00023">BackendRegistry.hpp:23</a></div></div>
<div class="ttc" id="structarmnn_1_1_pre_compiled_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_pre_compiled_descriptor.xhtml">armnn::PreCompiledDescriptor</a></div><div class="ttdoc">A PreCompiledDescriptor for the PreCompiledLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01140">Descriptors.hpp:1140</a></div></div>
<div class="ttc" id="classarmnn_1_1_subgraph_view_xhtml_a74798938fdaeae75c8adfa4a7439e7f9"><div class="ttname"><a href="classarmnn_1_1_subgraph_view.xhtml#a74798938fdaeae75c8adfa4a7439e7f9">armnn::SubgraphView::Layers</a></div><div class="ttdeci">std::list&lt; Layer * &gt; Layers</div><div class="ttdef"><b>Definition:</b> <a href="_subgraph_view_8hpp_source.xhtml#l00040">SubgraphView.hpp:40</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_backend_internal_xhtml_a928c74de863a45a07986816d7c9ad68a"><div class="ttname"><a href="classarmnn_1_1_i_backend_internal.xhtml#a928c74de863a45a07986816d7c9ad68a">armnn::IBackendInternal::supported</a></div><div class="ttdeci">std::unique_ptr&lt; ISubGraphConverter &gt; supported</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_i_backend_internal_8hpp_source.xhtml#l00099">IBackendInternal.hpp:99</a></div></div>
<div class="ttc" id="_subgraph_view_selector_8hpp_xhtml"><div class="ttname"><a href="_subgraph_view_selector_8hpp.xhtml">SubgraphViewSelector.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_backend_internal_xhtml_aaece3a614f6691da8de8c7295cb1b07f"><div class="ttname"><a href="classarmnn_1_1_i_backend_internal.xhtml#aaece3a614f6691da8de8c7295cb1b07f">armnn::IBackendInternal::IBackendProfilingContextPtr</a></div><div class="ttdeci">std::shared_ptr&lt; armnn::profiling::IBackendProfilingContext &gt; IBackendProfilingContextPtr</div><div class="ttdoc">This is the bridge between backend and backend profiling we&amp;#39;ll keep it in the backend namespace...</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_i_backend_internal_8hpp_source.xhtml#l00083">IBackendInternal.hpp:83</a></div></div>
<div class="ttc" id="_mock_backend_id_8hpp_xhtml"><div class="ttname"><a href="_mock_backend_id_8hpp.xhtml">MockBackendId.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_layer.xhtml">armnn::Layer</a></div><div class="ttdef"><b>Definition:</b> <a href="_layer_8hpp_source.xhtml#l00210">Layer.hpp:210</a></div></div>
<div class="ttc" id="classarmnn_1_1_mock_backend_xhtml_a93fcb3bff141d8c77b53466a44b58eee"><div class="ttname"><a href="classarmnn_1_1_mock_backend.xhtml#a93fcb3bff141d8c77b53466a44b58eee">armnn::MockBackend::CreateMemoryManager</a></div><div class="ttdeci">IBackendInternal::IMemoryManagerUniquePtr CreateMemoryManager() const override</div><div class="ttdef"><b>Definition:</b> <a href="_mock_backend_8cpp_source.xhtml#l00115">MockBackend.cpp:115</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">armnn::LayerType</a></div><div class="ttdeci">LayerType</div><div class="ttdoc">When adding a new layer, adapt also the LastLayer enum value in the enum class LayerType below...</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00419">Types.hpp:419</a></div></div>
<div class="ttc" id="classarmnn_1_1_backend_id_xhtml"><div class="ttname"><a href="classarmnn_1_1_backend_id.xhtml">armnn::BackendId</a></div><div class="ttdef"><b>Definition:</b> <a href="_backend_id_8hpp_source.xhtml#l00075">BackendId.hpp:75</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_backend_internal_xhtml_ada6d56575c0fe53cf23c7ae4610c6367"><div class="ttname"><a href="classarmnn_1_1_i_backend_internal.xhtml#ada6d56575c0fe53cf23c7ae4610c6367">armnn::IBackendInternal::IBackendContextPtr</a></div><div class="ttdeci">std::unique_ptr&lt; IBackendContext &gt; IBackendContextPtr</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_i_backend_internal_8hpp_source.xhtml#l00081">IBackendInternal.hpp:81</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_0f3cdec46afbc61a1ded8e1687c9c9a0.xhtml">backends</a></li><li class="navelem"><a class="el" href="dir_797a213d7d01b98ef12d53b0820ea64e.xhtml">backendsCommon</a></li><li class="navelem"><a class="el" href="dir_28bfe507f7e135bdae07c2a6b7f66696.xhtml">test</a></li><li class="navelem"><a class="el" href="_mock_backend_8cpp.xhtml">MockBackend.cpp</a></li>
    <li class="footer">Generated on Fri Mar 19 2021 15:26:01 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>