aboutsummaryrefslogtreecommitdiff
path: root/21.11/_cl_import_tensor_handle_factory_tests_8cpp.xhtml
blob: 43607d0856c2e5933d9a79cdb5d8c79fa8bd4c4f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
<!-- Copyright (c) 2020 ARM Limited. -->
<!--                                 -->
<!-- SPDX-License-Identifier: MIT    -->
<!--                                 -->
<!-- HTML header for doxygen 1.8.13-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="robots" content="NOINDEX, NOFOLLOW" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmNN: src/backends/cl/test/ClImportTensorHandleFactoryTests.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <img alt="ArmNN" src="Arm_NN_horizontal_blue.png" style="max-width: 10rem; margin-top: .5rem; margin-left 10px"/>
  <td style="padding-left: 0.5em;">
   <div id="projectname">
   &#160;<span id="projectnumber">21.11</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('_cl_import_tensor_handle_factory_tests_8cpp.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="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">ClImportTensorHandleFactoryTests.cpp File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="_assert_8hpp_source.xhtml">armnn/utility/Assert.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="_cl_import_tensor_handle_factory_8hpp_source.xhtml">cl/ClImportTensorHandleFactory.hpp</a>&gt;</code><br />
<code>#include &lt;doctest/doctest.h&gt;</code><br />
</div>
<p><a href="_cl_import_tensor_handle_factory_tests_8cpp_source.xhtml">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a3d6c6726ac6dee40f27520f66ba64070"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_cl_import_tensor_handle_factory_tests_8cpp.xhtml#a3d6c6726ac6dee40f27520f66ba64070">TEST_SUITE</a> (&quot;ClImportTensorHandleFactoryTests&quot;)</td></tr>
<tr class="separator:a3d6c6726ac6dee40f27520f66ba64070"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a id="a3d6c6726ac6dee40f27520f66ba64070"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3d6c6726ac6dee40f27520f66ba64070">&#9670;&nbsp;</a></span>TEST_SUITE()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">TEST_SUITE </td>
          <td>(</td>
          <td class="paramtype">&quot;ClImportTensorHandleFactoryTests&quot;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="_cl_import_tensor_handle_factory_tests_8cpp_source.xhtml#l00012">12</a> of file <a class="el" href="_cl_import_tensor_handle_factory_tests_8cpp_source.xhtml">ClImportTensorHandleFactoryTests.cpp</a>.</p>

<p class="reference">References <a class="el" href="_assert_8hpp_source.xhtml#l00014">ARMNN_ASSERT</a>, <a class="el" href="_cl_import_tensor_handle_factory_8cpp_source.xhtml#l00020">ClImportTensorHandleFactory::CreateSubTensorHandle()</a>, <a class="el" href="_cl_import_tensor_handle_factory_8cpp_source.xhtml#l00056">ClImportTensorHandleFactory::CreateTensorHandle()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::Float32</a>, <a class="el" href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277a1131a914388fac73e5f07b0ba0aad523">armnn::Malloc</a>, <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::NCHW</a>, and <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::NHWC</a>.</p>
<div class="fragment"><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;{</div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespacearmnn.xhtml">armnn</a>;</div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;TEST_CASE(<span class="stringliteral">&quot;ImportTensorFactoryAskedToCreateManagedTensorThrowsException&quot;</span>)</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;{</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;    <span class="comment">// Create the factory to import tensors.</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;    <a class="code" href="classarmnn_1_1_cl_import_tensor_handle_factory.xhtml">ClImportTensorHandleFactory</a> factory(static_cast&lt;MemorySourceFlags&gt;(<a class="code" href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277a1131a914388fac73e5f07b0ba0aad523">MemorySource::Malloc</a>),</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;                                        static_cast&lt;MemorySourceFlags&gt;(<a class="code" href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277a1131a914388fac73e5f07b0ba0aad523">MemorySource::Malloc</a>));</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> tensorInfo;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;    <span class="comment">// This factory is designed to import the memory of tensors. Asking for a handle that requires</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;    <span class="comment">// a memory manager should result in an exception.</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;    REQUIRE_THROWS_AS(factory.CreateTensorHandle(tensorInfo, <span class="keyword">true</span>), <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>);</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;    REQUIRE_THROWS_AS(factory.CreateTensorHandle(tensorInfo, <a class="code" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">DataLayout::NCHW</a>, <span class="keyword">true</span>), <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>);</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;}</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;TEST_CASE(<span class="stringliteral">&quot;ImportTensorFactoryCreateMallocTensorHandle&quot;</span>)</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;{</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;    <span class="comment">// Create the factory to import tensors.</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    <a class="code" href="classarmnn_1_1_cl_import_tensor_handle_factory.xhtml">ClImportTensorHandleFactory</a> factory(static_cast&lt;MemorySourceFlags&gt;(<a class="code" href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277a1131a914388fac73e5f07b0ba0aad523">MemorySource::Malloc</a>),</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;                                        static_cast&lt;MemorySourceFlags&gt;(<a class="code" href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277a1131a914388fac73e5f07b0ba0aad523">MemorySource::Malloc</a>));</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> tensorShape{ 6, 7, 8, 9 };</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> tensorInfo(tensorShape, <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>);</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;    <span class="comment">// Start with the TensorInfo factory method. Create an import tensor handle and verify the data is</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;    <span class="comment">// passed through correctly.</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;    <span class="keyword">auto</span> tensorHandle = factory.CreateTensorHandle(tensorInfo);</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;    <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(tensorHandle);</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;    <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(tensorHandle-&gt;GetImportFlags() == <span class="keyword">static_cast&lt;</span><a class="code" href="namespacearmnn.xhtml#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a><span class="keyword">&gt;</span>(<a class="code" href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277a1131a914388fac73e5f07b0ba0aad523">MemorySource::Malloc</a>));</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;    <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(tensorHandle-&gt;GetShape() == tensorShape);</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;    <span class="comment">// Same method but explicitly specifying isManaged = false.</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;    tensorHandle = factory.CreateTensorHandle(tensorInfo, <span class="keyword">false</span>);</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;    CHECK(tensorHandle);</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;    <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(tensorHandle-&gt;GetImportFlags() == <span class="keyword">static_cast&lt;</span><a class="code" href="namespacearmnn.xhtml#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a><span class="keyword">&gt;</span>(<a class="code" href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277a1131a914388fac73e5f07b0ba0aad523">MemorySource::Malloc</a>));</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(tensorHandle-&gt;GetShape() == tensorShape);</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    <span class="comment">// Now try TensorInfo and DataLayout factory method.</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    tensorHandle = factory.CreateTensorHandle(tensorInfo, <a class="code" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">DataLayout::NHWC</a>);</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    CHECK(tensorHandle);</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(tensorHandle-&gt;GetImportFlags() == <span class="keyword">static_cast&lt;</span><a class="code" href="namespacearmnn.xhtml#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a><span class="keyword">&gt;</span>(<a class="code" href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277a1131a914388fac73e5f07b0ba0aad523">MemorySource::Malloc</a>));</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(tensorHandle-&gt;GetShape() == tensorShape);</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;}</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;TEST_CASE(<span class="stringliteral">&quot;CreateSubtensorOfImportTensor&quot;</span>)</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;{</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    <span class="comment">// Create the factory to import tensors.</span></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    <a class="code" href="classarmnn_1_1_cl_import_tensor_handle_factory.xhtml">ClImportTensorHandleFactory</a> factory(static_cast&lt;MemorySourceFlags&gt;(<a class="code" href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277a1131a914388fac73e5f07b0ba0aad523">MemorySource::Malloc</a>),</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;                                        static_cast&lt;MemorySourceFlags&gt;(<a class="code" href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277a1131a914388fac73e5f07b0ba0aad523">MemorySource::Malloc</a>));</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    <span class="comment">// Create a standard inport tensor.</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> tensorShape{ 224, 224, 1, 1 };</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> tensorInfo(tensorShape, <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>);</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;    <span class="keyword">auto</span> tensorHandle = factory.CreateTensorHandle(tensorInfo);</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    <span class="comment">// Use the factory to create a 16x16 sub tensor.</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> subTensorShape{ 16, 16, 1, 1 };</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    <span class="comment">// Starting at an offset of 1x1.</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    uint32_t origin[4] = { 1, 1, 0, 0 };</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    <span class="keyword">auto</span> subTensor     = factory.CreateSubTensorHandle(*tensorHandle, subTensorShape, origin);</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    CHECK(subTensor);</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;    <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(subTensor-&gt;GetShape() == subTensorShape);</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(subTensor-&gt;GetParent() == tensorHandle.get());</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;}</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;TEST_CASE(<span class="stringliteral">&quot;CreateSubtensorNonZeroXYIsInvalid&quot;</span>)</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;{</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    <span class="comment">// Create the factory to import tensors.</span></div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <a class="code" href="classarmnn_1_1_cl_import_tensor_handle_factory.xhtml">ClImportTensorHandleFactory</a> factory(static_cast&lt;MemorySourceFlags&gt;(<a class="code" href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277a1131a914388fac73e5f07b0ba0aad523">MemorySource::Malloc</a>),</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;                                        static_cast&lt;MemorySourceFlags&gt;(<a class="code" href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277a1131a914388fac73e5f07b0ba0aad523">MemorySource::Malloc</a>));</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    <span class="comment">// Create a standard import tensor.</span></div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> tensorShape{ 224, 224, 1, 1 };</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> tensorInfo(tensorShape, <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>);</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    <span class="keyword">auto</span> tensorHandle = factory.CreateTensorHandle(tensorInfo);</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    <span class="comment">// Use the factory to create a 16x16 sub tensor.</span></div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> subTensorShape{ 16, 16, 1, 1 };</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    <span class="comment">// This looks a bit backwards because of how Cl specifies tensors. Essentially we want to trigger our</span></div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    <span class="comment">// check &quot;(coords.x() != 0 || coords.y() != 0)&quot;</span></div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    uint32_t origin[4] = { 0, 0, 1, 1 };</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    <span class="keyword">auto</span> subTensor     = factory.CreateSubTensorHandle(*tensorHandle, subTensorShape, origin);</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    <span class="comment">// We expect a nullptr.</span></div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(subTensor == <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;}</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;TEST_CASE(<span class="stringliteral">&quot;CreateSubtensorXYMustMatchParent&quot;</span>)</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;{</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    <span class="comment">// Create the factory to import tensors.</span></div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;    <a class="code" href="classarmnn_1_1_cl_import_tensor_handle_factory.xhtml">ClImportTensorHandleFactory</a> factory(static_cast&lt;MemorySourceFlags&gt;(<a class="code" href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277a1131a914388fac73e5f07b0ba0aad523">MemorySource::Malloc</a>),</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;                                        static_cast&lt;MemorySourceFlags&gt;(<a class="code" href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277a1131a914388fac73e5f07b0ba0aad523">MemorySource::Malloc</a>));</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    <span class="comment">// Create a standard import tensor.</span></div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> tensorShape{ 224, 224, 1, 1 };</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> tensorInfo(tensorShape, <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>);</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    <span class="keyword">auto</span> tensorHandle = factory.CreateTensorHandle(tensorInfo);</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    <span class="comment">// Use the factory to create a 16x16 sub tensor but make the CL x and y axis different.</span></div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> subTensorShape{ 16, 16, 2, 2 };</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    <span class="comment">// We want to trigger our ((parentShape.x() != shape.x()) || (parentShape.y() != shape.y()))</span></div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    uint32_t origin[4] = { 1, 1, 0, 0 };</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    <span class="keyword">auto</span> subTensor     = factory.CreateSubTensorHandle(*tensorHandle, subTensorShape, origin);</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <span class="comment">// We expect a nullptr.</span></div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(subTensor == <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;}</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;TEST_CASE(<span class="stringliteral">&quot;CreateSubtensorMustBeSmallerThanParent&quot;</span>)</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;{</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    <span class="comment">// Create the factory to import tensors.</span></div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <a class="code" href="classarmnn_1_1_cl_import_tensor_handle_factory.xhtml">ClImportTensorHandleFactory</a> factory(static_cast&lt;MemorySourceFlags&gt;(<a class="code" href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277a1131a914388fac73e5f07b0ba0aad523">MemorySource::Malloc</a>),</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;                                        static_cast&lt;MemorySourceFlags&gt;(<a class="code" href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277a1131a914388fac73e5f07b0ba0aad523">MemorySource::Malloc</a>));</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    <span class="comment">// Create a standard import tensor.</span></div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> tensorShape{ 224, 224, 1, 1 };</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> tensorInfo(tensorShape, <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>);</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    <span class="keyword">auto</span> tensorHandle = factory.CreateTensorHandle(tensorInfo);</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    <span class="comment">// Ask for a subtensor that&#39;s the same size as the parent.</span></div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> subTensorShape{ 224, 224, 1, 1 };</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    uint32_t origin[4] = { 1, 1, 0, 0 };</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    <span class="comment">// This should result in a nullptr.</span></div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    <span class="keyword">auto</span> subTensor = factory.CreateSubTensorHandle(*tensorHandle, subTensorShape, origin);</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(subTensor == <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;}</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_xhtml"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00152">Tensor.hpp:152</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a5b05f3b7208ec7cea3338e30057c0bac"><div class="ttname"><a href="namespacearmnn.xhtml#a5b05f3b7208ec7cea3338e30057c0bac">armnn::MemorySourceFlags</a></div><div class="ttdeci">unsigned int MemorySourceFlags</div><div class="ttdef"><b>Definition:</b> <a href="_memory_sources_8hpp_source.xhtml#l00015">MemorySources.hpp:15</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml"><div class="ttname"><a href="namespacearmnn.xhtml">armnn</a></div><div class="ttdoc">Copyright (c) 2021 ARM Limited and Contributors. </div><div class="ttdef"><b>Definition:</b> <a href="01__00__quick__start_8dox_source.xhtml#l00006">01_00_quick_start.dox:6</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_shape_xhtml"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.xhtml">armnn::TensorShape</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00020">Tensor.hpp:20</a></div></div>
<div class="ttc" id="_assert_8hpp_xhtml_a5698be69cbd5dfe6c28fcd9867e8cbed"><div class="ttname"><a href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a></div><div class="ttdeci">#define ARMNN_ASSERT(COND)</div><div class="ttdef"><b>Definition:</b> <a href="_assert_8hpp_source.xhtml#l00014">Assert.hpp:14</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a14fcd7f88d11cea0a018269dca5f9277a1131a914388fac73e5f07b0ba0aad523"><div class="ttname"><a href="namespacearmnn.xhtml#a14fcd7f88d11cea0a018269dca5f9277a1131a914388fac73e5f07b0ba0aad523">armnn::MemorySource::Malloc</a></div></div>
<div class="ttc" id="classarmnn_1_1_invalid_argument_exception_xhtml"><div class="ttname"><a href="classarmnn_1_1_invalid_argument_exception.xhtml">armnn::InvalidArgumentException</a></div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.xhtml#l00080">Exceptions.hpp:80</a></div></div>
<div class="ttc" id="classarmnn_1_1_cl_import_tensor_handle_factory_xhtml"><div class="ttname"><a href="classarmnn_1_1_cl_import_tensor_handle_factory.xhtml">armnn::ClImportTensorHandleFactory</a></div><div class="ttdoc">This factory creates ClImportTensorHandles that refer to imported memory tensors. ...</div><div class="ttdef"><b>Definition:</b> <a href="_cl_import_tensor_handle_factory_8hpp_source.xhtml#l00023">ClImportTensorHandleFactory.hpp:23</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"><div class="ttname"><a href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51"><div class="ttname"><a href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a></div></div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.xhtml">src</a></li><li class="navelem"><a class="el" href="dir_0f3cdec46afbc61a1ded8e1687c9c9a0.xhtml">backends</a></li><li class="navelem"><a class="el" href="dir_1ad86c6d39ab715a831555571b9e98a5.xhtml">cl</a></li><li class="navelem"><a class="el" href="dir_02bab2737bbb2fb3882a0be567244fbf.xhtml">test</a></li><li class="navelem"><a class="el" href="_cl_import_tensor_handle_factory_tests_8cpp.xhtml">ClImportTensorHandleFactoryTests.cpp</a></li>
    <li class="footer">Generated on Wed Nov 17 2021 12:59:39 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>