blob: f8b914f8b5f37d34ce15aeba2004e769f2c2df7f [file] [log] [blame]
Nikhil Raj1dc83fe2024-05-16 09:47:51 +01001<!-- HTML header for doxygen 1.8.17-->
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml">
4<head>
5<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.8.17"/>
8<meta name="viewport" content="width=device-width, initial-scale=1"/>
9<title>Arm NN: RefBackend Class Reference</title>
10<link href="tabs.css" rel="stylesheet" type="text/css"/>
11<script type="text/javascript" src="jquery.js"></script>
12<script type="text/javascript" src="dynsections.js"></script>
13<link href="navtree.css" rel="stylesheet" type="text/css"/>
14<script type="text/javascript" src="resize.js"></script>
15<script type="text/javascript" src="navtreedata.js"></script>
16<script type="text/javascript" src="navtree.js"></script>
17<link href="search/search.css" rel="stylesheet" type="text/css"/>
18<script type="text/javascript" src="search/searchdata.js"></script>
19<script type="text/javascript" src="search/search.js"></script>
20<script type="text/x-mathjax-config">
21 MathJax.Hub.Config({
22 extensions: ["tex2jax.js"],
23 jax: ["input/TeX","output/HTML-CSS"],
24});
25</script>
26<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
27<link href="doxygen.css" rel="stylesheet" type="text/css" />
28<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
29</head>
30<body>
31<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
32<div id="titlearea">
33<table cellspacing="0" cellpadding="0">
34 <tbody>
35 <tr style="height: 56px;">
36 <img alt="ArmNN" src="Arm_NN_horizontal_blue.png" style="max-width: 15rem; margin-top: .5rem; margin-left 13px"/>
37 <td id="projectalign" style="padding-left: 0.9em;">
38 <div id="projectname">
39 &#160;<span id="projectnumber">24.05</span>
40 </div>
41 </td>
42 </tr>
43 </tbody>
44</table>
45</div>
46<!-- end header part -->
47<!-- Generated by Doxygen 1.8.17 -->
48<script type="text/javascript">
49/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
50var searchBox = new SearchBox("searchBox", "search",false,'Search');
51/* @license-end */
52</script>
53<script type="text/javascript" src="menudata.js"></script>
54<script type="text/javascript" src="menu.js"></script>
55<script type="text/javascript">
56/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
57$(function() {
58 initMenu('',true,false,'search.php','Search');
59 $(document).ready(function() { init_search(); });
60});
61/* @license-end */</script>
62<div id="main-nav"></div>
63</div><!-- top -->
64<div id="side-nav" class="ui-resizable side-nav-resizable">
65 <div id="nav-tree">
66 <div id="nav-tree-contents">
67 <div id="nav-sync" class="sync"></div>
68 </div>
69 </div>
70 <div id="splitbar" style="-moz-user-select:none;"
71 class="ui-resizable-handle">
72 </div>
73</div>
74<script type="text/javascript">
75/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
76$(document).ready(function(){initNavTree('classarmnn_1_1_ref_backend.html',''); initResizable(); });
77/* @license-end */
78</script>
79<div id="doc-content">
80<!-- window showing the filter options -->
81<div id="MSearchSelectWindow"
82 onmouseover="return searchBox.OnSearchSelectShow()"
83 onmouseout="return searchBox.OnSearchSelectHide()"
84 onkeydown="return searchBox.OnSearchSelectKey(event)">
85</div>
86
87<!-- iframe showing the search results (closed by default) -->
88<div id="MSearchResultsWindow">
89<iframe src="javascript:void(0)" frameborder="0"
90 name="MSearchResults" id="MSearchResults">
91</iframe>
92</div>
93
94<div class="header">
95 <div class="summary">
96<a href="#pub-methods">Public Member Functions</a> &#124;
97<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
98<a href="classarmnn_1_1_ref_backend-members.html">List of all members</a> </div>
99 <div class="headertitle">
100<div class="title">RefBackend Class Reference</div> </div>
101</div><!--header-->
102<div class="contents">
103
104<p><code>#include &lt;<a class="el" href="_ref_backend_8hpp_source.html">RefBackend.hpp</a>&gt;</code></p>
105<div class="dynheader">
106Inheritance diagram for RefBackend:</div>
107<div class="dyncontent">
108<div class="center"><iframe scrolling="no" frameborder="0" src="classarmnn_1_1_ref_backend__inherit__graph.svg" width="142" height="187"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
109</div>
110<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
111<div class="dynheader">
112Collaboration diagram for RefBackend:</div>
113<div class="dyncontent">
114<div class="center"><iframe scrolling="no" frameborder="0" src="classarmnn_1_1_ref_backend__coll__graph.svg" width="142" height="187"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
115</div>
116<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
117<table class="memberdecls">
118<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
119Public Member Functions</h2></td></tr>
120<tr class="memitem:a57ed562a609099926af1f9b4ae7c0fee"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_backend.html#a57ed562a609099926af1f9b4ae7c0fee">RefBackend</a> ()=default</td></tr>
121<tr class="separator:a57ed562a609099926af1f9b4ae7c0fee"><td class="memSeparator" colspan="2">&#160;</td></tr>
122<tr class="memitem:ae9d9d836f0915de82f45a07f6a77d18c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_backend.html#ae9d9d836f0915de82f45a07f6a77d18c">~RefBackend</a> ()=default</td></tr>
123<tr class="separator:ae9d9d836f0915de82f45a07f6a77d18c"><td class="memSeparator" colspan="2">&#160;</td></tr>
124<tr class="memitem:a6c6c3d137a7792e264a89cc40ea94bb0"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_backend.html#a6c6c3d137a7792e264a89cc40ea94bb0">GetId</a> () const override</td></tr>
125<tr class="separator:a6c6c3d137a7792e264a89cc40ea94bb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
126<tr class="memitem:a93fcb3bff141d8c77b53466a44b58eee"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_i_backend_internal.html#a12bff6d51d63dac1375c89bc8415dc46">IBackendInternal::IMemoryManagerUniquePtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_backend.html#a93fcb3bff141d8c77b53466a44b58eee">CreateMemoryManager</a> () const override</td></tr>
127<tr class="separator:a93fcb3bff141d8c77b53466a44b58eee"><td class="memSeparator" colspan="2">&#160;</td></tr>
128<tr class="memitem:a8e19e275c8162e34e6d8d10a9245dbc9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_i_backend_internal.html#a72ca1cf423bda4b0a9ffb789627126de">IBackendInternal::IWorkloadFactoryPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_backend.html#a8e19e275c8162e34e6d8d10a9245dbc9">CreateWorkloadFactory</a> (const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager=nullptr) const override</td></tr>
129<tr class="separator:a8e19e275c8162e34e6d8d10a9245dbc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
130<tr class="memitem:afb0e4b4255c996c68fe87e3c13451a43"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_i_backend_internal.html#a72ca1cf423bda4b0a9ffb789627126de">IBackendInternal::IWorkloadFactoryPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_backend.html#afb0e4b4255c996c68fe87e3c13451a43">CreateWorkloadFactory</a> (class <a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;tensorHandleFactoryRegistry) const override</td></tr>
131<tr class="separator:afb0e4b4255c996c68fe87e3c13451a43"><td class="memSeparator" colspan="2">&#160;</td></tr>
132<tr class="memitem:a801cf3170dc777aca3e6f926d1bd70a5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_i_backend_internal.html#ada6d56575c0fe53cf23c7ae4610c6367">IBackendInternal::IBackendContextPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_backend.html#a801cf3170dc777aca3e6f926d1bd70a5">CreateBackendContext</a> (const <a class="el" href="structarmnn_1_1_i_runtime_1_1_creation_options.html">IRuntime::CreationOptions</a> &amp;) const override</td></tr>
133<tr class="memdesc:a801cf3170dc777aca3e6f926d1bd70a5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create the runtime context of the backend. <a href="classarmnn_1_1_ref_backend.html#a801cf3170dc777aca3e6f926d1bd70a5">More...</a><br /></td></tr>
134<tr class="separator:a801cf3170dc777aca3e6f926d1bd70a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
135<tr class="memitem:ac2480fbc4ae790e2e64f55d78b7f31a0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_i_backend_internal.html#ae44a82b0e485e551a0f77150b1076e06">IBackendInternal::IBackendProfilingContextPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_backend.html#ac2480fbc4ae790e2e64f55d78b7f31a0">CreateBackendProfilingContext</a> (const <a class="el" href="structarmnn_1_1_i_runtime_1_1_creation_options.html">IRuntime::CreationOptions</a> &amp;creationOptions, <a class="el" href="classarmnn_1_1_i_backend_internal.html#a335964abd41c91f7e6ef5c65865a7b98">IBackendProfilingPtr</a> &amp;backendProfiling) override</td></tr>
136<tr class="memdesc:ac2480fbc4ae790e2e64f55d78b7f31a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create context specifically used for profiling interaction from backends. <a href="classarmnn_1_1_ref_backend.html#ac2480fbc4ae790e2e64f55d78b7f31a0">More...</a><br /></td></tr>
137<tr class="separator:ac2480fbc4ae790e2e64f55d78b7f31a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
138<tr class="memitem:a93d4285a3ea5e4e3b35578484d889daa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_i_backend_internal.html#a11fa919c11fe46aad613b2e960fcfe90">IBackendInternal::ILayerSupportSharedPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_backend.html#a93d4285a3ea5e4e3b35578484d889daa">GetLayerSupport</a> () const override</td></tr>
139<tr class="separator:a93d4285a3ea5e4e3b35578484d889daa"><td class="memSeparator" colspan="2">&#160;</td></tr>
140<tr class="memitem:a339efc194a1738cd93fcdde4d948a5cd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_optimization_views.html">OptimizationViews</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_backend.html#a339efc194a1738cd93fcdde4d948a5cd">OptimizeSubgraphView</a> (const <a class="el" href="classarmnn_1_1_subgraph_view.html">SubgraphView</a> &amp;subgraph, const <a class="el" href="namespacearmnn.html#a5b6893cda5b69359a4244c06054da18f">ModelOptions</a> &amp;modelOptions) const override</td></tr>
141<tr class="separator:a339efc194a1738cd93fcdde4d948a5cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
142<tr class="memitem:a63559c7f206c265f5fff5ffcc8a58e3e"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_backend.html#a63559c7f206c265f5fff5ffcc8a58e3e">GetHandleFactoryPreferences</a> () const override</td></tr>
143<tr class="memdesc:a63559c7f206c265f5fff5ffcc8a58e3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">(<a class="el" href="classarmnn_1_1_optional.html">Optional</a>) Returns a vector of supported TensorHandleFactory ids in preference order. <a href="classarmnn_1_1_ref_backend.html#a63559c7f206c265f5fff5ffcc8a58e3e">More...</a><br /></td></tr>
144<tr class="separator:a63559c7f206c265f5fff5ffcc8a58e3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
145<tr class="memitem:a583bc4404a9d27ee1f8c46239637125d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_backend.html#a583bc4404a9d27ee1f8c46239637125d">RegisterTensorHandleFactories</a> (class <a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;registry) override</td></tr>
146<tr class="memdesc:a583bc4404a9d27ee1f8c46239637125d"><td class="mdescLeft">&#160;</td><td class="mdescRight">(<a class="el" href="classarmnn_1_1_optional.html">Optional</a>) Register TensorHandleFactories Either this method or <a class="el" href="classarmnn_1_1_ref_backend.html#a93fcb3bff141d8c77b53466a44b58eee">CreateMemoryManager()</a> and IWorkloadFactory::CreateTensor() IWorkloadFactory::CreateSubtensor() methods must be implemented. <a href="classarmnn_1_1_ref_backend.html#a583bc4404a9d27ee1f8c46239637125d">More...</a><br /></td></tr>
147<tr class="separator:a583bc4404a9d27ee1f8c46239637125d"><td class="memSeparator" colspan="2">&#160;</td></tr>
148<tr class="memitem:ab9199ff425571ba62412bb903c2c933e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#aa9c506b558b8aa33a228b15164f40dc3">BackendCapabilities</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_backend.html#ab9199ff425571ba62412bb903c2c933e">GetCapabilities</a> () const override</td></tr>
149<tr class="memdesc:ab9199ff425571ba62412bb903c2c933e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a BackendCapability if the backend lists the capability The BackendCapability must then be inspected to check whether or not that BackendCapability is supported Otherwise returns an <a class="el" href="structarmnn_1_1_empty_optional.html" title="EmptyOptional is used to initialize the Optional class in case we want to have default value for an O...">EmptyOptional</a> if the BackendCapability is unlisted. <a href="classarmnn_1_1_ref_backend.html#ab9199ff425571ba62412bb903c2c933e">More...</a><br /></td></tr>
150<tr class="separator:ab9199ff425571ba62412bb903c2c933e"><td class="memSeparator" colspan="2">&#160;</td></tr>
151<tr class="memitem:afb75bad43612f5314622c4fa8a16e63d"><td class="memItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_custom_allocator.html">ICustomAllocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_backend.html#afb75bad43612f5314622c4fa8a16e63d">GetDefaultAllocator</a> () const override</td></tr>
152<tr class="memdesc:afb75bad43612f5314622c4fa8a16e63d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the default memory allocator for the backend. <a href="classarmnn_1_1_ref_backend.html#afb75bad43612f5314622c4fa8a16e63d">More...</a><br /></td></tr>
153<tr class="separator:afb75bad43612f5314622c4fa8a16e63d"><td class="memSeparator" colspan="2">&#160;</td></tr>
154<tr class="memitem:a8ca4e60571661905a5c0f63389991251"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1experimental_1_1_execution_data.html">ExecutionData</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_backend.html#a8ca4e60571661905a5c0f63389991251">CreateExecutionData</a> (<a class="el" href="structarmnn_1_1experimental_1_1_working_mem_descriptor.html">WorkingMemDescriptor</a> &amp;workingMemDescriptor) const override</td></tr>
155<tr class="memdesc:a8ca4e60571661905a5c0f63389991251"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns ExecutionData for the backend. <a href="classarmnn_1_1_ref_backend.html#a8ca4e60571661905a5c0f63389991251">More...</a><br /></td></tr>
156<tr class="separator:a8ca4e60571661905a5c0f63389991251"><td class="memSeparator" colspan="2">&#160;</td></tr>
157<tr class="memitem:ae1433fe03ffaacea6d1b5fbbd67754b3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_backend.html#ae1433fe03ffaacea6d1b5fbbd67754b3">UpdateExecutionData</a> (<a class="el" href="structarmnn_1_1experimental_1_1_execution_data.html">ExecutionData</a> &amp;executionData, <a class="el" href="structarmnn_1_1experimental_1_1_working_mem_descriptor.html">WorkingMemDescriptor</a> &amp;workingMemDescriptor) const override</td></tr>
158<tr class="memdesc:ae1433fe03ffaacea6d1b5fbbd67754b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update the ExecutionData for a layer. <a href="classarmnn_1_1_ref_backend.html#ae1433fe03ffaacea6d1b5fbbd67754b3">More...</a><br /></td></tr>
159<tr class="separator:ae1433fe03ffaacea6d1b5fbbd67754b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
160<tr class="inherit_header pub_methods_classarmnn_1_1_i_backend_internal"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classarmnn_1_1_i_backend_internal')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classarmnn_1_1_i_backend_internal.html">IBackendInternal</a></td></tr>
161<tr class="memitem:a8c507c220869f89aec2dc370ea6c5a0b inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_internal.html#a8c507c220869f89aec2dc370ea6c5a0b">~IBackendInternal</a> () override=default</td></tr>
162<tr class="memdesc:a8c507c220869f89aec2dc370ea6c5a0b inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allow backends created by the factory function to be destroyed through <a class="el" href="classarmnn_1_1_i_backend_internal.html">IBackendInternal</a>. <a href="classarmnn_1_1_i_backend_internal.html#a8c507c220869f89aec2dc370ea6c5a0b">More...</a><br /></td></tr>
163<tr class="separator:a8c507c220869f89aec2dc370ea6c5a0b inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="memSeparator" colspan="2">&#160;</td></tr>
164<tr class="memitem:a22973198ab5ac5624b4caa78100d2d25 inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classarmnn_1_1_i_backend_internal.html#a72ca1cf423bda4b0a9ffb789627126de">IWorkloadFactoryPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_internal.html#a22973198ab5ac5624b4caa78100d2d25">CreateWorkloadFactory</a> (const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">IMemoryManagerSharedPtr</a> &amp;memoryManager, const <a class="el" href="namespacearmnn.html#a5b6893cda5b69359a4244c06054da18f">ModelOptions</a> &amp;modelOptions) const</td></tr>
165<tr class="separator:a22973198ab5ac5624b4caa78100d2d25 inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="memSeparator" colspan="2">&#160;</td></tr>
166<tr class="memitem:aebacbea86fddc46858f6329671ccf750 inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classarmnn_1_1_i_backend_internal.html#a72ca1cf423bda4b0a9ffb789627126de">IWorkloadFactoryPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_internal.html#aebacbea86fddc46858f6329671ccf750">CreateWorkloadFactory</a> (class <a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;tensorHandleFactoryRegistry, const <a class="el" href="namespacearmnn.html#a5b6893cda5b69359a4244c06054da18f">ModelOptions</a> &amp;modelOptions) const</td></tr>
167<tr class="separator:aebacbea86fddc46858f6329671ccf750 inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="memSeparator" colspan="2">&#160;</td></tr>
168<tr class="memitem:a6abedf4465c7f6b634a207d228cdf284 inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classarmnn_1_1_i_backend_internal.html#a72ca1cf423bda4b0a9ffb789627126de">IWorkloadFactoryPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_internal.html#a6abedf4465c7f6b634a207d228cdf284">CreateWorkloadFactory</a> (class <a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;tensorHandleFactoryRegistry, const <a class="el" href="namespacearmnn.html#a5b6893cda5b69359a4244c06054da18f">ModelOptions</a> &amp;modelOptions, <a class="el" href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a> inputFlags, <a class="el" href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a> outputFlags) const</td></tr>
169<tr class="separator:a6abedf4465c7f6b634a207d228cdf284 inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="memSeparator" colspan="2">&#160;</td></tr>
170<tr class="memitem:a41f38c8c2182463dec4f03769ea54f63 inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classarmnn_1_1_i_backend_internal.html#a4d0238968a7643dbb170547dd22bba54">IBackendSpecificModelContextPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_internal.html#a41f38c8c2182463dec4f03769ea54f63">CreateBackendSpecificModelContext</a> (const <a class="el" href="namespacearmnn.html#a5b6893cda5b69359a4244c06054da18f">ModelOptions</a> &amp;modelOptions) const</td></tr>
171<tr class="separator:a41f38c8c2182463dec4f03769ea54f63 inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="memSeparator" colspan="2">&#160;</td></tr>
172<tr class="memitem:aa654fe558005ad90f2e9a2e1f175ebce inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classarmnn_1_1_i_backend_internal.html#a11fa919c11fe46aad613b2e960fcfe90">ILayerSupportSharedPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_internal.html#aa654fe558005ad90f2e9a2e1f175ebce">GetLayerSupport</a> (const <a class="el" href="namespacearmnn.html#a5b6893cda5b69359a4244c06054da18f">ModelOptions</a> &amp;modelOptions) const</td></tr>
173<tr class="separator:aa654fe558005ad90f2e9a2e1f175ebce inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="memSeparator" colspan="2">&#160;</td></tr>
174<tr class="memitem:a674f56c735a3d6300463cefb642f808a inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classarmnn_1_1_optimization_views.html">OptimizationViews</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_internal.html#a674f56c735a3d6300463cefb642f808a">OptimizeSubgraphView</a> (const <a class="el" href="classarmnn_1_1_subgraph_view.html">SubgraphView</a> &amp;subgraph) const</td></tr>
175<tr class="separator:a674f56c735a3d6300463cefb642f808a inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="memSeparator" colspan="2">&#160;</td></tr>
176<tr class="memitem:af8f716b0eab6b9d63196d5a53d5fac81 inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_internal.html#af8f716b0eab6b9d63196d5a53d5fac81">SupportsTensorAllocatorAPI</a> () const</td></tr>
177<tr class="separator:af8f716b0eab6b9d63196d5a53d5fac81 inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="memSeparator" colspan="2">&#160;</td></tr>
178<tr class="memitem:a6ccbb386cc96a5336a8295a3c25d33dd inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_internal.html#a6ccbb386cc96a5336a8295a3c25d33dd">GetBackwardCompatibleFavoriteHandleFactory</a> ()</td></tr>
179<tr class="separator:a6ccbb386cc96a5336a8295a3c25d33dd inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="memSeparator" colspan="2">&#160;</td></tr>
180<tr class="memitem:a36b46ce669164b5188cb21796557d897 inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_internal.html#a36b46ce669164b5188cb21796557d897">RegisterTensorHandleFactories</a> (class <a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;registry, <a class="el" href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a> inputFlags, <a class="el" href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a> outputFlags)</td></tr>
181<tr class="memdesc:a36b46ce669164b5188cb21796557d897 inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="mdescLeft">&#160;</td><td class="mdescRight">(<a class="el" href="classarmnn_1_1_optional.html">Optional</a>) Register TensorHandleFactories Either this method or <a class="el" href="classarmnn_1_1_i_backend_internal.html#a0fe4c12c8f1f0722d2a91f61c02a687a">CreateMemoryManager()</a> and IWorkloadFactory::CreateTensor() IWorkloadFactory::CreateSubtensor() methods must be implemented. <a href="classarmnn_1_1_i_backend_internal.html#a36b46ce669164b5188cb21796557d897">More...</a><br /></td></tr>
182<tr class="separator:a36b46ce669164b5188cb21796557d897 inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="memSeparator" colspan="2">&#160;</td></tr>
183<tr class="memitem:a8a8eb1a5eb458445a2e5a7c7cd4424cb inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_internal.html#a8a8eb1a5eb458445a2e5a7c7cd4424cb">UseCustomMemoryAllocator</a> (std::shared_ptr&lt; <a class="el" href="classarmnn_1_1_i_custom_allocator.html">ICustomAllocator</a> &gt; allocator, <a class="el" href="classarmnn_1_1_optional.html">armnn::Optional</a>&lt; std::string &amp; &gt; errMsg)</td></tr>
184<tr class="memdesc:a8a8eb1a5eb458445a2e5a7c7cd4424cb inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signals the backend to use a custom memory allocator provided by the user. <a href="classarmnn_1_1_i_backend_internal.html#a8a8eb1a5eb458445a2e5a7c7cd4424cb">More...</a><br /></td></tr>
185<tr class="separator:a8a8eb1a5eb458445a2e5a7c7cd4424cb inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="memSeparator" colspan="2">&#160;</td></tr>
186<tr class="memitem:a87d128382876683170ffc3529aadabbf inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="memItemLeft" align="right" valign="top">virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_internal.html#a87d128382876683170ffc3529aadabbf">GetNumberOfCacheFiles</a> () const</td></tr>
187<tr class="memdesc:a87d128382876683170ffc3529aadabbf inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of files cached if backend supports caching. <a href="classarmnn_1_1_i_backend_internal.html#a87d128382876683170ffc3529aadabbf">More...</a><br /></td></tr>
188<tr class="separator:a87d128382876683170ffc3529aadabbf inherit pub_methods_classarmnn_1_1_i_backend_internal"><td class="memSeparator" colspan="2">&#160;</td></tr>
189</table><table class="memberdecls">
190<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
191Static Public Member Functions</h2></td></tr>
192<tr class="memitem:a177af502214bbc8123fbb4a3c4f0a1b8"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_backend.html#a177af502214bbc8123fbb4a3c4f0a1b8">GetIdStatic</a> ()</td></tr>
193<tr class="separator:a177af502214bbc8123fbb4a3c4f0a1b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
194<tr class="inherit_header pub_static_methods_classarmnn_1_1_i_backend_internal"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_classarmnn_1_1_i_backend_internal')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="classarmnn_1_1_i_backend_internal.html">IBackendInternal</a></td></tr>
195<tr class="memitem:a878b8f50d8a2f92ed624803e9f6968ae inherit pub_static_methods_classarmnn_1_1_i_backend_internal"><td class="memItemLeft" align="right" valign="top">static constexpr <a class="el" href="structarmnn_1_1_backend_version.html">BackendVersion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_internal.html#a878b8f50d8a2f92ed624803e9f6968ae">GetApiVersion</a> ()</td></tr>
196<tr class="memdesc:a878b8f50d8a2f92ed624803e9f6968ae inherit pub_static_methods_classarmnn_1_1_i_backend_internal"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the version of the Backend API. <a href="classarmnn_1_1_i_backend_internal.html#a878b8f50d8a2f92ed624803e9f6968ae">More...</a><br /></td></tr>
197<tr class="separator:a878b8f50d8a2f92ed624803e9f6968ae inherit pub_static_methods_classarmnn_1_1_i_backend_internal"><td class="memSeparator" colspan="2">&#160;</td></tr>
198</table><table class="memberdecls">
199<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
200Additional Inherited Members</h2></td></tr>
201<tr class="inherit_header pub_types_classarmnn_1_1_i_backend_internal"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classarmnn_1_1_i_backend_internal')"><img src="closed.png" alt="-"/>&#160;Public Types inherited from <a class="el" href="classarmnn_1_1_i_backend_internal.html">IBackendInternal</a></td></tr>
202<tr class="memitem:a72ca1cf423bda4b0a9ffb789627126de inherit pub_types_classarmnn_1_1_i_backend_internal"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_internal.html#a72ca1cf423bda4b0a9ffb789627126de">IWorkloadFactoryPtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_workload_factory.html">IWorkloadFactory</a> &gt;</td></tr>
203<tr class="separator:a72ca1cf423bda4b0a9ffb789627126de inherit pub_types_classarmnn_1_1_i_backend_internal"><td class="memSeparator" colspan="2">&#160;</td></tr>
204<tr class="memitem:ada6d56575c0fe53cf23c7ae4610c6367 inherit pub_types_classarmnn_1_1_i_backend_internal"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_internal.html#ada6d56575c0fe53cf23c7ae4610c6367">IBackendContextPtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_backend_context.html">IBackendContext</a> &gt;</td></tr>
205<tr class="separator:ada6d56575c0fe53cf23c7ae4610c6367 inherit pub_types_classarmnn_1_1_i_backend_internal"><td class="memSeparator" colspan="2">&#160;</td></tr>
206<tr class="memitem:ae44a82b0e485e551a0f77150b1076e06 inherit pub_types_classarmnn_1_1_i_backend_internal"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_internal.html#ae44a82b0e485e551a0f77150b1076e06">IBackendProfilingContextPtr</a> = std::shared_ptr&lt; arm::pipe::IBackendProfilingContext &gt;</td></tr>
207<tr class="memdesc:ae44a82b0e485e551a0f77150b1076e06 inherit pub_types_classarmnn_1_1_i_backend_internal"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is the bridge between backend and backend profiling we'll keep it in the backend namespace. <a href="classarmnn_1_1_i_backend_internal.html#ae44a82b0e485e551a0f77150b1076e06">More...</a><br /></td></tr>
208<tr class="separator:ae44a82b0e485e551a0f77150b1076e06 inherit pub_types_classarmnn_1_1_i_backend_internal"><td class="memSeparator" colspan="2">&#160;</td></tr>
209<tr class="memitem:a335964abd41c91f7e6ef5c65865a7b98 inherit pub_types_classarmnn_1_1_i_backend_internal"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_internal.html#a335964abd41c91f7e6ef5c65865a7b98">IBackendProfilingPtr</a> = std::unique_ptr&lt; arm::pipe::IBackendProfiling &gt;</td></tr>
210<tr class="separator:a335964abd41c91f7e6ef5c65865a7b98 inherit pub_types_classarmnn_1_1_i_backend_internal"><td class="memSeparator" colspan="2">&#160;</td></tr>
211<tr class="memitem:a11fa919c11fe46aad613b2e960fcfe90 inherit pub_types_classarmnn_1_1_i_backend_internal"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_internal.html#a11fa919c11fe46aad613b2e960fcfe90">ILayerSupportSharedPtr</a> = std::shared_ptr&lt; <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> &gt;</td></tr>
212<tr class="separator:a11fa919c11fe46aad613b2e960fcfe90 inherit pub_types_classarmnn_1_1_i_backend_internal"><td class="memSeparator" colspan="2">&#160;</td></tr>
213<tr class="memitem:a4d0238968a7643dbb170547dd22bba54 inherit pub_types_classarmnn_1_1_i_backend_internal"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_internal.html#a4d0238968a7643dbb170547dd22bba54">IBackendSpecificModelContextPtr</a> = std::shared_ptr&lt; <a class="el" href="classarmnn_1_1_i_backend_model_context.html">IBackendModelContext</a> &gt;</td></tr>
214<tr class="separator:a4d0238968a7643dbb170547dd22bba54 inherit pub_types_classarmnn_1_1_i_backend_internal"><td class="memSeparator" colspan="2">&#160;</td></tr>
215<tr class="memitem:a12bff6d51d63dac1375c89bc8415dc46 inherit pub_types_classarmnn_1_1_i_backend_internal"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_internal.html#a12bff6d51d63dac1375c89bc8415dc46">IMemoryManagerUniquePtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_memory_manager.html">IMemoryManager</a> &gt;</td></tr>
216<tr class="separator:a12bff6d51d63dac1375c89bc8415dc46 inherit pub_types_classarmnn_1_1_i_backend_internal"><td class="memSeparator" colspan="2">&#160;</td></tr>
217<tr class="memitem:a693b40e6b94e958836aeb0410ca186bd inherit pub_types_classarmnn_1_1_i_backend_internal"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">IMemoryManagerSharedPtr</a> = std::shared_ptr&lt; <a class="el" href="classarmnn_1_1_i_memory_manager.html">IMemoryManager</a> &gt;</td></tr>
218<tr class="separator:a693b40e6b94e958836aeb0410ca186bd inherit pub_types_classarmnn_1_1_i_backend_internal"><td class="memSeparator" colspan="2">&#160;</td></tr>
219<tr class="inherit_header pro_methods_classarmnn_1_1_i_backend_internal"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classarmnn_1_1_i_backend_internal')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classarmnn_1_1_i_backend_internal.html">IBackendInternal</a></td></tr>
220<tr class="memitem:a675fed08e681be4343fb09ae73eb7641 inherit pro_methods_classarmnn_1_1_i_backend_internal"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_internal.html#a675fed08e681be4343fb09ae73eb7641">IBackendInternal</a> ()=default</td></tr>
221<tr class="memdesc:a675fed08e681be4343fb09ae73eb7641 inherit pro_methods_classarmnn_1_1_i_backend_internal"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creation must be done through a specific backend interface. <a href="classarmnn_1_1_i_backend_internal.html#a675fed08e681be4343fb09ae73eb7641">More...</a><br /></td></tr>
222<tr class="separator:a675fed08e681be4343fb09ae73eb7641 inherit pro_methods_classarmnn_1_1_i_backend_internal"><td class="memSeparator" colspan="2">&#160;</td></tr>
223<tr class="inherit_header pro_methods_classarmnn_1_1_i_backend"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classarmnn_1_1_i_backend')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classarmnn_1_1_i_backend.html">IBackend</a></td></tr>
224<tr class="memitem:a7cfc55eae265fa65b7d25e7dd3203f22 inherit pro_methods_classarmnn_1_1_i_backend"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend.html#a7cfc55eae265fa65b7d25e7dd3203f22">IBackend</a> ()</td></tr>
225<tr class="separator:a7cfc55eae265fa65b7d25e7dd3203f22 inherit pro_methods_classarmnn_1_1_i_backend"><td class="memSeparator" colspan="2">&#160;</td></tr>
226<tr class="memitem:aa73289e0503a4f7ec5909e117a57aa2b inherit pro_methods_classarmnn_1_1_i_backend"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend.html#aa73289e0503a4f7ec5909e117a57aa2b">~IBackend</a> ()</td></tr>
227<tr class="separator:aa73289e0503a4f7ec5909e117a57aa2b inherit pro_methods_classarmnn_1_1_i_backend"><td class="memSeparator" colspan="2">&#160;</td></tr>
228</table>
229<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
230<div class="textblock">
231<p class="definition">Definition at line <a class="el" href="_ref_backend_8hpp_source.html#l00030">30</a> of file <a class="el" href="_ref_backend_8hpp_source.html">RefBackend.hpp</a>.</p>
232</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
233<a id="a57ed562a609099926af1f9b4ae7c0fee"></a>
234<h2 class="memtitle"><span class="permalink"><a href="#a57ed562a609099926af1f9b4ae7c0fee">&#9670;&nbsp;</a></span>RefBackend()</h2>
235
236<div class="memitem">
237<div class="memproto">
238<table class="mlabels">
239 <tr>
240 <td class="mlabels-left">
241 <table class="memname">
242 <tr>
243 <td class="memname"><a class="el" href="classarmnn_1_1_ref_backend.html">RefBackend</a> </td>
244 <td>(</td>
245 <td class="paramname"></td><td>)</td>
246 <td></td>
247 </tr>
248 </table>
249 </td>
250 <td class="mlabels-right">
251<span class="mlabels"><span class="mlabel">default</span></span> </td>
252 </tr>
253</table>
254</div><div class="memdoc">
255
256</div>
257</div>
258<a id="ae9d9d836f0915de82f45a07f6a77d18c"></a>
259<h2 class="memtitle"><span class="permalink"><a href="#ae9d9d836f0915de82f45a07f6a77d18c">&#9670;&nbsp;</a></span>~RefBackend()</h2>
260
261<div class="memitem">
262<div class="memproto">
263<table class="mlabels">
264 <tr>
265 <td class="mlabels-left">
266 <table class="memname">
267 <tr>
268 <td class="memname">~<a class="el" href="classarmnn_1_1_ref_backend.html">RefBackend</a> </td>
269 <td>(</td>
270 <td class="paramname"></td><td>)</td>
271 <td></td>
272 </tr>
273 </table>
274 </td>
275 <td class="mlabels-right">
276<span class="mlabels"><span class="mlabel">default</span></span> </td>
277 </tr>
278</table>
279</div><div class="memdoc">
280
281</div>
282</div>
283<h2 class="groupheader">Member Function Documentation</h2>
284<a id="a801cf3170dc777aca3e6f926d1bd70a5"></a>
285<h2 class="memtitle"><span class="permalink"><a href="#a801cf3170dc777aca3e6f926d1bd70a5">&#9670;&nbsp;</a></span>CreateBackendContext()</h2>
286
287<div class="memitem">
288<div class="memproto">
289<table class="mlabels">
290 <tr>
291 <td class="mlabels-left">
292 <table class="memname">
293 <tr>
294 <td class="memname"><a class="el" href="classarmnn_1_1_i_backend_internal.html#ada6d56575c0fe53cf23c7ae4610c6367">IBackendInternal::IBackendContextPtr</a> CreateBackendContext </td>
295 <td>(</td>
296 <td class="paramtype">const <a class="el" href="structarmnn_1_1_i_runtime_1_1_creation_options.html">IRuntime::CreationOptions</a> &amp;&#160;</td>
297 <td class="paramname"></td><td>)</td>
298 <td> const</td>
299 </tr>
300 </table>
301 </td>
302 <td class="mlabels-right">
303<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
304 </tr>
305</table>
306</div><div class="memdoc">
307
308<p>Create the runtime context of the backend. </p>
309<p>Implementations may return a default-constructed IBackendContextPtr if no context is needed at runtime. Implementations must throw <a class="el" href="classarmnn_1_1_backend_unavailable_exception.html" title="Class for non-fatal exceptions raised while initialising a backend.">BackendUnavailableException</a> if the backend cannot be used (for example, necessary accelerator hardware is not present). The default implementation always returns a default-constructed pointer. </p>
310
311<p>Reimplemented from <a class="el" href="classarmnn_1_1_i_backend_internal.html#a07a1b3f9ac897364b5c2aacc227cbebc">IBackendInternal</a>.</p>
312
313<p class="definition">Definition at line <a class="el" href="_ref_backend_8cpp_source.html#l00050">50</a> of file <a class="el" href="_ref_backend_8cpp_source.html">RefBackend.cpp</a>.</p>
314<div class="fragment"><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;{</div>
315<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_backend_internal.html#ada6d56575c0fe53cf23c7ae4610c6367">IBackendContextPtr</a>{};</div>
316<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div>
317</div><!-- fragment -->
318</div>
319</div>
320<a id="ac2480fbc4ae790e2e64f55d78b7f31a0"></a>
321<h2 class="memtitle"><span class="permalink"><a href="#ac2480fbc4ae790e2e64f55d78b7f31a0">&#9670;&nbsp;</a></span>CreateBackendProfilingContext()</h2>
322
323<div class="memitem">
324<div class="memproto">
325<table class="mlabels">
326 <tr>
327 <td class="mlabels-left">
328 <table class="memname">
329 <tr>
330 <td class="memname"><a class="el" href="classarmnn_1_1_i_backend_internal.html#ae44a82b0e485e551a0f77150b1076e06">IBackendInternal::IBackendProfilingContextPtr</a> CreateBackendProfilingContext </td>
331 <td>(</td>
332 <td class="paramtype">const <a class="el" href="structarmnn_1_1_i_runtime_1_1_creation_options.html">IRuntime::CreationOptions</a> &amp;&#160;</td>
333 <td class="paramname"><em>creationOptions</em>, </td>
334 </tr>
335 <tr>
336 <td class="paramkey"></td>
337 <td></td>
338 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_backend_internal.html#a335964abd41c91f7e6ef5c65865a7b98">IBackendProfilingPtr</a> &amp;&#160;</td>
339 <td class="paramname"><em>backendProfiling</em>&#160;</td>
340 </tr>
341 <tr>
342 <td></td>
343 <td>)</td>
344 <td></td><td></td>
345 </tr>
346 </table>
347 </td>
348 <td class="mlabels-right">
349<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
350 </tr>
351</table>
352</div><div class="memdoc">
353
354<p>Create context specifically used for profiling interaction from backends. </p>
355
356<p>Reimplemented from <a class="el" href="classarmnn_1_1_i_backend_internal.html#a6c5064ef6323af5c547674d01b15d7ab">IBackendInternal</a>.</p>
357
358<p class="definition">Definition at line <a class="el" href="_ref_backend_8cpp_source.html#l00055">55</a> of file <a class="el" href="_ref_backend_8cpp_source.html">RefBackend.cpp</a>.</p>
359<div class="fragment"><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;{</div>
360<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_backend_internal.html#ae44a82b0e485e551a0f77150b1076e06">IBackendProfilingContextPtr</a>{};</div>
361<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;}</div>
362</div><!-- fragment -->
363</div>
364</div>
365<a id="a8ca4e60571661905a5c0f63389991251"></a>
366<h2 class="memtitle"><span class="permalink"><a href="#a8ca4e60571661905a5c0f63389991251">&#9670;&nbsp;</a></span>CreateExecutionData()</h2>
367
368<div class="memitem">
369<div class="memproto">
370<table class="mlabels">
371 <tr>
372 <td class="mlabels-left">
373 <table class="memname">
374 <tr>
375 <td class="memname"><a class="el" href="structarmnn_1_1experimental_1_1_execution_data.html">ExecutionData</a> CreateExecutionData </td>
376 <td>(</td>
377 <td class="paramtype"><a class="el" href="structarmnn_1_1experimental_1_1_working_mem_descriptor.html">WorkingMemDescriptor</a> &amp;&#160;</td>
378 <td class="paramname"><em>workingMemDescriptor</em></td><td>)</td>
379 <td> const</td>
380 </tr>
381 </table>
382 </td>
383 <td class="mlabels-right">
384<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
385 </tr>
386</table>
387</div><div class="memdoc">
388
389<p>Returns ExecutionData for the backend. </p>
390<dl class="params"><dt>Parameters</dt><dd>
391 <table class="params">
392 <tr><td class="paramname">workingMemDescriptor</td><td>- Vectors of input and output TensorHandles for a layer </td></tr>
393 </table>
394 </dd>
395</dl>
396<dl class="section return"><dt>Returns</dt><dd>- Returns backend specific ExecutionData generated for a layer </dd></dl>
397
398<p>Reimplemented from <a class="el" href="classarmnn_1_1_i_backend_internal.html#a86a4b2845b0da158907d657c7b147ab0">IBackendInternal</a>.</p>
399
400<p class="definition">Definition at line <a class="el" href="_ref_backend_8cpp_source.html#l00162">162</a> of file <a class="el" href="_ref_backend_8cpp_source.html">RefBackend.cpp</a>.</p>
401<div class="fragment"><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;{</div>
402<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; ExecutionData executionData;</div>
403<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; executionData.m_Data = &amp;workingMemDescriptor;</div>
404<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">return</span> executionData;</div>
405<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;}</div>
406</div><!-- fragment -->
407<p class="reference">References <a class="el" href="_execution_data_8hpp_source.html#l00016">ExecutionData::m_Data</a>.</p>
408
409</div>
410</div>
411<a id="a93fcb3bff141d8c77b53466a44b58eee"></a>
412<h2 class="memtitle"><span class="permalink"><a href="#a93fcb3bff141d8c77b53466a44b58eee">&#9670;&nbsp;</a></span>CreateMemoryManager()</h2>
413
414<div class="memitem">
415<div class="memproto">
416<table class="mlabels">
417 <tr>
418 <td class="mlabels-left">
419 <table class="memname">
420 <tr>
421 <td class="memname"><a class="el" href="classarmnn_1_1_i_backend_internal.html#a12bff6d51d63dac1375c89bc8415dc46">IBackendInternal::IMemoryManagerUniquePtr</a> CreateMemoryManager </td>
422 <td>(</td>
423 <td class="paramname"></td><td>)</td>
424 <td> const</td>
425 </tr>
426 </table>
427 </td>
428 <td class="mlabels-right">
429<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
430 </tr>
431</table>
432</div><div class="memdoc">
433
434<p>Reimplemented from <a class="el" href="classarmnn_1_1_i_backend_internal.html#a0fe4c12c8f1f0722d2a91f61c02a687a">IBackendInternal</a>.</p>
435
436<p class="definition">Definition at line <a class="el" href="_ref_backend_8cpp_source.html#l00061">61</a> of file <a class="el" href="_ref_backend_8cpp_source.html">RefBackend.cpp</a>.</p>
437<div class="fragment"><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;{</div>
438<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;RefMemoryManager&gt;();</div>
439<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;}</div>
440</div><!-- fragment -->
441</div>
442</div>
443<a id="afb0e4b4255c996c68fe87e3c13451a43"></a>
444<h2 class="memtitle"><span class="permalink"><a href="#afb0e4b4255c996c68fe87e3c13451a43">&#9670;&nbsp;</a></span>CreateWorkloadFactory() <span class="overload">[1/2]</span></h2>
445
446<div class="memitem">
447<div class="memproto">
448<table class="mlabels">
449 <tr>
450 <td class="mlabels-left">
451 <table class="memname">
452 <tr>
453 <td class="memname"><a class="el" href="classarmnn_1_1_i_backend_internal.html#a72ca1cf423bda4b0a9ffb789627126de">IBackendInternal::IWorkloadFactoryPtr</a> CreateWorkloadFactory </td>
454 <td>(</td>
455 <td class="paramtype">class <a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
456 <td class="paramname"><em>tensorHandleFactoryRegistry</em></td><td>)</td>
457 <td> const</td>
458 </tr>
459 </table>
460 </td>
461 <td class="mlabels-right">
462<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
463 </tr>
464</table>
465</div><div class="memdoc">
466
467<p>Reimplemented from <a class="el" href="classarmnn_1_1_i_backend_internal.html#a41c5c170ef6708c1efc683d900f624ff">IBackendInternal</a>.</p>
468
469<p class="definition">Definition at line <a class="el" href="_ref_backend_8cpp_source.html#l00034">34</a> of file <a class="el" href="_ref_backend_8cpp_source.html">RefBackend.cpp</a>.</p>
470<div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div>
471<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">auto</span> memoryManager = std::make_shared&lt;RefMemoryManager&gt;();</div>
472<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; </div>
473<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; tensorHandleFactoryRegistry.RegisterMemoryManager(memoryManager);</div>
474<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; </div>
475<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; std::unique_ptr&lt;RefTensorHandleFactory&gt; factory = std::make_unique&lt;RefTensorHandleFactory&gt;(memoryManager);</div>
476<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">// Register copy and import factory pair</span></div>
477<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; tensorHandleFactoryRegistry.RegisterCopyAndImportFactoryPair(factory-&gt;GetId(), factory-&gt;GetId());</div>
478<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="comment">// Register the factory</span></div>
479<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; tensorHandleFactoryRegistry.RegisterFactory(std::move(factory));</div>
480<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; </div>
481<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;RefWorkloadFactory&gt;(PolymorphicPointerDowncast&lt;RefMemoryManager&gt;(memoryManager));</div>
482<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div>
483</div><!-- fragment -->
484<p class="reference">References <a class="el" href="_tensor_handle_factory_registry_8cpp_source.html#l00066">TensorHandleFactoryRegistry::RegisterCopyAndImportFactoryPair()</a>, <a class="el" href="_tensor_handle_factory_registry_8cpp_source.html#l00012">TensorHandleFactoryRegistry::RegisterFactory()</a>, and <a class="el" href="_tensor_handle_factory_registry_8cpp_source.html#l00034">TensorHandleFactoryRegistry::RegisterMemoryManager()</a>.</p>
485
486</div>
487</div>
488<a id="a8e19e275c8162e34e6d8d10a9245dbc9"></a>
489<h2 class="memtitle"><span class="permalink"><a href="#a8e19e275c8162e34e6d8d10a9245dbc9">&#9670;&nbsp;</a></span>CreateWorkloadFactory() <span class="overload">[2/2]</span></h2>
490
491<div class="memitem">
492<div class="memproto">
493<table class="mlabels">
494 <tr>
495 <td class="mlabels-left">
496 <table class="memname">
497 <tr>
498 <td class="memname"><a class="el" href="classarmnn_1_1_i_backend_internal.html#a72ca1cf423bda4b0a9ffb789627126de">IBackendInternal::IWorkloadFactoryPtr</a> CreateWorkloadFactory </td>
499 <td>(</td>
500 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
501 <td class="paramname"><em>memoryManager</em> = <code>nullptr</code></td><td>)</td>
502 <td> const</td>
503 </tr>
504 </table>
505 </td>
506 <td class="mlabels-right">
507<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
508 </tr>
509</table>
510</div><div class="memdoc">
511
512<p>Implements <a class="el" href="classarmnn_1_1_i_backend_internal.html#afd5a5e90515b31c0174f76ec8897e9b1">IBackendInternal</a>.</p>
513
514<p class="definition">Definition at line <a class="el" href="_ref_backend_8cpp_source.html#l00028">28</a> of file <a class="el" href="_ref_backend_8cpp_source.html">RefBackend.cpp</a>.</p>
515<div class="fragment"><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;{</div>
516<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;RefWorkloadFactory&gt;(PolymorphicPointerDowncast&lt;RefMemoryManager&gt;(memoryManager));</div>
517<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}</div>
518</div><!-- fragment -->
519</div>
520</div>
521<a id="ab9199ff425571ba62412bb903c2c933e"></a>
522<h2 class="memtitle"><span class="permalink"><a href="#ab9199ff425571ba62412bb903c2c933e">&#9670;&nbsp;</a></span>GetCapabilities()</h2>
523
524<div class="memitem">
525<div class="memproto">
526<table class="mlabels">
527 <tr>
528 <td class="mlabels-left">
529 <table class="memname">
530 <tr>
531 <td class="memname"><a class="el" href="namespacearmnn.html#aa9c506b558b8aa33a228b15164f40dc3">BackendCapabilities</a> GetCapabilities </td>
532 <td>(</td>
533 <td class="paramname"></td><td>)</td>
534 <td> const</td>
535 </tr>
536 </table>
537 </td>
538 <td class="mlabels-right">
539<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
540 </tr>
541</table>
542</div><div class="memdoc">
543
544<p>Returns a BackendCapability if the backend lists the capability The BackendCapability must then be inspected to check whether or not that BackendCapability is supported Otherwise returns an <a class="el" href="structarmnn_1_1_empty_optional.html" title="EmptyOptional is used to initialize the Optional class in case we want to have default value for an O...">EmptyOptional</a> if the BackendCapability is unlisted. </p>
545
546<p>Reimplemented from <a class="el" href="classarmnn_1_1_i_backend_internal.html#a057f6c5c3ab3248050ed548273c4beb9">IBackendInternal</a>.</p>
547
548<p class="definition">Definition at line <a class="el" href="_ref_backend_8hpp_source.html#l00061">61</a> of file <a class="el" href="_ref_backend_8hpp_source.html">RefBackend.hpp</a>.</p>
549<div class="fragment"><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; {</div>
550<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a35f80da9b1316b2d338f4615906ef30d">cpuRefCapabilities</a>;</div>
551<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; };</div>
552</div><!-- fragment -->
553<p class="reference">References <a class="el" href="namespacearmnn.html#a35f80da9b1316b2d338f4615906ef30d">armnn::cpuRefCapabilities</a>.</p>
554
555</div>
556</div>
557<a id="afb75bad43612f5314622c4fa8a16e63d"></a>
558<h2 class="memtitle"><span class="permalink"><a href="#afb75bad43612f5314622c4fa8a16e63d">&#9670;&nbsp;</a></span>GetDefaultAllocator()</h2>
559
560<div class="memitem">
561<div class="memproto">
562<table class="mlabels">
563 <tr>
564 <td class="mlabels-left">
565 <table class="memname">
566 <tr>
567 <td class="memname">std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_custom_allocator.html">ICustomAllocator</a> &gt; GetDefaultAllocator </td>
568 <td>(</td>
569 <td class="paramname"></td><td>)</td>
570 <td> const</td>
571 </tr>
572 </table>
573 </td>
574 <td class="mlabels-right">
575<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
576 </tr>
577</table>
578</div><div class="memdoc">
579
580<p>Returns the default memory allocator for the backend. </p>
581<dl class="section return"><dt>Returns</dt><dd>- Returns unique pointer to the Default <a class="el" href="structarmnn_1_1_allocator.html">Allocator</a> of the Backend </dd></dl>
582
583<p>Reimplemented from <a class="el" href="classarmnn_1_1_i_backend_internal.html#a563472222884844adc3183c433f38e54">IBackendInternal</a>.</p>
584
585<p class="definition">Definition at line <a class="el" href="_ref_backend_8cpp_source.html#l00157">157</a> of file <a class="el" href="_ref_backend_8cpp_source.html">RefBackend.cpp</a>.</p>
586<div class="fragment"><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;{</div>
587<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;DefaultAllocator&gt;();</div>
588<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;}</div>
589</div><!-- fragment -->
590</div>
591</div>
592<a id="a63559c7f206c265f5fff5ffcc8a58e3e"></a>
593<h2 class="memtitle"><span class="permalink"><a href="#a63559c7f206c265f5fff5ffcc8a58e3e">&#9670;&nbsp;</a></span>GetHandleFactoryPreferences()</h2>
594
595<div class="memitem">
596<div class="memproto">
597<table class="mlabels">
598 <tr>
599 <td class="mlabels-left">
600 <table class="memname">
601 <tr>
602 <td class="memname">std::vector&lt; <a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> &gt; GetHandleFactoryPreferences </td>
603 <td>(</td>
604 <td class="paramname"></td><td>)</td>
605 <td> const</td>
606 </tr>
607 </table>
608 </td>
609 <td class="mlabels-right">
610<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
611 </tr>
612</table>
613</div><div class="memdoc">
614
615<p>(<a class="el" href="classarmnn_1_1_optional.html">Optional</a>) Returns a vector of supported TensorHandleFactory ids in preference order. </p>
616
617<p>Reimplemented from <a class="el" href="classarmnn_1_1_i_backend_internal.html#ac5d107c5672f446603b6e6b92bce6244">IBackendInternal</a>.</p>
618
619<p class="definition">Definition at line <a class="el" href="_ref_backend_8cpp_source.html#l00138">138</a> of file <a class="el" href="_ref_backend_8cpp_source.html">RefBackend.cpp</a>.</p>
620<div class="fragment"><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;{</div>
621<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">return</span> std::vector&lt;ITensorHandleFactory::FactoryId&gt; { <a class="code" href="classarmnn_1_1_ref_tensor_handle_factory.html#acdecb5b442434112c2cc8fc48c0ea922">RefTensorHandleFactory::GetIdStatic</a>() };</div>
622<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;}</div>
623</div><!-- fragment -->
624<p class="reference">References <a class="el" href="_ref_tensor_handle_factory_8cpp_source.html#l00016">RefTensorHandleFactory::GetIdStatic()</a>.</p>
625
626</div>
627</div>
628<a id="a6c6c3d137a7792e264a89cc40ea94bb0"></a>
629<h2 class="memtitle"><span class="permalink"><a href="#a6c6c3d137a7792e264a89cc40ea94bb0">&#9670;&nbsp;</a></span>GetId()</h2>
630
631<div class="memitem">
632<div class="memproto">
633<table class="mlabels">
634 <tr>
635 <td class="mlabels-left">
636 <table class="memname">
637 <tr>
638 <td class="memname">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a>&amp; GetId </td>
639 <td>(</td>
640 <td class="paramname"></td><td>)</td>
641 <td> const</td>
642 </tr>
643 </table>
644 </td>
645 <td class="mlabels-right">
646<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
647 </tr>
648</table>
649</div><div class="memdoc">
650
651<p>Implements <a class="el" href="classarmnn_1_1_i_backend.html#aa9fc23b7155bd678232eeb351059b748">IBackend</a>.</p>
652
653<p class="definition">Definition at line <a class="el" href="_ref_backend_8hpp_source.html#l00037">37</a> of file <a class="el" href="_ref_backend_8hpp_source.html">RefBackend.hpp</a>.</p>
654<div class="fragment"><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;{ <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_ref_backend.html#a177af502214bbc8123fbb4a3c4f0a1b8">GetIdStatic</a>(); }</div>
655</div><!-- fragment -->
656<p class="reference">References <a class="el" href="_ref_backend_8cpp_source.html#l00022">RefBackend::GetIdStatic()</a>.</p>
657
658</div>
659</div>
660<a id="a177af502214bbc8123fbb4a3c4f0a1b8"></a>
661<h2 class="memtitle"><span class="permalink"><a href="#a177af502214bbc8123fbb4a3c4f0a1b8">&#9670;&nbsp;</a></span>GetIdStatic()</h2>
662
663<div class="memitem">
664<div class="memproto">
665<table class="mlabels">
666 <tr>
667 <td class="mlabels-left">
668 <table class="memname">
669 <tr>
670 <td class="memname">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp; GetIdStatic </td>
671 <td>(</td>
672 <td class="paramname"></td><td>)</td>
673 <td></td>
674 </tr>
675 </table>
676 </td>
677 <td class="mlabels-right">
678<span class="mlabels"><span class="mlabel">static</span></span> </td>
679 </tr>
680</table>
681</div><div class="memdoc">
682
683<p class="definition">Definition at line <a class="el" href="_ref_backend_8cpp_source.html#l00022">22</a> of file <a class="el" href="_ref_backend_8cpp_source.html">RefBackend.cpp</a>.</p>
684<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div>
685<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> BackendId s_Id{<a class="code" href="namespacearmnn.html#ae7d50846b2769f81521af24d063bc093">RefBackendId</a>()};</div>
686<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> s_Id;</div>
687<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;}</div>
688</div><!-- fragment -->
689<p class="reference">References <a class="el" href="_ref_backend_id_8hpp_source.html#l00010">armnn::RefBackendId()</a>.</p>
690
691<p class="reference">Referenced by <a class="el" href="_ref_dynamic_backend_8cpp_source.html#l00012">GetBackendId()</a>, and <a class="el" href="_ref_backend_8hpp_source.html#l00037">RefBackend::GetId()</a>.</p>
692
693</div>
694</div>
695<a id="a93d4285a3ea5e4e3b35578484d889daa"></a>
696<h2 class="memtitle"><span class="permalink"><a href="#a93d4285a3ea5e4e3b35578484d889daa">&#9670;&nbsp;</a></span>GetLayerSupport()</h2>
697
698<div class="memitem">
699<div class="memproto">
700<table class="mlabels">
701 <tr>
702 <td class="mlabels-left">
703 <table class="memname">
704 <tr>
705 <td class="memname"><a class="el" href="classarmnn_1_1_i_backend_internal.html#a11fa919c11fe46aad613b2e960fcfe90">IBackendInternal::ILayerSupportSharedPtr</a> GetLayerSupport </td>
706 <td>(</td>
707 <td class="paramname"></td><td>)</td>
708 <td> const</td>
709 </tr>
710 </table>
711 </td>
712 <td class="mlabels-right">
713<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
714 </tr>
715</table>
716</div><div class="memdoc">
717
718<p>Implements <a class="el" href="classarmnn_1_1_i_backend_internal.html#ad86597efa7c25997572c80dc29f3104a">IBackendInternal</a>.</p>
719
720<p class="definition">Definition at line <a class="el" href="_ref_backend_8cpp_source.html#l00066">66</a> of file <a class="el" href="_ref_backend_8cpp_source.html">RefBackend.cpp</a>.</p>
721<div class="fragment"><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;{</div>
722<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keyword">static</span> <a class="code" href="classarmnn_1_1_i_backend_internal.html#a11fa919c11fe46aad613b2e960fcfe90">ILayerSupportSharedPtr</a> layerSupport{<span class="keyword">new</span> RefLayerSupport};</div>
723<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> layerSupport;</div>
724<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;}</div>
725</div><!-- fragment -->
726</div>
727</div>
728<a id="a339efc194a1738cd93fcdde4d948a5cd"></a>
729<h2 class="memtitle"><span class="permalink"><a href="#a339efc194a1738cd93fcdde4d948a5cd">&#9670;&nbsp;</a></span>OptimizeSubgraphView()</h2>
730
731<div class="memitem">
732<div class="memproto">
733<table class="mlabels">
734 <tr>
735 <td class="mlabels-left">
736 <table class="memname">
737 <tr>
738 <td class="memname"><a class="el" href="classarmnn_1_1_optimization_views.html">OptimizationViews</a> OptimizeSubgraphView </td>
739 <td>(</td>
740 <td class="paramtype">const <a class="el" href="classarmnn_1_1_subgraph_view.html">SubgraphView</a> &amp;&#160;</td>
741 <td class="paramname"><em>subgraph</em>, </td>
742 </tr>
743 <tr>
744 <td class="paramkey"></td>
745 <td></td>
746 <td class="paramtype">const <a class="el" href="namespacearmnn.html#a5b6893cda5b69359a4244c06054da18f">ModelOptions</a> &amp;&#160;</td>
747 <td class="paramname"><em>modelOptions</em>&#160;</td>
748 </tr>
749 <tr>
750 <td></td>
751 <td>)</td>
752 <td></td><td> const</td>
753 </tr>
754 </table>
755 </td>
756 <td class="mlabels-right">
757<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
758 </tr>
759</table>
760</div><div class="memdoc">
761
762<p>Reimplemented from <a class="el" href="classarmnn_1_1_i_backend_internal.html#a3623ac8294bf071d68eb7d71383e9a83">IBackendInternal</a>.</p>
763
764<p class="definition">Definition at line <a class="el" href="_ref_backend_8cpp_source.html#l00072">72</a> of file <a class="el" href="_ref_backend_8cpp_source.html">RefBackend.cpp</a>.</p>
765<div class="fragment"><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;{</div>
766<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; OptimizationViews optimizationViews(modelOptions);</div>
767<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; </div>
768<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keyword">auto</span> it = subgraph.end();</div>
769<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; std::map&lt;LayerGuid, Layer*&gt; untouched;</div>
770<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; </div>
771<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">while</span> (it != subgraph.begin())</div>
772<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; {</div>
773<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; --it;</div>
774<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; Layer&amp; base = *(PolymorphicDowncast&lt;Layer*&gt;(*it));</div>
775<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; untouched.insert({base.GetGuid(), &amp;base});</div>
776<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div>
777<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; </div>
778<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; it = subgraph.end();</div>
779<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">while</span> (it != subgraph.begin())</div>
780<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; {</div>
781<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; --it;</div>
782<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; Layer&amp; base = *(PolymorphicDowncast&lt;Layer*&gt;(*it));</div>
783<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; </div>
784<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="comment">// Special case to fuse padding into average pooling 2d for quantized datatype.</span></div>
785<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="comment">// Required to be done as a backend specific optimization as Neon does not support this special case.</span></div>
786<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">if</span> (base.GetType() == <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ad662867a41bfb30b9f75dda2b5849001">LayerType::Pooling2d</a>)</div>
787<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div>
788<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; Pooling2dLayer* baseLayer = PolymorphicDowncast&lt;Pooling2dLayer*&gt;(&amp;base);</div>
789<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="namespacearmnn_deserializer.html#a7e75f47f676327bce37149932aa4a011">Pooling2dDescriptor</a> poolingDescriptor = baseLayer-&gt;GetParameters();</div>
790<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; </div>
791<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">if</span> (baseLayer-&gt;GetInputSlot(0).GetConnectedOutputSlot()-&gt;GetOwningLayer().GetType() == <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ade43468adaf6acb2c38ebc0c1176f82f">LayerType::Pad</a>)</div>
792<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; {</div>
793<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; PadLayer* padLayer = PolymorphicDowncast&lt;PadLayer*&gt;(</div>
794<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; &amp;baseLayer-&gt;GetInputSlot(0).GetConnectedOutputSlot()-&gt;GetOwningLayer());</div>
795<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">if</span> (padLayer-&gt;GetOutputSlot(0).GetNumConnections() == 1 &amp;&amp;</div>
796<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations_1_1pad__fold.html#a33ffc65d1f6581b0789d3d3a033f698e">optimizations::pad_fold::TryFoldPadIntoLayer2d</a>(padLayer-&gt;GetParameters(),</div>
797<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; poolingDescriptor,</div>
798<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; padLayer-&gt;GetOutputSlot().GetTensorInfo(),</div>
799<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keyword">true</span>))</div>
800<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div>
801<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; FoldPadIntoAveragePool2d&lt;Pooling2dLayer&gt;(optimizationViews, baseLayer,</div>
802<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; poolingDescriptor, padLayer);</div>
803<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; untouched.erase(baseLayer-&gt;GetGuid());</div>
804<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; untouched.erase(padLayer-&gt;GetGuid());</div>
805<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div>
806<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div>
807<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div>
808<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; </div>
809<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="comment">// Remove Reshape where possible</span></div>
810<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span> (base.GetType() == <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa7c59ccedc6a3bd90c17f3b990afefad">LayerType::Reshape</a>)</div>
811<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div>
812<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; ReshapeLayer* baseLayer = PolymorphicDowncast&lt;ReshapeLayer*&gt;(&amp;base);</div>
813<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="namespacearmnn.html#ae756568a7f2c58778bb6d759d2bd38db">RemoveReshapeLayer</a>(baseLayer, untouched, optimizationViews);</div>
814<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div>
815<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div>
816<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; </div>
817<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">if</span> (optimizationViews.GetSubstitutions().empty() &amp;&amp; optimizationViews.GetDeletedSubgraphs().empty())</div>
818<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div>
819<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; optimizationViews.AddUntouchedSubgraph(SubgraphView(subgraph));</div>
820<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div>
821<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">else</span></div>
822<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; {</div>
823<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="namespacearmnn.html#a5afd10e5e84ebf5cb8cfc8707492eda7">ReportUntouchedLayers</a>(optimizationViews, untouched);</div>
824<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div>
825<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; </div>
826<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">return</span> optimizationViews;</div>
827<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;}</div>
828</div><!-- fragment -->
829<p class="reference">References <a class="el" href="_optimization_views_8hpp_source.html#l00048">OptimizationViews::AddUntouchedSubgraph()</a>, <a class="el" href="_subgraph_view_8cpp_source.html#l00286">SubgraphView::begin()</a>, <a class="el" href="_subgraph_view_8cpp_source.html#l00291">SubgraphView::end()</a>, <a class="el" href="_layer_8hpp_source.html#l00056">InputSlot::GetConnectedOutputSlot()</a>, <a class="el" href="_optimization_views_8hpp_source.html#l00061">OptimizationViews::GetDeletedSubgraphs()</a>, <a class="el" href="_layer_8hpp_source.html#l00343">Layer::GetGuid()</a>, <a class="el" href="_layer_8hpp_source.html#l00337">Layer::GetInputSlot()</a>, <a class="el" href="_layer_8hpp_source.html#l00158">OutputSlot::GetNumConnections()</a>, <a class="el" href="_layer_8hpp_source.html#l00339">Layer::GetOutputSlot()</a>, <a class="el" href="_layer_8hpp_source.html#l00132">OutputSlot::GetOwningLayer()</a>, <a class="el" href="_layer_with_parameters_8hpp_source.html#l00019">LayerWithParameters&lt; Parameters &gt;::GetParameters()</a>, <a class="el" href="_optimization_views_8hpp_source.html#l00058">OptimizationViews::GetSubstitutions()</a>, <a class="el" href="_layer_8cpp_source.html#l00100">OutputSlot::GetTensorInfo()</a>, <a class="el" href="_layer_8hpp_source.html#l00286">Layer::GetType()</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ade43468adaf6acb2c38ebc0c1176f82f">armnn::Pad</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ad662867a41bfb30b9f75dda2b5849001">armnn::Pooling2d</a>, <a class="el" href="_subgraph_utils_8hpp_source.html#l00293">armnn::RemoveReshapeLayer()</a>, <a class="el" href="_subgraph_utils_8hpp_source.html#l00220">armnn::ReportUntouchedLayers()</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa7c59ccedc6a3bd90c17f3b990afefad">armnn::Reshape</a>, and <a class="el" href="_fold_pad_into_layer2d_8hpp_source.html#l00088">armnn::optimizations::pad_fold::TryFoldPadIntoLayer2d()</a>.</p>
830
831</div>
832</div>
833<a id="a583bc4404a9d27ee1f8c46239637125d"></a>
834<h2 class="memtitle"><span class="permalink"><a href="#a583bc4404a9d27ee1f8c46239637125d">&#9670;&nbsp;</a></span>RegisterTensorHandleFactories()</h2>
835
836<div class="memitem">
837<div class="memproto">
838<table class="mlabels">
839 <tr>
840 <td class="mlabels-left">
841 <table class="memname">
842 <tr>
843 <td class="memname">void RegisterTensorHandleFactories </td>
844 <td>(</td>
845 <td class="paramtype">class <a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
846 <td class="paramname"></td><td>)</td>
847 <td></td>
848 </tr>
849 </table>
850 </td>
851 <td class="mlabels-right">
852<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
853 </tr>
854</table>
855</div><div class="memdoc">
856
857<p>(<a class="el" href="classarmnn_1_1_optional.html">Optional</a>) Register TensorHandleFactories Either this method or <a class="el" href="classarmnn_1_1_ref_backend.html#a93fcb3bff141d8c77b53466a44b58eee">CreateMemoryManager()</a> and IWorkloadFactory::CreateTensor() IWorkloadFactory::CreateSubtensor() methods must be implemented. </p>
858
859<p>Reimplemented from <a class="el" href="classarmnn_1_1_i_backend_internal.html#a517bc1a44d6d2d7a45c1847fba287135">IBackendInternal</a>.</p>
860
861<p class="definition">Definition at line <a class="el" href="_ref_backend_8cpp_source.html#l00143">143</a> of file <a class="el" href="_ref_backend_8cpp_source.html">RefBackend.cpp</a>.</p>
862<div class="fragment"><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;{</div>
863<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keyword">auto</span> memoryManager = std::make_shared&lt;RefMemoryManager&gt;();</div>
864<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; </div>
865<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; registry.RegisterMemoryManager(memoryManager);</div>
866<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; </div>
867<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; std::unique_ptr&lt;RefTensorHandleFactory&gt; factory = std::make_unique&lt;RefTensorHandleFactory&gt;(memoryManager);</div>
868<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; </div>
869<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="comment">// Register copy and import factory pair</span></div>
870<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; registry.RegisterCopyAndImportFactoryPair(factory-&gt;GetId(), factory-&gt;GetId());</div>
871<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="comment">// Register the factory</span></div>
872<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; registry.RegisterFactory(std::move(factory));</div>
873<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;}</div>
874</div><!-- fragment -->
875<p class="reference">References <a class="el" href="_tensor_handle_factory_registry_8cpp_source.html#l00066">TensorHandleFactoryRegistry::RegisterCopyAndImportFactoryPair()</a>, <a class="el" href="_tensor_handle_factory_registry_8cpp_source.html#l00012">TensorHandleFactoryRegistry::RegisterFactory()</a>, and <a class="el" href="_tensor_handle_factory_registry_8cpp_source.html#l00034">TensorHandleFactoryRegistry::RegisterMemoryManager()</a>.</p>
876
877</div>
878</div>
879<a id="ae1433fe03ffaacea6d1b5fbbd67754b3"></a>
880<h2 class="memtitle"><span class="permalink"><a href="#ae1433fe03ffaacea6d1b5fbbd67754b3">&#9670;&nbsp;</a></span>UpdateExecutionData()</h2>
881
882<div class="memitem">
883<div class="memproto">
884<table class="mlabels">
885 <tr>
886 <td class="mlabels-left">
887 <table class="memname">
888 <tr>
889 <td class="memname">void UpdateExecutionData </td>
890 <td>(</td>
891 <td class="paramtype"><a class="el" href="structarmnn_1_1experimental_1_1_execution_data.html">ExecutionData</a> &amp;&#160;</td>
892 <td class="paramname"><em>executionData</em>, </td>
893 </tr>
894 <tr>
895 <td class="paramkey"></td>
896 <td></td>
897 <td class="paramtype"><a class="el" href="structarmnn_1_1experimental_1_1_working_mem_descriptor.html">WorkingMemDescriptor</a> &amp;&#160;</td>
898 <td class="paramname"><em>workingMemDescriptor</em>&#160;</td>
899 </tr>
900 <tr>
901 <td></td>
902 <td>)</td>
903 <td></td><td> const</td>
904 </tr>
905 </table>
906 </td>
907 <td class="mlabels-right">
908<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
909 </tr>
910</table>
911</div><div class="memdoc">
912
913<p>Update the ExecutionData for a layer. </p>
914<p>It is used to swap in pre-imported tensor handles</p>
915<dl class="params"><dt>Parameters</dt><dd>
916 <table class="params">
917 <tr><td class="paramname">executionData</td><td>- Backend specific ExecutionData generated for a layer </td></tr>
918 <tr><td class="paramname">workingMemDescriptor</td><td>- Vectors of input and output TensorHandles for a layer </td></tr>
919 </table>
920 </dd>
921</dl>
922
923<p>Reimplemented from <a class="el" href="classarmnn_1_1_i_backend_internal.html#adf96527a67532246f07ce44266e95e79">IBackendInternal</a>.</p>
924
925<p class="definition">Definition at line <a class="el" href="_ref_backend_8cpp_source.html#l00169">169</a> of file <a class="el" href="_ref_backend_8cpp_source.html">RefBackend.cpp</a>.</p>
926<div class="fragment"><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;{</div>
927<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; executionData.m_Data = &amp;workingMemDescriptor;</div>
928<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;}</div>
929</div><!-- fragment -->
930<p class="reference">References <a class="el" href="_execution_data_8hpp_source.html#l00016">ExecutionData::m_Data</a>.</p>
931
932</div>
933</div>
934<hr/>The documentation for this class was generated from the following files:<ul>
935<li>src/backends/reference/<a class="el" href="_ref_backend_8hpp_source.html">RefBackend.hpp</a></li>
936<li>src/backends/reference/<a class="el" href="_ref_backend_8cpp_source.html">RefBackend.cpp</a></li>
937</ul>
938</div><!-- contents -->
939</div><!-- doc-content -->
940<div class="ttc" id="aclassarmnn_1_1_ref_tensor_handle_factory_html_acdecb5b442434112c2cc8fc48c0ea922"><div class="ttname"><a href="classarmnn_1_1_ref_tensor_handle_factory.html#acdecb5b442434112c2cc8fc48c0ea922">armnn::RefTensorHandleFactory::GetIdStatic</a></div><div class="ttdeci">static const FactoryId &amp; GetIdStatic()</div><div class="ttdef"><b>Definition:</b> <a href="_ref_tensor_handle_factory_8cpp_source.html#l00016">RefTensorHandleFactory.cpp:16</a></div></div>
941<div class="ttc" id="anamespacearmnn_html_ae7d50846b2769f81521af24d063bc093"><div class="ttname"><a href="namespacearmnn.html#ae7d50846b2769f81521af24d063bc093">armnn::RefBackendId</a></div><div class="ttdeci">constexpr const char * RefBackendId()</div><div class="ttdef"><b>Definition:</b> <a href="_ref_backend_id_8hpp_source.html#l00010">RefBackendId.hpp:10</a></div></div>
942<div class="ttc" id="aclassarmnn_1_1_i_backend_internal_html_ada6d56575c0fe53cf23c7ae4610c6367"><div class="ttname"><a href="classarmnn_1_1_i_backend_internal.html#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="_i_backend_internal_8hpp_source.html#l00090">IBackendInternal.hpp:90</a></div></div>
943<div class="ttc" id="aclassarmnn_1_1_ref_backend_html_a177af502214bbc8123fbb4a3c4f0a1b8"><div class="ttname"><a href="classarmnn_1_1_ref_backend.html#a177af502214bbc8123fbb4a3c4f0a1b8">armnn::RefBackend::GetIdStatic</a></div><div class="ttdeci">static const BackendId &amp; GetIdStatic()</div><div class="ttdef"><b>Definition:</b> <a href="_ref_backend_8cpp_source.html#l00022">RefBackend.cpp:22</a></div></div>
944<div class="ttc" id="anamespacearmnn_1_1optimizations_1_1pad__fold_html_a33ffc65d1f6581b0789d3d3a033f698e"><div class="ttname"><a href="namespacearmnn_1_1optimizations_1_1pad__fold.html#a33ffc65d1f6581b0789d3d3a033f698e">armnn::optimizations::pad_fold::TryFoldPadIntoLayer2d</a></div><div class="ttdeci">bool TryFoldPadIntoLayer2d(const PadDescriptor &amp;padDescriptor, Descriptor &amp;layerDescriptor, const TensorInfo &amp;tensorInfo)</div><div class="ttdef"><b>Definition:</b> <a href="_fold_pad_into_layer2d_8hpp_source.html#l00088">FoldPadIntoLayer2d.hpp:88</a></div></div>
945<div class="ttc" id="anamespacearmnn_html_ae756568a7f2c58778bb6d759d2bd38db"><div class="ttname"><a href="namespacearmnn.html#ae756568a7f2c58778bb6d759d2bd38db">armnn::RemoveReshapeLayer</a></div><div class="ttdeci">void RemoveReshapeLayer(ReshapeLayer *baseLayer, std::map&lt; LayerGuid, Layer * &gt; &amp;untouched, OptimizationViews &amp;optimizationViews)</div><div class="ttdef"><b>Definition:</b> <a href="_subgraph_utils_8hpp_source.html#l00293">SubgraphUtils.hpp:293</a></div></div>
946<div class="ttc" id="anamespacearmnn_html_a35f80da9b1316b2d338f4615906ef30d"><div class="ttname"><a href="namespacearmnn.html#a35f80da9b1316b2d338f4615906ef30d">armnn::cpuRefCapabilities</a></div><div class="ttdeci">const BackendCapabilities cpuRefCapabilities(&quot;CpuRef&quot;, { {&quot;NonConstWeights&quot;, true}, {&quot;AsyncExecution&quot;, true}, {&quot;ProtectedContentAllocation&quot;, false}, {&quot;ConstantTensorsAsInputs&quot;, true}, {&quot;PreImportIOTensors&quot;, true}, {&quot;ExternallyManagedMemory&quot;, true}, {&quot;MultiAxisPacking&quot;, false}, {&quot;SingleAxisPacking&quot;, true}, {&quot;HasFp16&quot;, true} })</div></div>
947<div class="ttc" id="anamespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4ad662867a41bfb30b9f75dda2b5849001"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ad662867a41bfb30b9f75dda2b5849001">armnn::LayerType::Pooling2d</a></div><div class="ttdeci">@ Pooling2d</div></div>
948<div class="ttc" id="aclassarmnn_1_1_i_backend_internal_html_ae44a82b0e485e551a0f77150b1076e06"><div class="ttname"><a href="classarmnn_1_1_i_backend_internal.html#ae44a82b0e485e551a0f77150b1076e06">armnn::IBackendInternal::IBackendProfilingContextPtr</a></div><div class="ttdeci">std::shared_ptr&lt; arm::pipe::IBackendProfilingContext &gt; IBackendProfilingContextPtr</div><div class="ttdoc">This is the bridge between backend and backend profiling we'll keep it in the backend namespace.</div><div class="ttdef"><b>Definition:</b> <a href="_i_backend_internal_8hpp_source.html#l00092">IBackendInternal.hpp:92</a></div></div>
949<div class="ttc" id="anamespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4aa7c59ccedc6a3bd90c17f3b990afefad"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa7c59ccedc6a3bd90c17f3b990afefad">armnn::LayerType::Reshape</a></div><div class="ttdeci">@ Reshape</div></div>
950<div class="ttc" id="anamespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4ade43468adaf6acb2c38ebc0c1176f82f"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ade43468adaf6acb2c38ebc0c1176f82f">armnn::LayerType::Pad</a></div><div class="ttdeci">@ Pad</div></div>
951<div class="ttc" id="aclassarmnn_1_1_i_backend_internal_html_a11fa919c11fe46aad613b2e960fcfe90"><div class="ttname"><a href="classarmnn_1_1_i_backend_internal.html#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="_i_backend_internal_8hpp_source.html#l00094">IBackendInternal.hpp:94</a></div></div>
952<div class="ttc" id="anamespacearmnn_html_a5afd10e5e84ebf5cb8cfc8707492eda7"><div class="ttname"><a href="namespacearmnn.html#a5afd10e5e84ebf5cb8cfc8707492eda7">armnn::ReportUntouchedLayers</a></div><div class="ttdeci">void ReportUntouchedLayers(OptimizationViews &amp;optimizationViews, std::map&lt; LayerGuid, Layer * &gt; untouched)</div><div class="ttdef"><b>Definition:</b> <a href="_subgraph_utils_8hpp_source.html#l00220">SubgraphUtils.hpp:220</a></div></div>
953<div class="ttc" id="anamespacearmnn_deserializer_html_a7e75f47f676327bce37149932aa4a011"><div class="ttname"><a href="namespacearmnn_deserializer.html#a7e75f47f676327bce37149932aa4a011">armnnDeserializer::Pooling2dDescriptor</a></div><div class="ttdeci">const armnnSerializer::Pooling2dDescriptor * Pooling2dDescriptor</div><div class="ttdef"><b>Definition:</b> <a href="_deserializer_8hpp_source.html#l00021">Deserializer.hpp:21</a></div></div>
954<!-- start footer part -->
955<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
956 <ul>
957 <li class="navelem"><a class="el" href="namespacearmnn.html">armnn</a></li><li class="navelem"><a class="el" href="classarmnn_1_1_ref_backend.html">RefBackend</a></li>
958 <li class="footer">Generated on Thu May 16 2024 09:31:58 for Arm NN by
959 <a href="http://www.doxygen.org/index.html">
960 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
961 </ul>
962</div>
963</body>
964</html>