<!-- HTML header for doxygen 1.8.17-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Arm NN: Delegate Build Guide</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>
<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" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="customdoxygen.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: 15rem; margin-top: .5rem; margin-left 13px"/>
  <td id="projectalign" style="padding-left: 0.9em;">
   <div id="projectname">
   &#160;<span id="projectnumber">24.05</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</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">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('md_delegate__build_guide_native.html',''); initResizable(); });
/* @license-end */
</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="PageDoc"><div class="header">
  <div class="headertitle">
<div class="title">Delegate Build Guide </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>This guide assumes that Arm NN has been built with the Arm NN TF Lite Delegate with the ../build-tool/README.md "Arm NN Build Tool".<br  />
 The Arm NN TF Lite Delegate can also be obtained from downloading the ../README.md "Pre-Built Binaries on the GitHub homepage".</p>
<p><b>Table of Contents:</b></p><ul>
<li><a href="#running-delegateunittests">Running DelegateUnitTests</a></li>
<li><a href="#run-the-tflite-model-benchmark-tool">Run the TF Lite Benchmark Tool</a><ul>
<li><a href="#download-the-tflite-model-benchmark-tool">Download the TFLite Model Benchmark Tool</a></li>
<li><a href="#execute-the-benchmarking-tool-with-the-arm-nn-tf-lite-delegate">Execute the benchmarking tool with the Arm NN TF Lite Delegate</a></li>
</ul>
</li>
<li><a href="#integrate-the-arm-nn-tflite-delegate-into-your-project">Integrate the Arm NN TfLite Delegate into your project</a></li>
</ul>
<h1>Running DelegateUnitTests</h1>
<p>To ensure that the build was successful you can run the unit tests for the delegate that can be found in the build directory for the delegate. <a href="https://github.com/onqtam/doctest">Doctest</a> was used to create those tests. Using test filters you can filter out tests that your build is not configured for. In this case, we run all test suites that have <code>CpuAcc</code> in their name. </p><div class="fragment"><div class="line">cd &lt;PATH_TO_ARMNN_BUILD_DIRECTORY&gt;/delegate/build</div>
<div class="line">./DelegateUnitTests --test-suite=*CpuAcc*</div>
</div><!-- fragment --><p>If you have built for Gpu acceleration as well you might want to change your test-suite filter: </p><div class="fragment"><div class="line">./DelegateUnitTests --test-suite=*CpuAcc*,*GpuAcc*</div>
</div><!-- fragment --><h1>Run the TFLite Model Benchmark Tool</h1>
<p>The <a href="https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/tools/benchmark">TFLite Model Benchmark</a> Tool has a useful command line interface to test the TF Lite Delegate. We can use this to demonstrate the use of the Arm NN TF Lite Delegate and its options.</p>
<p>Some examples of this can be viewed in this <a href="https://www.youtube.com/watch?v=NResQ1kbm-M&amp;t=920s">YouTube demonstration</a>.</p>
<h2>Download the TFLite Model Benchmark Tool</h2>
<p>Binary builds of the benchmarking tool for various platforms are available <a href="https://www.tensorflow.org/lite/performance/measurement#native_benchmark_binary">here</a>. In this example I will target an aarch64 Linux environment. I will also download a sample uint8 tflite model from the <a href="https://github.com/ARM-software/ML-zoo">Arm ML Model Zoo</a>.</p>
<div class="fragment"><div class="line">mkdir $BASEDIR/benchmarking</div>
<div class="line">cd $BASEDIR/benchmarking</div>
<div class="line"># Get the benchmarking binary.</div>
<div class="line">wget https://storage.googleapis.com/tensorflow-nightly-public/prod/tensorflow/release/lite/tools/nightly/latest/linux_aarch64_benchmark_model -O benchmark_model</div>
<div class="line"># Make it executable.</div>
<div class="line">chmod +x benchmark_model</div>
<div class="line"># and a sample model from model zoo.</div>
<div class="line">wget https://github.com/ARM-software/ML-zoo/blob/master/models/image_classification/mobilenet_v2_1.0_224/tflite_uint8/mobilenet_v2_1.0_224_quantized_1_default_1.tflite?raw=true -O mobilenet_v2_1.0_224_quantized_1_default_1.tflite</div>
</div><!-- fragment --><h2>Execute the benchmarking tool with the Arm NN TF Lite Delegate</h2>
<p>You are already at $BASEDIR/benchmarking from the previous stage. </p><div class="fragment"><div class="line">LD_LIBRARY_PATH=&lt;PATH_TO_ARMNN_BUILD_DIRECTORY&gt; ./benchmark_model --graph=mobilenet_v2_1.0_224_quantized_1_default_1.tflite --external_delegate_path=&quot;&lt;PATH_TO_ARMNN_BUILD_DIRECTORY&gt;/delegate/libarmnnDelegate.so&quot; --external_delegate_options=&quot;backends:CpuAcc;logging-severity:info&quot;</div>
</div><!-- fragment --><p>The "external_delegate_options" here are specific to the Arm NN delegate. They are used to specify a target Arm NN backend or to enable/disable various options in Arm NN. A full description can be found in the parameters of function tflite_plugin_create_delegate.</p>
<h1>Integrate the Arm NN TfLite Delegate into your project</h1>
<p>The delegate can be integrated into your c++ project by creating a TfLite Interpreter and instructing it to use the Arm NN delegate for the graph execution. This should look similar to the following code snippet. </p><div class="fragment"><div class="line">// Create TfLite Interpreter</div>
<div class="line">std::unique_ptr&lt;Interpreter&gt; armnnDelegateInterpreter;</div>
<div class="line">InterpreterBuilder(tfLiteModel, ::tflite::ops::builtin::BuiltinOpResolver())</div>
<div class="line">                  (&amp;armnnDelegateInterpreter)</div>
<div class="line"> </div>
<div class="line">// Create the Arm NN Delegate</div>
<div class="line">armnnDelegate::DelegateOptions delegateOptions(backends);</div>
<div class="line">std::unique_ptr&lt;TfLiteDelegate, decltype(&amp;armnnDelegate::TfLiteArmnnDelegateDelete)&gt;</div>
<div class="line">                    theArmnnDelegate(armnnDelegate::TfLiteArmnnDelegateCreate(delegateOptions),</div>
<div class="line">                                     armnnDelegate::TfLiteArmnnDelegateDelete);</div>
<div class="line"> </div>
<div class="line">// Instruct the Interpreter to use the armnnDelegate</div>
<div class="line">armnnDelegateInterpreter-&gt;ModifyGraphWithDelegate(theArmnnDelegate.get());</div>
</div><!-- fragment --><p>For further information on using TfLite Delegates please visit the <a href="https://www.tensorflow.org/lite/guide">TensorFlow website</a>.</p>
<p>For more details of the kind of options you can pass to the Arm NN delegate please check the parameters of function tflite_plugin_create_delegate. </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="buildguides.html">Build Guides</a></li>
    <li class="footer">Generated on Thu May 16 2024 09:31:54 for Arm NN by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
  </ul>
</div>
</body>
</html>
