aboutsummaryrefslogtreecommitdiff
path: root/22.05/_dynamic_sample_8cpp-example.xhtml
diff options
context:
space:
mode:
authorNikhil Raj <nikhil.raj@arm.com>2022-05-24 11:32:07 +0100
committerNikhil Raj <nikhil.raj@arm.com>2022-05-24 11:32:07 +0100
commit549b9600a6eaf0727fa084465a75f173edf8f381 (patch)
tree9c9b054417504444fff067b74eaa1811b74e6d06 /22.05/_dynamic_sample_8cpp-example.xhtml
parentf4019872c1134c6fcc1d6993e5746f55c1e79208 (diff)
downloadarmnn-549b9600a6eaf0727fa084465a75f173edf8f381.tar.gz
Update 22.05 Doxygen Docs after updates to main Readme
Signed-off-by: Nikhil Raj <nikhil.raj@arm.com> Change-Id: I56711772406a41ff81fa136a5fb6c59c9b9cf504
Diffstat (limited to '22.05/_dynamic_sample_8cpp-example.xhtml')
-rw-r--r--22.05/_dynamic_sample_8cpp-example.xhtml114
1 files changed, 114 insertions, 0 deletions
diff --git a/22.05/_dynamic_sample_8cpp-example.xhtml b/22.05/_dynamic_sample_8cpp-example.xhtml
new file mode 100644
index 0000000000..767114cc89
--- /dev/null
+++ b/22.05/_dynamic_sample_8cpp-example.xhtml
@@ -0,0 +1,114 @@
+<!-- Copyright (c) 2020 ARM Limited. -->
+<!-- -->
+<!-- SPDX-License-Identifier: MIT -->
+<!-- -->
+<!-- HTML header for doxygen 1.8.13-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<meta name="robots" content="NOINDEX, NOFOLLOW" />
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>ArmNN: DynamicSample.cpp</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="stylesheet.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <img alt="ArmNN" src="Arm_NN_horizontal_blue.png" style="max-width: 10rem; margin-top: .5rem; margin-left 10px"/>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">
+ &#160;<span id="projectnumber">22.05</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.13 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('_dynamic_sample_8cpp-example.xhtml','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">DynamicSample.cpp</div> </div>
+</div><!--header-->
+<div class="contents">
+<p>This is simple example that shows how to use a dynamic backend. Dynamic Backends can be compiled as standalone against Arm NN and can be loaded by Arm NN dynamically at runtime. This way you can quickly integrate new backends without having to worry or recompile Arm NN.</p>
+<p>This example makes use of a very simplistic dynamic backend called 'SampleDynamic'. There is a guide that tells you more about dynamic backends and how this particular backend was created so you can create a dynamic backend yourself <a class="el" href="md_src_dynamic__r_e_a_d_m_e.xhtml">Dynamically loadable Backend</a>.</p>
+<div class="fragment"><div class="line"><span class="comment">//</span></div><div class="line"><span class="comment">// Copyright © 2020 Arm Ltd. All rights reserved.</span></div><div class="line"><span class="comment">// SPDX-License-Identifier: MIT</span></div><div class="line"><span class="comment">//</span></div><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="_i_network_8hpp.xhtml">armnn/INetwork.hpp</a>&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="_i_runtime_8hpp.xhtml">armnn/IRuntime.hpp</a>&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="_utils_8hpp.xhtml">armnn/Utils.hpp</a>&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="_descriptors_8hpp.xhtml">armnn/Descriptors.hpp</a>&gt;</span></div><div class="line"></div><div class="line"><span class="preprocessor">#include &lt;iostream&gt;</span></div><div class="line"><span class="comment"></span></div><div class="line"><span class="comment">/// A simple example of using the ArmNN SDK API with the standalone sample dynamic backend.</span></div><div class="line"><span class="comment">/// In this example, an addition layer is used to add 2 input tensors to produce a result output tensor.</span></div><div class="line"><span class="comment"></span><span class="keywordtype">int</span> <a name="a0"></a><a class="code" href="_armnn_converter_8cpp.xhtml#a0ddf1224851353fc92bfbff6f499fa97">main</a>()</div><div class="line">{</div><div class="line"> <span class="keyword">using namespace </span><a class="code" href="namespacearmnn.xhtml">armnn</a>;</div><div class="line"></div><div class="line"> <span class="comment">// Construct ArmNN network</span></div><div class="line"> <a class="code" href="namespacearmnn.xhtml#a0d8160388a127c1a23b37bc88dc6e2ec">armnn::NetworkId</a> networkIdentifier;</div><div class="line"> <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> myNetwork = <a name="a1"></a><a class="code" href="classarmnn_1_1_i_network.xhtml#a464f0ff87b1aabf71febaa71321dd40b">INetwork::Create</a>();</div><div class="line"></div><div class="line"> <a name="_a2"></a><a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* input0 = myNetwork-&gt;AddInputLayer(0);</div><div class="line"> <a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* input1 = myNetwork-&gt;AddInputLayer(1);</div><div class="line"> <a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* add = myNetwork-&gt;AddAdditionLayer();</div><div class="line"> <a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* output = myNetwork-&gt;AddOutputLayer(0);</div><div class="line"></div><div class="line"> input0-&gt;<a name="a3"></a><a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">GetOutputSlot</a>(0).<a name="a4"></a><a class="code" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">Connect</a>(add-&gt;<a name="a5"></a><a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">GetInputSlot</a>(0));</div><div class="line"> input1-&gt;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">Connect</a>(add-&gt;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">GetInputSlot</a>(1));</div><div class="line"> add-&gt;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">Connect</a>(output-&gt;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">GetInputSlot</a>(0));</div><div class="line"></div><div class="line"> <a name="_a6"></a><a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> tensorInfo(<a name="_a7"></a><a class="code" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a>({2, 1}), <a name="a8"></a><a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>);</div><div class="line"> input0-&gt;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">GetOutputSlot</a>(0).<a name="a9"></a><a class="code" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">SetTensorInfo</a>(tensorInfo);</div><div class="line"> input1-&gt;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">SetTensorInfo</a>(tensorInfo);</div><div class="line"> add-&gt;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">SetTensorInfo</a>(tensorInfo);</div><div class="line"></div><div class="line"> <span class="comment">// Create ArmNN runtime</span></div><div class="line"> <a name="_a10"></a><a class="code" href="structarmnn_1_1_i_runtime_1_1_creation_options.xhtml">IRuntime::CreationOptions</a> options; <span class="comment">// default options</span></div><div class="line"> <a class="code" href="namespacearmnn.xhtml#a150468a02bd7b2d2d061c4aaaee939f0">armnn::IRuntimePtr</a> run(<a name="a11"></a><a class="code" href="classarmnn_1_1_i_runtime.xhtml#ad44ecd3700748dc30dc4bbe34ba5bde7">armnn::IRuntime::Create</a>(options));</div><div class="line"></div><div class="line"> <span class="comment">// Optimise ArmNN network</span></div><div class="line"> <a class="code" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">armnn::IOptimizedNetworkPtr</a> optNet = <a name="a12"></a><a class="code" href="namespacearmnn.xhtml#a82e98ef05fd67036d1195ba17174d685">Optimize</a>(*myNetwork, {<span class="stringliteral">&quot;SampleDynamic&quot;</span>}, run-&gt;GetDeviceSpec());</div><div class="line"> <span class="keywordflow">if</span> (!optNet)</div><div class="line"> {</div><div class="line"> <span class="comment">// This shouldn&#39;t happen for this simple sample, with reference backend.</span></div><div class="line"> <span class="comment">// But in general usage Optimize could fail if the hardware at runtime cannot</span></div><div class="line"> <span class="comment">// support the model that has been provided.</span></div><div class="line"> std::cerr &lt;&lt; <span class="stringliteral">&quot;Error: Failed to optimise the input network.&quot;</span> &lt;&lt; std::endl;</div><div class="line"> <span class="keywordflow">return</span> 1;</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="comment">// Load graph into runtime</span></div><div class="line"> run-&gt;LoadNetwork(networkIdentifier, std::move(optNet));</div><div class="line"></div><div class="line"> <span class="comment">// input data</span></div><div class="line"> std::vector&lt;float&gt; input0Data</div><div class="line"> {</div><div class="line"> 5.0f, 3.0f</div><div class="line"> };</div><div class="line"> std::vector&lt;float&gt; input1Data</div><div class="line"> {</div><div class="line"> 10.0f, 8.0f</div><div class="line"> };</div><div class="line"> std::vector&lt;float&gt; outputData(2);</div><div class="line"></div><div class="line"> <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> inputTensorInfo = run-&gt;GetInputTensorInfo(networkIdentifier, 0);</div><div class="line"> inputTensorInfo.<a name="a13"></a><a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8ffca1e21bdfa7f945617acd606aac91">SetConstant</a>(<span class="keyword">true</span>);</div><div class="line"> <a class="code" href="namespacearmnn.xhtml#aa01bce88f89975a5a031db4cc8861527">InputTensors</a> inputTensors</div><div class="line"> {</div><div class="line"> {0,<a name="_a14"></a><a class="code" href="classarmnn_1_1_const_tensor.xhtml">armnn::ConstTensor</a>(inputTensorInfo, input0Data.data())},</div><div class="line"> {1,<a class="code" href="classarmnn_1_1_const_tensor.xhtml">armnn::ConstTensor</a>(inputTensorInfo, input1Data.data())}</div><div class="line"> };</div><div class="line"> <a class="code" href="namespacearmnn.xhtml#a8f091a512915d1cb29a4ebf13dfc53ea">OutputTensors</a> outputTensors</div><div class="line"> {</div><div class="line"> {0,<a name="_a15"></a><a class="code" href="classarmnn_1_1_tensor.xhtml">armnn::Tensor</a>(run-&gt;GetOutputTensorInfo(networkIdentifier, 0), outputData.data())}</div><div class="line"> };</div><div class="line"></div><div class="line"> <span class="comment">// Execute network</span></div><div class="line"> run-&gt;EnqueueWorkload(networkIdentifier, inputTensors, outputTensors);</div><div class="line"></div><div class="line"> std::cout &lt;&lt; <span class="stringliteral">&quot;Addition operator result is {&quot;</span> &lt;&lt; outputData[0] &lt;&lt; <span class="stringliteral">&quot;,&quot;</span> &lt;&lt; outputData[1] &lt;&lt; <span class="stringliteral">&quot;}&quot;</span> &lt;&lt; std::endl;</div><div class="line"> <span class="keywordflow">return</span> 0;</div><div class="line">}</div></div><!-- fragment --> </div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Tue May 24 2022 11:26:31 for ArmNN by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
+ </ul>
+</div>
+</body>
+</html>