blob: 81713b97219c08d0b7a4df11b2a5092c744c1b4d [file] [log] [blame]
Ryan OSheade36e4a2020-03-13 16:26:19 +00001<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6<meta name="generator" content="Doxygen 1.8.13"/>
7<meta name="viewport" content="width=device-width, initial-scale=1"/>
8<title>ArmNN: src/backends/backendsCommon/test/layerTests/Conv2dTestImpl.cpp File Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="navtree.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="resize.js"></script>
14<script type="text/javascript" src="navtreedata.js"></script>
15<script type="text/javascript" src="navtree.js"></script>
16<script type="text/javascript">
17 $(document).ready(initResizable);
18</script>
19<link href="search/search.css" rel="stylesheet" type="text/css"/>
20<script type="text/javascript" src="search/searchdata.js"></script>
21<script type="text/javascript" src="search/search.js"></script>
22<link href="doxygen.css" rel="stylesheet" type="text/css" />
23</head>
24<body>
25<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
26<div id="titlearea">
27<table cellspacing="0" cellpadding="0">
28 <tbody>
29 <tr style="height: 56px;">
30 <td id="projectalign" style="padding-left: 0.5em;">
31 <div id="projectname">ArmNN
32 &#160;<span id="projectnumber">NotReleased</span>
33 </div>
34 </td>
35 </tr>
36 </tbody>
37</table>
38</div>
39<!-- end header part -->
40<!-- Generated by Doxygen 1.8.13 -->
41<script type="text/javascript">
42var searchBox = new SearchBox("searchBox", "search",false,'Search');
43</script>
44<script type="text/javascript" src="menudata.js"></script>
45<script type="text/javascript" src="menu.js"></script>
46<script type="text/javascript">
47$(function() {
48 initMenu('',true,false,'search.php','Search');
49 $(document).ready(function() { init_search(); });
50});
51</script>
52<div id="main-nav"></div>
53</div><!-- top -->
54<div id="side-nav" class="ui-resizable side-nav-resizable">
55 <div id="nav-tree">
56 <div id="nav-tree-contents">
57 <div id="nav-sync" class="sync"></div>
58 </div>
59 </div>
60 <div id="splitbar" style="-moz-user-select:none;"
61 class="ui-resizable-handle">
62 </div>
63</div>
64<script type="text/javascript">
65$(document).ready(function(){initNavTree('_conv2d_test_impl_8cpp.html','');});
66</script>
67<div id="doc-content">
68<!-- window showing the filter options -->
69<div id="MSearchSelectWindow"
70 onmouseover="return searchBox.OnSearchSelectShow()"
71 onmouseout="return searchBox.OnSearchSelectHide()"
72 onkeydown="return searchBox.OnSearchSelectKey(event)">
73</div>
74
75<!-- iframe showing the search results (closed by default) -->
76<div id="MSearchResultsWindow">
77<iframe src="javascript:void(0)" frameborder="0"
78 name="MSearchResults" id="MSearchResults">
79</iframe>
80</div>
81
82<div class="header">
83 <div class="summary">
84<a href="#func-members">Functions</a> </div>
85 <div class="headertitle">
86<div class="title">Conv2dTestImpl.cpp File Reference</div> </div>
87</div><!--header-->
88<div class="contents">
89<div class="textblock"><code>#include &quot;<a class="el" href="_conv2d_test_impl_8hpp_source.html">Conv2dTestImpl.hpp</a>&quot;</code><br />
90<code>#include &lt;<a class="el" href="_quantize_helper_8hpp_source.html">QuantizeHelper.hpp</a>&gt;</code><br />
91<code>#include &lt;<a class="el" href="_tensor_utils_8hpp_source.html">armnnUtils/TensorUtils.hpp</a>&gt;</code><br />
92<code>#include &lt;<a class="el" href="_data_layout_indexed_8hpp_source.html">armnnUtils/DataLayoutIndexed.hpp</a>&gt;</code><br />
93<code>#include &lt;<a class="el" href="_permute_8hpp_source.html">armnnUtils/Permute.hpp</a>&gt;</code><br />
94<code>#include &lt;<a class="el" href="_cpu_tensor_handle_8hpp_source.html">backendsCommon/CpuTensorHandle.hpp</a>&gt;</code><br />
95<code>#include &lt;<a class="el" href="_data_layout_utils_8hpp_source.html">backendsCommon/test/DataLayoutUtils.hpp</a>&gt;</code><br />
96<code>#include &lt;<a class="el" href="_tensor_copy_utils_8hpp_source.html">backendsCommon/test/TensorCopyUtils.hpp</a>&gt;</code><br />
97<code>#include &lt;<a class="el" href="_workload_test_utils_8hpp_source.html">backendsCommon/test/WorkloadTestUtils.hpp</a>&gt;</code><br />
98<code>#include &lt;<a class="el" href="_tensor_helpers_8hpp_source.html">test/TensorHelpers.hpp</a>&gt;</code><br />
99<code>#include &lt;boost/numeric/conversion/cast.hpp&gt;</code><br />
100<code>#include &lt;string&gt;</code><br />
101</div>
102<p><a href="_conv2d_test_impl_8cpp_source.html">Go to the source code of this file.</a></p>
103<table class="memberdecls">
104<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
105Functions</h2></td></tr>
106<tr class="memitem:ad80bc46727797692d35f94d5935469cb"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, typename T = armnn::ResolveType&lt;ArmnnType&gt;&gt; </td></tr>
107<tr class="memitem:ad80bc46727797692d35f94d5935469cb"><td class="memTemplItemLeft" align="right" valign="top">boost::multi_array&lt; T, 1 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#ad80bc46727797692d35f94d5935469cb">GetBias2</a> (bool biasEnabled, float qScale)</td></tr>
108<tr class="separator:ad80bc46727797692d35f94d5935469cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
109<tr class="memitem:aa794621b8665d1df93a1c9aa95d5a90d"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, typename T = armnn::ResolveType&lt;ArmnnType&gt;&gt; </td></tr>
110<tr class="memitem:aa794621b8665d1df93a1c9aa95d5a90d"><td class="memTemplItemLeft" align="right" valign="top">boost::multi_array&lt; T, 1 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#aa794621b8665d1df93a1c9aa95d5a90d">GetBias4</a> (bool biasEnabled, float qScale)</td></tr>
111<tr class="separator:aa794621b8665d1df93a1c9aa95d5a90d"><td class="memSeparator" colspan="2">&#160;</td></tr>
112<tr class="memitem:ae04bff4e44deed6908feae29e57ffe0c"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, typename T = armnn::ResolveType&lt;ArmnnType&gt;&gt; </td></tr>
113<tr class="memitem:ae04bff4e44deed6908feae29e57ffe0c"><td class="memTemplItemLeft" align="right" valign="top">boost::multi_array&lt; T, 1 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#ae04bff4e44deed6908feae29e57ffe0c">GetBias8</a> (bool biasEnabled, float qScale)</td></tr>
114<tr class="separator:ae04bff4e44deed6908feae29e57ffe0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
115<tr class="memitem:a3481304dfd3e941b809c64979b940ad5"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, typename T = armnn::ResolveType&lt;ArmnnType&gt;&gt; </td></tr>
116<tr class="memitem:a3481304dfd3e941b809c64979b940ad5"><td class="memTemplItemLeft" align="right" valign="top">boost::multi_array&lt; T, 1 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a3481304dfd3e941b809c64979b940ad5">GetBias</a> (bool biasEnabled, float qScale, <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputInfo, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
117<tr class="separator:a3481304dfd3e941b809c64979b940ad5"><td class="memSeparator" colspan="2">&#160;</td></tr>
118<tr class="memitem:aa1f4ce02e0904dc8cf1b7f42bc34d346"><td class="memTemplParams" colspan="2">template&lt;typename T , typename B &gt; </td></tr>
119<tr class="memitem:aa1f4ce02e0904dc8cf1b7f42bc34d346"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#aa1f4ce02e0904dc8cf1b7f42bc34d346">ApplyBias</a> (std::vector&lt; T &gt; &amp;v, float vScale, int32_t vOffset, const std::vector&lt; B &gt; &amp;bias, float bScale, int32_t bOffset, uint32_t w, uint32_t h)</td></tr>
120<tr class="separator:aa1f4ce02e0904dc8cf1b7f42bc34d346"><td class="memSeparator" colspan="2">&#160;</td></tr>
121<tr class="memitem:a7bd1547ceefdc1acedbb1fa6445b2968"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType&lt;ArmnnType&gt;, typename B = armnn::ResolveType&lt;ArmnnBType&gt;&gt; </td></tr>
122<tr class="memitem:a7bd1547ceefdc1acedbb1fa6445b2968"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a7bd1547ceefdc1acedbb1fa6445b2968">SimpleConvolution2dTestImpl</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, const boost::multi_array&lt; T, 4 &gt; &amp;originalInput, const boost::multi_array&lt; T, 4 &gt; &amp;originalKernel, const boost::multi_array&lt; B, 1 &gt; &amp;bias, const boost::multi_array&lt; T, 4 &gt; &amp;originalOutputExpected, float qScale, int32_t qOffset, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout=<a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a>, uint32_t padLeft=0, uint32_t padTop=0, uint32_t padRight=0, uint32_t padBottom=0, uint32_t strideX=1, uint32_t strideY=1, uint32_t dilationX=1, uint32_t dilationY=1)</td></tr>
123<tr class="separator:a7bd1547ceefdc1acedbb1fa6445b2968"><td class="memSeparator" colspan="2">&#160;</td></tr>
124<tr class="memitem:ac79e75b3bcb6cb8c34f0bd4e3e35f73e"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType&lt;ArmnnType&gt;, typename B = armnn::ResolveType&lt;ArmnnBType&gt;&gt; </td></tr>
125<tr class="memitem:ac79e75b3bcb6cb8c34f0bd4e3e35f73e"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#ac79e75b3bcb6cb8c34f0bd4e3e35f73e">SimpleConvolution2dNhwcTestImpl</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, const boost::multi_array&lt; T, 4 &gt; &amp;input, const boost::multi_array&lt; T, 4 &gt; &amp;kernel, const boost::multi_array&lt; B, 1 &gt; &amp;bias, const boost::multi_array&lt; T, 4 &gt; &amp;outputExpected, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> dataLayout, float qScale, int32_t qOffset, uint32_t padLeft=1, uint32_t padTop=1, uint32_t padRight=1, uint32_t padBottom=1, uint32_t strideX=1, uint32_t strideY=1)</td></tr>
126<tr class="separator:ac79e75b3bcb6cb8c34f0bd4e3e35f73e"><td class="memSeparator" colspan="2">&#160;</td></tr>
127<tr class="memitem:af541f19e3d1ad345cc9208fc2d2e7b19"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType&lt;ArmnnType&gt;&gt; </td></tr>
128<tr class="memitem:af541f19e3d1ad345cc9208fc2d2e7b19"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#af541f19e3d1ad345cc9208fc2d2e7b19">Convolution1dTestImpl</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, float qScale, int32_t qOffset, bool biasEnabled)</td></tr>
129<tr class="separator:af541f19e3d1ad345cc9208fc2d2e7b19"><td class="memSeparator" colspan="2">&#160;</td></tr>
130<tr class="memitem:a8225effadfc56a5d831ae0f7f686a6cf"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, typename T = armnn::ResolveType&lt;ArmnnType&gt;&gt; </td></tr>
131<tr class="memitem:a8225effadfc56a5d831ae0f7f686a6cf"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a8225effadfc56a5d831ae0f7f686a6cf">SimpleConvolution2d3x3NhwcTestCommon</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, float qScale, int32_t qOffset, bool biasEnabled, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> dataLayout)</td></tr>
132<tr class="separator:a8225effadfc56a5d831ae0f7f686a6cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
133<tr class="memitem:aafa5b575d2bc27ec7229f1d87ab8efdb"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, typename T = armnn::ResolveType&lt;ArmnnType&gt;&gt; </td></tr>
134<tr class="memitem:aafa5b575d2bc27ec7229f1d87ab8efdb"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#aafa5b575d2bc27ec7229f1d87ab8efdb">SimpleConvolution2d3x3Stride2x2TestCommon</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, float qScale, int32_t qOffset, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> &amp;dataLayout)</td></tr>
135<tr class="separator:aafa5b575d2bc27ec7229f1d87ab8efdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
136<tr class="memitem:a3660079f1e20e5b1618402dfc5214441"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType&lt;ArmnnType&gt;&gt; </td></tr>
137<tr class="memitem:a3660079f1e20e5b1618402dfc5214441"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a3660079f1e20e5b1618402dfc5214441">SimpleConvolution2d3x5TestCommon</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, float qScale, int32_t qOffset, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
138<tr class="separator:a3660079f1e20e5b1618402dfc5214441"><td class="memSeparator" colspan="2">&#160;</td></tr>
139<tr class="memitem:a5070a9bac7ba582ed116a8b2323ed2a5"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType&lt;ArmnnType&gt;&gt; </td></tr>
140<tr class="memitem:a5070a9bac7ba582ed116a8b2323ed2a5"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a5070a9bac7ba582ed116a8b2323ed2a5">SimpleConvolution2d3x3TestCommon</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, float qScale, int32_t qOffset, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
141<tr class="separator:a5070a9bac7ba582ed116a8b2323ed2a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
142<tr class="memitem:a35ad1225c524b4594b461e613695ee4a"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType&lt;ArmnnType&gt;&gt; </td></tr>
143<tr class="memitem:a35ad1225c524b4594b461e613695ee4a"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a35ad1225c524b4594b461e613695ee4a">Convolution2dAsymmetricPaddingLargerThanHalfKernelSizeTestCommon</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout, float qScale, int32_t qOffset)</td></tr>
144<tr class="separator:a35ad1225c524b4594b461e613695ee4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
145<tr class="memitem:af32b0642214e3129d8e93fa45a12e704"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType&lt;ArmnnType&gt;&gt; </td></tr>
146<tr class="memitem:af32b0642214e3129d8e93fa45a12e704"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#af32b0642214e3129d8e93fa45a12e704">SimpleConvolution2dAsymmetricPaddingTestCommon</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout, float qScale, int32_t qOffset)</td></tr>
147<tr class="separator:af32b0642214e3129d8e93fa45a12e704"><td class="memSeparator" colspan="2">&#160;</td></tr>
148<tr class="memitem:ad12c52b6d41931219bdfec5fbf5990bd"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType&lt;ArmnnType&gt;&gt; </td></tr>
149<tr class="memitem:ad12c52b6d41931219bdfec5fbf5990bd"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#ad12c52b6d41931219bdfec5fbf5990bd">Convolution2d3x3DilationTestCommon</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, const std::vector&lt; float &gt; &amp;inputNoQuantizedValues, <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;inputTensorInfo, const std::vector&lt; float &gt; &amp;kernelNoQuantizedValues, <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;kernelTensorInfo, const std::vector&lt; float &gt; &amp;outputExpectedNoQuantizedValues, <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;outputTensorInfo, uint32_t dilationX, uint32_t dilationY, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout=<a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a>, uint32_t padLeft=0, uint32_t padTop=0, uint32_t padRight=0, uint32_t padBottom=0, uint32_t strideX=1, uint32_t strideY=1, bool biasEnabled=<a class="el" href="_ref_layer_tests_8cpp.html#a67e2647a90dec71bb79c8b38872ba570">false</a>)</td></tr>
150<tr class="separator:ad12c52b6d41931219bdfec5fbf5990bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
151<tr class="memitem:a90abce368d7f16012bef5ee461329484"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T &gt; </td></tr>
152<tr class="memitem:a90abce368d7f16012bef5ee461329484"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a90abce368d7f16012bef5ee461329484">Convolution2d3x3Dilation3x3Test</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
153<tr class="separator:a90abce368d7f16012bef5ee461329484"><td class="memSeparator" colspan="2">&#160;</td></tr>
154<tr class="memitem:a99ef3f48cbd057e0169bc80dc77331ef"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T &gt; </td></tr>
155<tr class="memitem:a99ef3f48cbd057e0169bc80dc77331ef"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a99ef3f48cbd057e0169bc80dc77331ef">Convolution2d2x3x3Dilation3x3Test</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
156<tr class="separator:a99ef3f48cbd057e0169bc80dc77331ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
157<tr class="memitem:acf553288e3b5060768fb91e064993678"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T &gt; </td></tr>
158<tr class="memitem:acf553288e3b5060768fb91e064993678"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#acf553288e3b5060768fb91e064993678">Convolution2d2x2Dilation2x2Padding2x2Stride3x3Test</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
159<tr class="separator:acf553288e3b5060768fb91e064993678"><td class="memSeparator" colspan="2">&#160;</td></tr>
160<tr class="memitem:a638295d292bfdcf71899b57396703c80"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, typename T = armnn::ResolveType&lt;ArmnnType&gt;&gt; </td></tr>
161<tr class="memitem:a638295d292bfdcf71899b57396703c80"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a638295d292bfdcf71899b57396703c80">CompareConvolution2dTestImpl</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, <a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;refWorkloadFactory)</td></tr>
162<tr class="separator:a638295d292bfdcf71899b57396703c80"><td class="memSeparator" colspan="2">&#160;</td></tr>
163<tr class="memitem:aa405363108e52032fb1e23c3f5a03a57"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType&lt;ArmnnType&gt;, typename B = armnn::ResolveType&lt;ArmnnBType&gt;&gt; </td></tr>
164<tr class="memitem:aa405363108e52032fb1e23c3f5a03a57"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#aa405363108e52032fb1e23c3f5a03a57">DepthwiseConvolution2dAsymmetricTestImpl</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, const boost::multi_array&lt; T, 4 &gt; &amp;input, const boost::multi_array&lt; T, 4 &gt; &amp;kernel, const boost::multi_array&lt; B, 1 &gt; &amp;bias, const boost::multi_array&lt; T, 4 &gt; &amp;outputExpected, float qScale, int32_t qOffset, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout, uint32_t padLeft=0, uint32_t padTop=0, uint32_t padRight=0, uint32_t padBottom=0, uint32_t strideX=1, uint32_t strideY=1)</td></tr>
165<tr class="separator:aa405363108e52032fb1e23c3f5a03a57"><td class="memSeparator" colspan="2">&#160;</td></tr>
166<tr class="memitem:a01eae690cbfa5359968f4b8ee13b8814"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType&lt;ArmnnType&gt;&gt; </td></tr>
167<tr class="memitem:a01eae690cbfa5359968f4b8ee13b8814"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a01eae690cbfa5359968f4b8ee13b8814">DepthwiseConvolution2dDepthMul1TestImpl</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, float qScale, int32_t qOffset, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
168<tr class="separator:a01eae690cbfa5359968f4b8ee13b8814"><td class="memSeparator" colspan="2">&#160;</td></tr>
169<tr class="memitem:ae3cc54b77789d10caeb5a438a0821ba0"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType&lt;ArmnnType&gt;&gt; </td></tr>
170<tr class="memitem:ae3cc54b77789d10caeb5a438a0821ba0"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#ae3cc54b77789d10caeb5a438a0821ba0">DepthwiseConvolution2dTestImpl</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, float qScale, int32_t qOffset, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
171<tr class="separator:ae3cc54b77789d10caeb5a438a0821ba0"><td class="memSeparator" colspan="2">&#160;</td></tr>
172<tr class="memitem:a46e9706106f1b08c964d953154c66ad6"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType&lt;ArmnnType&gt;, typename B = armnn::ResolveType&lt;ArmnnBType&gt;&gt; </td></tr>
173<tr class="memitem:a46e9706106f1b08c964d953154c66ad6"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a46e9706106f1b08c964d953154c66ad6">DepthwiseConvolution2dTestImpl</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, const boost::multi_array&lt; T, 4 &gt; &amp;originalInput, const boost::multi_array&lt; T, 4 &gt; &amp;originalKernel, const boost::multi_array&lt; B, 1 &gt; &amp;bias, const boost::multi_array&lt; T, 4 &gt; &amp;originalOutputExpected, float qScale, int32_t qOffset, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout=<a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a>, uint32_t padLeft=0, uint32_t padTop=0, uint32_t padRight=0, uint32_t padBottom=0, uint32_t strideX=1, uint32_t strideY=1, uint32_t dilationX=1, uint32_t dilationY=1)</td></tr>
174<tr class="separator:a46e9706106f1b08c964d953154c66ad6"><td class="memSeparator" colspan="2">&#160;</td></tr>
175<tr class="memitem:a952b4460c66365d89ebb3df940bbd9bd"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType&lt;ArmnnType&gt;&gt; </td></tr>
176<tr class="memitem:a952b4460c66365d89ebb3df940bbd9bd"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a952b4460c66365d89ebb3df940bbd9bd">DepthwiseConvolution2dAsymmetricTestCommon</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, float qScale, int32_t qOffset, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
177<tr class="separator:a952b4460c66365d89ebb3df940bbd9bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
178<tr class="memitem:a6271caa80dbf6fc82f97081d3d99d987"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType&lt;ArmnnType&gt;&gt; </td></tr>
179<tr class="memitem:a6271caa80dbf6fc82f97081d3d99d987"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a6271caa80dbf6fc82f97081d3d99d987">DepthwiseConvolution2dNhwcTestCommon</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, float qScale, int32_t qOffset, bool biasEnabled)</td></tr>
180<tr class="separator:a6271caa80dbf6fc82f97081d3d99d987"><td class="memSeparator" colspan="2">&#160;</td></tr>
181<tr class="memitem:ac7af28eafb5b583057bca4471ce22328"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType&lt;ArmnnType&gt;&gt; </td></tr>
182<tr class="memitem:ac7af28eafb5b583057bca4471ce22328"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#ac7af28eafb5b583057bca4471ce22328">SimpleDepthwiseConvolution2d3x3Dilation3x3NhwcTestCommon</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, float qScale, int32_t qOffset, bool biasEnabled)</td></tr>
183<tr class="separator:ac7af28eafb5b583057bca4471ce22328"><td class="memSeparator" colspan="2">&#160;</td></tr>
184<tr class="memitem:a80ee4cde34185af792db65aa40cf5c98"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType&lt;ArmnnType&gt;&gt; </td></tr>
185<tr class="memitem:a80ee4cde34185af792db65aa40cf5c98"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a80ee4cde34185af792db65aa40cf5c98">DepthwiseConvolution2d3x3DilationTestCommon</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, const std::vector&lt; float &gt; &amp;inputNoQuantizedValues, <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;inputTensorInfo, const std::vector&lt; float &gt; &amp;kernelNoQuantizedValues, <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;kernelTensorInfo, const std::vector&lt; float &gt; &amp;outputExpectedNoQuantizedValues, <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;outputTensorInfo, uint32_t dilationX, uint32_t dilationY, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout=<a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a>, bool biasEnabled=<a class="el" href="_ref_layer_tests_8cpp.html#a67e2647a90dec71bb79c8b38872ba570">false</a>)</td></tr>
186<tr class="separator:a80ee4cde34185af792db65aa40cf5c98"><td class="memSeparator" colspan="2">&#160;</td></tr>
187<tr class="memitem:a1c3398bdb48e4ce4643a1eeaf3e054a3"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T &gt; </td></tr>
188<tr class="memitem:a1c3398bdb48e4ce4643a1eeaf3e054a3"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a1c3398bdb48e4ce4643a1eeaf3e054a3">DepthwiseConvolution2d3x3Dilation3x3Test</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
189<tr class="separator:a1c3398bdb48e4ce4643a1eeaf3e054a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
190<tr class="memitem:acffa50ae3185e3e5302909f27e7e9a02"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T &gt; </td></tr>
191<tr class="memitem:acffa50ae3185e3e5302909f27e7e9a02"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#acffa50ae3185e3e5302909f27e7e9a02">DepthwiseConvolution2d2x3x3Dilation3x3Test</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
192<tr class="separator:acffa50ae3185e3e5302909f27e7e9a02"><td class="memSeparator" colspan="2">&#160;</td></tr>
193<tr class="memitem:a0da6534b3a5d2f923dcd73553950129a"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T &gt; </td></tr>
194<tr class="memitem:a0da6534b3a5d2f923dcd73553950129a"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a0da6534b3a5d2f923dcd73553950129a">DepthwiseConvolution2dMult4Test</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
195<tr class="separator:a0da6534b3a5d2f923dcd73553950129a"><td class="memSeparator" colspan="2">&#160;</td></tr>
196<tr class="memitem:aaed50a372a6b59b20e38469856a3ce6b"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T &gt; </td></tr>
197<tr class="memitem:aaed50a372a6b59b20e38469856a3ce6b"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#aaed50a372a6b59b20e38469856a3ce6b">DepthwiseConvolution2dMult2Test</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
198<tr class="separator:aaed50a372a6b59b20e38469856a3ce6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
199<tr class="memitem:acac29a0b58c3c3f2928e0d7ee258c066"><td class="memTemplParams" colspan="2">template&lt;armnn::DataType ArmnnType, typename T = armnn::ResolveType&lt;ArmnnType&gt;&gt; </td></tr>
200<tr class="memitem:acac29a0b58c3c3f2928e0d7ee258c066"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; T, 4 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#acac29a0b58c3c3f2928e0d7ee258c066">CompareDepthwiseConvolution2dTestImpl</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, <a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;refWorkloadFactory, const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a> &amp;layout)</td></tr>
201<tr class="separator:acac29a0b58c3c3f2928e0d7ee258c066"><td class="memSeparator" colspan="2">&#160;</td></tr>
202<tr class="memitem:a7ea8f82c89483fdec102125b82a798c7"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; <a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a> &gt;, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a7ea8f82c89483fdec102125b82a798c7">Convolution2d3x3Dilation3x3Test&lt; armnn::DataType::Float32, armnn::DataType::Float32 &gt;</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;, bool, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>)</td></tr>
203<tr class="separator:a7ea8f82c89483fdec102125b82a798c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
204<tr class="memitem:ac580208ebb11ac2d93076a5a7a346b9f"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; <a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a> &gt;, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#ac580208ebb11ac2d93076a5a7a346b9f">Convolution2d3x3Dilation3x3Test&lt; armnn::DataType::QAsymmU8, armnn::DataType::Signed32 &gt;</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;, bool, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>)</td></tr>
205<tr class="separator:ac580208ebb11ac2d93076a5a7a346b9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
206<tr class="memitem:af84d6d89c899073318abbfa25292c36e"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; <a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a> &gt;, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#af84d6d89c899073318abbfa25292c36e">Convolution2d3x3Dilation3x3Test&lt; armnn::DataType::QSymmS16, armnn::DataType::Signed32 &gt;</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;, bool, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>)</td></tr>
207<tr class="separator:af84d6d89c899073318abbfa25292c36e"><td class="memSeparator" colspan="2">&#160;</td></tr>
208<tr class="memitem:ae4aeb75cd7f8051b6715ac315ae88254"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; <a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a> &gt;, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#ae4aeb75cd7f8051b6715ac315ae88254">Convolution2d2x3x3Dilation3x3Test&lt; armnn::DataType::Float32, armnn::DataType::Float32 &gt;</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;, bool, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>)</td></tr>
209<tr class="separator:ae4aeb75cd7f8051b6715ac315ae88254"><td class="memSeparator" colspan="2">&#160;</td></tr>
210<tr class="memitem:aa2e414537fb1d51510cd7d1d3c85066b"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; <a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a> &gt;, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#aa2e414537fb1d51510cd7d1d3c85066b">Convolution2d2x3x3Dilation3x3Test&lt; armnn::DataType::QAsymmU8, armnn::DataType::Signed32 &gt;</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;, bool, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>)</td></tr>
211<tr class="separator:aa2e414537fb1d51510cd7d1d3c85066b"><td class="memSeparator" colspan="2">&#160;</td></tr>
212<tr class="memitem:a48050c4e985c5741b51b55eb9961a19a"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; <a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a> &gt;, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a48050c4e985c5741b51b55eb9961a19a">Convolution2d2x3x3Dilation3x3Test&lt; armnn::DataType::QSymmS16, armnn::DataType::Signed32 &gt;</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;, bool, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>)</td></tr>
213<tr class="separator:a48050c4e985c5741b51b55eb9961a19a"><td class="memSeparator" colspan="2">&#160;</td></tr>
214<tr class="memitem:a72ba5d8a546cd3e8bf890058d74959d1"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; <a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a> &gt;, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a72ba5d8a546cd3e8bf890058d74959d1">Convolution2d2x2Dilation2x2Padding2x2Stride3x3Test&lt; armnn::DataType::Float32, armnn::DataType::Float32 &gt;</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
215<tr class="separator:a72ba5d8a546cd3e8bf890058d74959d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
216<tr class="memitem:adfbd5fcca8b67b69f528fd1a270a1c53"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; <a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a> &gt;, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#adfbd5fcca8b67b69f528fd1a270a1c53">Convolution2d2x2Dilation2x2Padding2x2Stride3x3Test&lt; armnn::DataType::QAsymmU8, armnn::DataType::Signed32 &gt;</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
217<tr class="separator:adfbd5fcca8b67b69f528fd1a270a1c53"><td class="memSeparator" colspan="2">&#160;</td></tr>
218<tr class="memitem:a0ca68580fabbe96baccab2139bf8fec3"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; <a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a> &gt;, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a0ca68580fabbe96baccab2139bf8fec3">Convolution2d2x2Dilation2x2Padding2x2Stride3x3Test&lt; armnn::DataType::QSymmS16, armnn::DataType::Signed32 &gt;</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
219<tr class="separator:a0ca68580fabbe96baccab2139bf8fec3"><td class="memSeparator" colspan="2">&#160;</td></tr>
220<tr class="memitem:a5d3f9d15fbc0e3f43e100efb545e6ce6"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; <a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a> &gt;, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a5d3f9d15fbc0e3f43e100efb545e6ce6">DepthwiseConvolution2d3x3Dilation3x3Test&lt; armnn::DataType::Float32, armnn::DataType::Float32 &gt;</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;, bool, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>)</td></tr>
221<tr class="separator:a5d3f9d15fbc0e3f43e100efb545e6ce6"><td class="memSeparator" colspan="2">&#160;</td></tr>
222<tr class="memitem:a7703f4745f048b3a0b0c082b01d9715e"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; <a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a> &gt;, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a7703f4745f048b3a0b0c082b01d9715e">DepthwiseConvolution2d3x3Dilation3x3Test&lt; armnn::DataType::QAsymmU8, armnn::DataType::Signed32 &gt;</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;, bool, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>)</td></tr>
223<tr class="separator:a7703f4745f048b3a0b0c082b01d9715e"><td class="memSeparator" colspan="2">&#160;</td></tr>
224<tr class="memitem:ae2611d5cac758d2eebff6450315aa7df"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; <a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a> &gt;, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#ae2611d5cac758d2eebff6450315aa7df">DepthwiseConvolution2d3x3Dilation3x3Test&lt; armnn::DataType::QSymmS16, armnn::DataType::Signed32 &gt;</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;, bool, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>)</td></tr>
225<tr class="separator:ae2611d5cac758d2eebff6450315aa7df"><td class="memSeparator" colspan="2">&#160;</td></tr>
226<tr class="memitem:abfba475aaa254cb80fea6f6b9e2885ed"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; <a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a> &gt;, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#abfba475aaa254cb80fea6f6b9e2885ed">DepthwiseConvolution2d2x3x3Dilation3x3Test&lt; armnn::DataType::Float32, armnn::DataType::Float32 &gt;</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;, bool, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>)</td></tr>
227<tr class="separator:abfba475aaa254cb80fea6f6b9e2885ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
228<tr class="memitem:a7d1005e18161a898d383f302bda746ea"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; <a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a> &gt;, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a7d1005e18161a898d383f302bda746ea">DepthwiseConvolution2d2x3x3Dilation3x3Test&lt; armnn::DataType::QAsymmU8, armnn::DataType::Signed32 &gt;</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;, bool, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>)</td></tr>
229<tr class="separator:a7d1005e18161a898d383f302bda746ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
230<tr class="memitem:adc98546ccc8455972832038cf8a296c9"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; <a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a> &gt;, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#adc98546ccc8455972832038cf8a296c9">DepthwiseConvolution2d2x3x3Dilation3x3Test&lt; armnn::DataType::QSymmS16, armnn::DataType::Signed32 &gt;</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;, bool, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>)</td></tr>
231<tr class="separator:adc98546ccc8455972832038cf8a296c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
232<tr class="memitem:a52590a78e77f52f9be313967c35b870b"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; <a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a> &gt;, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a52590a78e77f52f9be313967c35b870b">DepthwiseConvolution2dMult4Test&lt; armnn::DataType::Float32, armnn::DataType::Float32 &gt;</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
233<tr class="separator:a52590a78e77f52f9be313967c35b870b"><td class="memSeparator" colspan="2">&#160;</td></tr>
234<tr class="memitem:a3097119efa3acd563c309feec628b233"><td class="memItemLeft" align="right" valign="top">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; <a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a> &gt;, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a3097119efa3acd563c309feec628b233">DepthwiseConvolution2dMult2Test&lt; armnn::DataType::Float32, armnn::DataType::Float32 &gt;</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
235<tr class="separator:a3097119efa3acd563c309feec628b233"><td class="memSeparator" colspan="2">&#160;</td></tr>
236<tr class="memitem:afb5e7d86e241292d9cb899b960da54af"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; float, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#afb5e7d86e241292d9cb899b960da54af">SimpleConvolution2d3x5Test</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
237<tr class="separator:afb5e7d86e241292d9cb899b960da54af"><td class="memSeparator" colspan="2">&#160;</td></tr>
238<tr class="memitem:a8ffca1c4b38a68b10ba06f4f1416660f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; uint8_t, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a8ffca1c4b38a68b10ba06f4f1416660f">SimpleConvolution2d3x5Uint8Test</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
239<tr class="separator:a8ffca1c4b38a68b10ba06f4f1416660f"><td class="memSeparator" colspan="2">&#160;</td></tr>
240<tr class="memitem:acbe1a2adccd9e0aad14fc0ccb9266b0d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; float, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#acbe1a2adccd9e0aad14fc0ccb9266b0d">SimpleConvolution2d3x3Test</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
241<tr class="separator:acbe1a2adccd9e0aad14fc0ccb9266b0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
242<tr class="memitem:ac7bae01fdca8edac70cc9bc722426b17"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; float, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#ac7bae01fdca8edac70cc9bc722426b17">SimpleConvolution2d3x3NhwcTest</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled)</td></tr>
243<tr class="separator:ac7bae01fdca8edac70cc9bc722426b17"><td class="memSeparator" colspan="2">&#160;</td></tr>
244<tr class="memitem:af4ac6874d18e1cb59873a17073512873"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; float, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#af4ac6874d18e1cb59873a17073512873">SimpleConvolution2d3x3Stride2x2Test</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
245<tr class="separator:af4ac6874d18e1cb59873a17073512873"><td class="memSeparator" colspan="2">&#160;</td></tr>
246<tr class="memitem:ad45f359d9d4bee360bee857faa79d292"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; uint8_t, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#ad45f359d9d4bee360bee857faa79d292">SimpleConvolution2d3x3Uint8Test</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
247<tr class="separator:ad45f359d9d4bee360bee857faa79d292"><td class="memSeparator" colspan="2">&#160;</td></tr>
248<tr class="memitem:a9dcd2fb98f5c3284c74f65a7c7a69da1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; int16_t, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a9dcd2fb98f5c3284c74f65a7c7a69da1">SimpleConvolution2d3x5QSymm16Test</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
249<tr class="separator:a9dcd2fb98f5c3284c74f65a7c7a69da1"><td class="memSeparator" colspan="2">&#160;</td></tr>
250<tr class="memitem:abac8f73ae590a93fe91115371ae4ced3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; int16_t, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#abac8f73ae590a93fe91115371ae4ced3">SimpleConvolution2d3x3QSymm16Test</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
251<tr class="separator:abac8f73ae590a93fe91115371ae4ced3"><td class="memSeparator" colspan="2">&#160;</td></tr>
252<tr class="memitem:af7f2cd23423130ebdd916de12bc0eb1d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; float, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#af7f2cd23423130ebdd916de12bc0eb1d">Convolution2dAsymmetricPaddingTest</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
253<tr class="separator:af7f2cd23423130ebdd916de12bc0eb1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
254<tr class="memitem:a48884a37a6b783185c608a68cfce752f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; float, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a48884a37a6b783185c608a68cfce752f">Convolution2dAsymmetricPaddingLargerThanHalfKernelSizeTest</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
255<tr class="separator:a48884a37a6b783185c608a68cfce752f"><td class="memSeparator" colspan="2">&#160;</td></tr>
256<tr class="memitem:ac7fac5767dabd650d3d8829572717064"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; float, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#ac7fac5767dabd650d3d8829572717064">Convolution1dTest</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled)</td></tr>
257<tr class="separator:ac7fac5767dabd650d3d8829572717064"><td class="memSeparator" colspan="2">&#160;</td></tr>
258<tr class="memitem:a40bc412ed2a6d2f764655070c02c036b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; uint8_t, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a40bc412ed2a6d2f764655070c02c036b">Convolution1dUint8Test</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled)</td></tr>
259<tr class="separator:a40bc412ed2a6d2f764655070c02c036b"><td class="memSeparator" colspan="2">&#160;</td></tr>
260<tr class="memitem:a370a5216668b507284677234264a22a2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; uint8_t, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a370a5216668b507284677234264a22a2">Convolution2dPerAxisQuantTest</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
261<tr class="separator:a370a5216668b507284677234264a22a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
262<tr class="memitem:a2b2c2f8f89d96932e62b95e7a22961d4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; float, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a2b2c2f8f89d96932e62b95e7a22961d4">CompareConvolution2dTest</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, <a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;refWorkloadFactory)</td></tr>
263<tr class="separator:a2b2c2f8f89d96932e62b95e7a22961d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
264<tr class="memitem:a11fbd94028ab646528b42d0c8c55eee1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; float, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a11fbd94028ab646528b42d0c8c55eee1">DepthwiseConvolution2dTest</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
265<tr class="separator:a11fbd94028ab646528b42d0c8c55eee1"><td class="memSeparator" colspan="2">&#160;</td></tr>
266<tr class="memitem:a0cccb5cffee89004bc8d9fb309ed6636"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; float, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a0cccb5cffee89004bc8d9fb309ed6636">DepthwiseConvolution2dDepthNhwcTest</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled)</td></tr>
267<tr class="separator:a0cccb5cffee89004bc8d9fb309ed6636"><td class="memSeparator" colspan="2">&#160;</td></tr>
268<tr class="memitem:a8b32d950a40903f502f5e1ec0dcab0bd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; float, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a8b32d950a40903f502f5e1ec0dcab0bd">DepthwiseConvolution2dDepthMul1Test</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
269<tr class="separator:a8b32d950a40903f502f5e1ec0dcab0bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
270<tr class="memitem:ab020b4a99bf905b61a1c5e03332b63a6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; float, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#ab020b4a99bf905b61a1c5e03332b63a6">DepthwiseConvolution2dDepthMul64Test</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager)</td></tr>
271<tr class="separator:ab020b4a99bf905b61a1c5e03332b63a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
272<tr class="memitem:abf326cbf49ec19c6272fe7c244b7817c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; float, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#abf326cbf49ec19c6272fe7c244b7817c">DepthwiseConvolution2dAsymmetricTest</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
273<tr class="separator:abf326cbf49ec19c6272fe7c244b7817c"><td class="memSeparator" colspan="2">&#160;</td></tr>
274<tr class="memitem:a8076c31bd6e9eae629994a89a5fa18c3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; uint8_t, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a8076c31bd6e9eae629994a89a5fa18c3">DepthwiseConvolution2dUint8Test</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
275<tr class="separator:a8076c31bd6e9eae629994a89a5fa18c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
276<tr class="memitem:ae797be34b659db2afe183f0c762fb9b7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; uint8_t, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#ae797be34b659db2afe183f0c762fb9b7">DepthwiseConvolution2dDepthMul1Uint8Test</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
277<tr class="separator:ae797be34b659db2afe183f0c762fb9b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
278<tr class="memitem:a77a29527216d36bce78e88354462ede8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; float, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a77a29527216d36bce78e88354462ede8">SimpleDepthwiseConvolution2d3x3Dilation3x3NhwcTest</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager)</td></tr>
279<tr class="separator:a77a29527216d36bce78e88354462ede8"><td class="memSeparator" colspan="2">&#160;</td></tr>
280<tr class="memitem:a2ae97c2dd6621f4972c571cf1ec2a005"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; int16_t, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a2ae97c2dd6621f4972c571cf1ec2a005">DepthwiseConvolution2dInt16Test</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
281<tr class="separator:a2ae97c2dd6621f4972c571cf1ec2a005"><td class="memSeparator" colspan="2">&#160;</td></tr>
282<tr class="memitem:a74346a72d64f7fa3463473424c3098ab"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; int16_t, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a74346a72d64f7fa3463473424c3098ab">DepthwiseConvolution2dDepthMul1Int16Test</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, bool biasEnabled, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
283<tr class="separator:a74346a72d64f7fa3463473424c3098ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
284<tr class="memitem:a8a51827c480f827c1e29f9347d7433c3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; uint8_t, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a8a51827c480f827c1e29f9347d7433c3">DepthwiseConvolution2dPerAxisQuantTest</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
285<tr class="separator:a8a51827c480f827c1e29f9347d7433c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
286<tr class="memitem:a09705f5e38cfc0d5bccc64791eb4f231"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; float, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a09705f5e38cfc0d5bccc64791eb4f231">CompareDepthwiseConvolution2dFloatTest</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, <a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;refWorkloadFactory, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
287<tr class="separator:a09705f5e38cfc0d5bccc64791eb4f231"><td class="memSeparator" colspan="2">&#160;</td></tr>
288<tr class="memitem:a21af5850bca4df2ea0315afb407e7900"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt; uint8_t, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_conv2d_test_impl_8cpp.html#a21af5850bca4df2ea0315afb407e7900">CompareDepthwiseConvolution2dUint8Test</a> (<a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;workloadFactory, const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;memoryManager, <a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;refWorkloadFactory, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> layout)</td></tr>
289<tr class="separator:a21af5850bca4df2ea0315afb407e7900"><td class="memSeparator" colspan="2">&#160;</td></tr>
290</table>
291<h2 class="groupheader">Function Documentation</h2>
292<a id="aa1f4ce02e0904dc8cf1b7f42bc34d346"></a>
293<h2 class="memtitle"><span class="permalink"><a href="#aa1f4ce02e0904dc8cf1b7f42bc34d346">&#9670;&nbsp;</a></span>ApplyBias()</h2>
294
295<div class="memitem">
296<div class="memproto">
297 <table class="memname">
298 <tr>
299 <td class="memname">void ApplyBias </td>
300 <td>(</td>
301 <td class="paramtype">std::vector&lt; T &gt; &amp;&#160;</td>
302 <td class="paramname"><em>v</em>, </td>
303 </tr>
304 <tr>
305 <td class="paramkey"></td>
306 <td></td>
307 <td class="paramtype">float&#160;</td>
308 <td class="paramname"><em>vScale</em>, </td>
309 </tr>
310 <tr>
311 <td class="paramkey"></td>
312 <td></td>
313 <td class="paramtype">int32_t&#160;</td>
314 <td class="paramname"><em>vOffset</em>, </td>
315 </tr>
316 <tr>
317 <td class="paramkey"></td>
318 <td></td>
319 <td class="paramtype">const std::vector&lt; B &gt; &amp;&#160;</td>
320 <td class="paramname"><em>bias</em>, </td>
321 </tr>
322 <tr>
323 <td class="paramkey"></td>
324 <td></td>
325 <td class="paramtype">float&#160;</td>
326 <td class="paramname"><em>bScale</em>, </td>
327 </tr>
328 <tr>
329 <td class="paramkey"></td>
330 <td></td>
331 <td class="paramtype">int32_t&#160;</td>
332 <td class="paramname"><em>bOffset</em>, </td>
333 </tr>
334 <tr>
335 <td class="paramkey"></td>
336 <td></td>
337 <td class="paramtype">uint32_t&#160;</td>
338 <td class="paramname"><em>w</em>, </td>
339 </tr>
340 <tr>
341 <td class="paramkey"></td>
342 <td></td>
343 <td class="paramtype">uint32_t&#160;</td>
344 <td class="paramname"><em>h</em>&#160;</td>
345 </tr>
346 <tr>
347 <td></td>
348 <td>)</td>
349 <td></td><td></td>
350 </tr>
351 </table>
352</div><div class="memdoc">
353
354<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l00169">169</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
355
356<p class="reference">References <a class="el" href="_inference_test_image_8hpp.html#a65983f8cb907d873f2328bb8307c296aa9d5ed678fe57bcca610140957afab571">B</a>, and <a class="el" href="_quantize_helper_8hpp_source.html#l00075">armnnUtils::SelectiveDequantize()</a>.</p>
357
358<p class="reference">Referenced by <a class="el" href="_conv2d_test_impl_8cpp_source.html#l00460">Convolution1dTestImpl()</a>, <a class="el" href="_conv2d_test_impl_8cpp_source.html#l01381">DepthwiseConvolution2dAsymmetricTestImpl()</a>, <a class="el" href="_conv2d_test_impl_8cpp_source.html#l01518">DepthwiseConvolution2dDepthMul1TestImpl()</a>, <a class="el" href="_conv2d_test_impl_8cpp_source.html#l01671">DepthwiseConvolution2dTestImpl()</a>, and <a class="el" href="_conv2d_test_impl_8cpp_source.html#l00201">SimpleConvolution2dTestImpl()</a>.</p>
359<div class="fragment"><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;{</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; BOOST_ASSERT_MSG((armnn::IsQuantizedType&lt;T&gt;() &amp;&amp; vScale != 0.0f) || (!armnn::IsQuantizedType&lt;T&gt;()),</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="stringliteral">&quot;Invalid type and parameter combination.&quot;</span>);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; BOOST_ASSERT_MSG((armnn::IsQuantizedType&lt;B&gt;() &amp;&amp; bScale != 0.0f) || (!armnn::IsQuantizedType&lt;B&gt;()),</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="stringliteral">&quot;Invalid type and parameter combination.&quot;</span>);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">// Note we need to dequantize and re-quantize the image value and the bias.</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">for</span> (uint32_t i = 0; i &lt; bias.size(); ++i)</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordtype">float</span> dBias = <a class="code" href="namespacearmnn_utils.html#a5135dc1ce7a8aeb97623c1a92c5a3543">SelectiveDequantize</a>(bias[i], bScale, bOffset);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">for</span> (uint32_t y = 0; y &lt; h; ++y)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">for</span> (uint32_t x = 0; x &lt; w; ++x)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; uint32_t offset = (i * h + y) * w + x;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; BOOST_ASSERT(offset &lt; v.size());</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; T&amp; outRef = v[offset];</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordtype">float</span> dOutput = <a class="code" href="namespacearmnn_utils.html#a5135dc1ce7a8aeb97623c1a92c5a3543">SelectiveDequantize</a>(outRef, vScale, vOffset);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; outRef = SelectiveQuantize&lt;T&gt;(dOutput + dBias, vScale, vOffset);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_html_a5135dc1ce7a8aeb97623c1a92c5a3543"><div class="ttname"><a href="namespacearmnn_utils.html#a5135dc1ce7a8aeb97623c1a92c5a3543">armnnUtils::SelectiveDequantize</a></div><div class="ttdeci">float SelectiveDequantize(T value, float scale, int32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="_quantize_helper_8hpp_source.html#l00075">QuantizeHelper.hpp:75</a></div></div>
360</div><!-- fragment -->
361</div>
362</div>
363<a id="a2b2c2f8f89d96932e62b95e7a22961d4"></a>
364<h2 class="memtitle"><span class="permalink"><a href="#a2b2c2f8f89d96932e62b95e7a22961d4">&#9670;&nbsp;</a></span>CompareConvolution2dTest()</h2>
365
366<div class="memitem">
367<div class="memproto">
368 <table class="memname">
369 <tr>
370 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;float,4&gt; CompareConvolution2dTest </td>
371 <td>(</td>
372 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
373 <td class="paramname"><em>workloadFactory</em>, </td>
374 </tr>
375 <tr>
376 <td class="paramkey"></td>
377 <td></td>
378 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
379 <td class="paramname"><em>memoryManager</em>, </td>
380 </tr>
381 <tr>
382 <td class="paramkey"></td>
383 <td></td>
384 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
385 <td class="paramname"><em>refWorkloadFactory</em>&#160;</td>
386 </tr>
387 <tr>
388 <td></td>
389 <td>)</td>
390 <td></td><td></td>
391 </tr>
392 </table>
393</div><div class="memdoc">
394
395<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l03136">3136</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
396<div class="fragment"><div class="line"><a name="l03140"></a><span class="lineno"> 3140</span>&#160;{</div><div class="line"><a name="l03141"></a><span class="lineno"> 3141</span>&#160; <span class="keywordflow">return</span> CompareConvolution2dTestImpl&lt;armnn::DataType::Float32&gt;(</div><div class="line"><a name="l03142"></a><span class="lineno"> 3142</span>&#160; workloadFactory, memoryManager, refWorkloadFactory);</div><div class="line"><a name="l03143"></a><span class="lineno"> 3143</span>&#160;}</div></div><!-- fragment -->
397</div>
398</div>
399<a id="a638295d292bfdcf71899b57396703c80"></a>
400<h2 class="memtitle"><span class="permalink"><a href="#a638295d292bfdcf71899b57396703c80">&#9670;&nbsp;</a></span>CompareConvolution2dTestImpl()</h2>
401
402<div class="memitem">
403<div class="memproto">
404 <table class="memname">
405 <tr>
406 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T,4&gt; CompareConvolution2dTestImpl </td>
407 <td>(</td>
408 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
409 <td class="paramname"><em>workloadFactory</em>, </td>
410 </tr>
411 <tr>
412 <td class="paramkey"></td>
413 <td></td>
414 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
415 <td class="paramname"><em>memoryManager</em>, </td>
416 </tr>
417 <tr>
418 <td class="paramkey"></td>
419 <td></td>
420 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
421 <td class="paramname"><em>refWorkloadFactory</em>&#160;</td>
422 </tr>
423 <tr>
424 <td></td>
425 <td>)</td>
426 <td></td><td></td>
427 </tr>
428 </table>
429</div><div class="memdoc">
430
431<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l01277">1277</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
432
433<p class="reference">References <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00019">AllocateAndCopyDataToITensorHandle()</a>, <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00014">CopyDataFromITensorHandle()</a>, <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00009">CopyDataToITensorHandle()</a>, <a class="el" href="_workload_factory_8cpp_source.html#l01142">IWorkloadFactory::CreateConvolution2d()</a>, <a class="el" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">IWorkloadFactory::CreateTensorHandle()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::info</a>, <a class="el" href="_workload_data_8hpp_source.html#l00177">Convolution2dQueueDescriptor::m_Bias</a>, <a class="el" href="_descriptors_8hpp_source.html#l00438">Convolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00428">Convolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00422">Convolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00424">Convolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00426">Convolution2dDescriptor::m_PadTop</a>, <a class="el" href="_workload_data_8hpp_source.html#l00049">QueueDescriptorWithParameters&lt; LayerDescriptor &gt;::m_Parameters</a>, <a class="el" href="_descriptors_8hpp_source.html#l00430">Convolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00432">Convolution2dDescriptor::m_StrideY</a>, <a class="el" href="_workload_data_8hpp_source.html#l00176">Convolution2dQueueDescriptor::m_Weight</a>, <a class="el" href="_layer_test_result_8hpp_source.html#l00040">LayerTestResult&lt; T, n &gt;::output</a>, and <a class="el" href="_layer_test_result_8hpp_source.html#l00041">LayerTestResult&lt; T, n &gt;::outputExpected</a>.</p>
434<div class="fragment"><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160;{</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = 8;</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = 16;</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels = 3;</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputNum = 5;</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160;</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelHeight = 3;</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelWidth = 3;</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> strideX = 2;</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> strideY = 3;</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> padX = 1;</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> padY = 1;</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputNum = inputNum;</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputChannels = 2;</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = (inputHeight + 2 * padY - kernelHeight + strideY) / strideY;</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = (inputWidth + 2 * padX - kernelWidth + strideX) / strideX;</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputTensorInfo;</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputTensorInfo;</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> kernelDesc;</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> biasDesc;</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputShape[] = {inputNum, inputChannels, inputHeight, inputWidth};</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputShape[] = {outputNum, outputChannels, outputHeight, outputWidth};</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelShape[] = {outputChannels, inputChannels, kernelHeight, kernelWidth};</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> biasShape[] = {outputChannels};</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; inputTensorInfo = <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a>(4, inputShape, ArmnnType);</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; outputTensorInfo = <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a>(4, outputShape, ArmnnType);</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; kernelDesc = <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a>(4, kernelShape, ArmnnType);</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; biasDesc = <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a>(1, biasShape, ArmnnType);</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; <a class="code" href="struct_layer_test_result.html">LayerTestResult&lt;T,4&gt;</a> ret(outputTensorInfo);</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160;</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; <span class="keyword">auto</span> input = MakeRandomTensor&lt;T, 4&gt;(inputTensorInfo, 124908);</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; <span class="keyword">auto</span> kernel = MakeRandomTensor&lt;T, 4&gt;(kernelDesc, 891234);</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160; <span class="keyword">auto</span> bias = MakeRandomTensor&lt;T, 1&gt;(biasDesc, 1028);</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160; std::unique_ptr&lt;armnn::ITensorHandle&gt; inputHandle = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">CreateTensorHandle</a>(inputTensorInfo);</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; std::unique_ptr&lt;armnn::ITensorHandle&gt; outputHandle = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">CreateTensorHandle</a>(outputTensorInfo);</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160;</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; <a class="code" href="structarmnn_1_1_convolution2d_queue_descriptor.html">armnn::Convolution2dQueueDescriptor</a> data;</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; <a class="code" href="structarmnn_1_1_workload_info.html">armnn::WorkloadInfo</a> <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>;</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; <a class="code" href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a> weightsTensor(kernelDesc);</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; <a class="code" href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a> biasTensor(biasDesc);</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160;</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a>(&amp;weightsTensor, &amp;kernel[0][0][0][0]);</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a>(&amp;biasTensor, &amp;bias[0]);</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160; data.<a class="code" href="structarmnn_1_1_convolution2d_queue_descriptor.html#a3369b66d9316a773a41711e3f590c041">m_Weight</a> = &amp;weightsTensor;</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; data.<a class="code" href="structarmnn_1_1_convolution2d_queue_descriptor.html#ab3437cee6b0687812104fc1b37cbe8b3">m_Bias</a> = &amp;biasTensor;</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#afe6a3377c4531315354def9023c8fdda">m_StrideX</a> = strideX;</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#ac1fe174bbadfb39a2b636940c2e647c8">m_StrideY</a> = strideY;</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#ac18546ebbebbb32fe0a03baa9bf2c600">m_PadLeft</a> = padX;</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#a002bc30e590d78cbb4f4d12171055ca7">m_PadRight</a> = padX;</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#a56b51f56cef50cdfa554258eecdab046">m_PadTop</a> = padY;</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#aa9e49717ebdb741e8c767741647fc618">m_PadBottom</a> = padY;</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#aea202e14d8874cefd9a0f778022b7e25">m_BiasEnabled</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; std::unique_ptr&lt;armnn::ITensorHandle&gt; outputHandleRef = refWorkloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">CreateTensorHandle</a>(outputTensorInfo);</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; std::unique_ptr&lt;armnn::ITensorHandle&gt; inputHandleRef = refWorkloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">CreateTensorHandle</a>(inputTensorInfo);</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; <a class="code" href="structarmnn_1_1_convolution2d_queue_descriptor.html">armnn::Convolution2dQueueDescriptor</a> refData = data;</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; <a class="code" href="structarmnn_1_1_workload_info.html">armnn::WorkloadInfo</a> refInfo = info;</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; SetWorkloadInput(refData, refInfo, 0, inputTensorInfo, inputHandleRef.get());</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; SetWorkloadOutput(refData, refInfo, 0, outputTensorInfo, outputHandleRef.get());</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160;</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160; std::unique_ptr&lt;armnn::IWorkload&gt; workload = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a2184995027cd2c9f9980206de9658855">CreateConvolution2d</a>(data, info);</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160; std::unique_ptr&lt;armnn::IWorkload&gt; workloadRef = refWorkloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a2184995027cd2c9f9980206de9658855">CreateConvolution2d</a>(refData, refInfo);</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160;</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160; outputHandleRef-&gt;Allocate();</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160; inputHandleRef-&gt;Allocate();</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160; inputHandle-&gt;Allocate();</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; outputHandle-&gt;Allocate();</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a>(inputHandle.get(), &amp;input[0][0][0][0]);</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a>(inputHandleRef.get(), &amp;input[0][0][0][0]);</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160;</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; ExecuteWorkload(*workload, memoryManager);</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160;</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; workloadRef-&gt;PostAllocationConfigure();</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; workloadRef-&gt;Execute();</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a>(&amp;ret.output[0][0][0][0], outputHandle.get());</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a>(&amp;ret.outputExpected[0][0][0][0], outputHandleRef.get());</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160;</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160;}</div><div class="ttc" id="_tensor_copy_utils_8cpp_html_afaaca8c3f3a467d124bba44067d2afa8"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a></div><div class="ttdeci">void AllocateAndCopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00019">TensorCopyUtils.cpp:19</a></div></div>
435<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_a002bc30e590d78cbb4f4d12171055ca7"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#a002bc30e590d78cbb4f4d12171055ca7">armnn::Convolution2dDescriptor::m_PadRight</a></div><div class="ttdeci">uint32_t m_PadRight</div><div class="ttdoc">Padding right value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00424">Descriptors.hpp:424</a></div></div>
436<div class="ttc" id="_tensor_copy_utils_8cpp_html_ae15f1a3c55d2db87683577de9fa4437c"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a></div><div class="ttdeci">void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00009">TensorCopyUtils.cpp:9</a></div></div>
437<div class="ttc" id="structarmnn_1_1_convolution2d_queue_descriptor_html"><div class="ttname"><a href="structarmnn_1_1_convolution2d_queue_descriptor.html">armnn::Convolution2dQueueDescriptor</a></div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00168">WorkloadData.hpp:168</a></div></div>
438<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
439<div class="ttc" id="structarmnn_1_1_queue_descriptor_with_parameters_html_aad91b9bbf7aa365d304febe79a3d1333"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">armnn::QueueDescriptorWithParameters::m_Parameters</a></div><div class="ttdeci">LayerDescriptor m_Parameters</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00049">WorkloadData.hpp:49</a></div></div>
440<div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
441<div class="ttc" id="classarmnn_1_1_i_workload_factory_html_a15c140be4ddceffee16436f009d3ed94"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">armnn::IWorkloadFactory::CreateTensorHandle</a></div><div class="ttdeci">virtual std::unique_ptr&lt; ITensorHandle &gt; CreateTensorHandle(const TensorInfo &amp;tensorInfo, const bool IsMemoryManaged=true) const =0</div></div>
442<div class="ttc" id="struct_layer_test_result_html"><div class="ttname"><a href="struct_layer_test_result.html">LayerTestResult</a></div><div class="ttdef"><b>Definition:</b> <a href="_layer_test_result_8hpp_source.html#l00029">LayerTestResult.hpp:29</a></div></div>
443<div class="ttc" id="_tensor_copy_utils_8cpp_html_a99b626c58a926dc7d6df78d22ec186c8"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a></div><div class="ttdeci">void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00014">TensorCopyUtils.cpp:14</a></div></div>
444<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_aa9e49717ebdb741e8c767741647fc618"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#aa9e49717ebdb741e8c767741647fc618">armnn::Convolution2dDescriptor::m_PadBottom</a></div><div class="ttdeci">uint32_t m_PadBottom</div><div class="ttdoc">Padding bottom value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00428">Descriptors.hpp:428</a></div></div>
445<div class="ttc" id="structarmnn_1_1_workload_info_html"><div class="ttname"><a href="structarmnn_1_1_workload_info.html">armnn::WorkloadInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_workload_info_8hpp_source.html#l00016">WorkloadInfo.hpp:16</a></div></div>
446<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_ac1fe174bbadfb39a2b636940c2e647c8"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#ac1fe174bbadfb39a2b636940c2e647c8">armnn::Convolution2dDescriptor::m_StrideY</a></div><div class="ttdeci">uint32_t m_StrideY</div><div class="ttdoc">Stride value when proceeding through input for the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00432">Descriptors.hpp:432</a></div></div>
447<div class="ttc" id="structarmnn_1_1_convolution2d_queue_descriptor_html_a3369b66d9316a773a41711e3f590c041"><div class="ttname"><a href="structarmnn_1_1_convolution2d_queue_descriptor.html#a3369b66d9316a773a41711e3f590c041">armnn::Convolution2dQueueDescriptor::m_Weight</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_Weight</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00176">WorkloadData.hpp:176</a></div></div>
448<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_a56b51f56cef50cdfa554258eecdab046"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#a56b51f56cef50cdfa554258eecdab046">armnn::Convolution2dDescriptor::m_PadTop</a></div><div class="ttdeci">uint32_t m_PadTop</div><div class="ttdoc">Padding top value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00426">Descriptors.hpp:426</a></div></div>
449<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_ac18546ebbebbb32fe0a03baa9bf2c600"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#ac18546ebbebbb32fe0a03baa9bf2c600">armnn::Convolution2dDescriptor::m_PadLeft</a></div><div class="ttdeci">uint32_t m_PadLeft</div><div class="ttdoc">Padding left value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00422">Descriptors.hpp:422</a></div></div>
450<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_afe6a3377c4531315354def9023c8fdda"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#afe6a3377c4531315354def9023c8fdda">armnn::Convolution2dDescriptor::m_StrideX</a></div><div class="ttdeci">uint32_t m_StrideX</div><div class="ttdoc">Stride value when proceeding through input for the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00430">Descriptors.hpp:430</a></div></div>
451<div class="ttc" id="structarmnn_1_1_convolution2d_queue_descriptor_html_ab3437cee6b0687812104fc1b37cbe8b3"><div class="ttname"><a href="structarmnn_1_1_convolution2d_queue_descriptor.html#ab3437cee6b0687812104fc1b37cbe8b3">armnn::Convolution2dQueueDescriptor::m_Bias</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_Bias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00177">WorkloadData.hpp:177</a></div></div>
452<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_aea202e14d8874cefd9a0f778022b7e25"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#aea202e14d8874cefd9a0f778022b7e25">armnn::Convolution2dDescriptor::m_BiasEnabled</a></div><div class="ttdeci">bool m_BiasEnabled</div><div class="ttdoc">Enable/disable bias. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00438">Descriptors.hpp:438</a></div></div>
453<div class="ttc" id="classarmnn_1_1_i_workload_factory_html_a2184995027cd2c9f9980206de9658855"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.html#a2184995027cd2c9f9980206de9658855">armnn::IWorkloadFactory::CreateConvolution2d</a></div><div class="ttdeci">virtual std::unique_ptr&lt; IWorkload &gt; CreateConvolution2d(const Convolution2dQueueDescriptor &amp;descriptor, const WorkloadInfo &amp;info) const</div><div class="ttdef"><b>Definition:</b> <a href="_workload_factory_8cpp_source.html#l01142">WorkloadFactory.cpp:1142</a></div></div>
454<div class="ttc" id="classarmnn_1_1_scoped_cpu_tensor_handle_html"><div class="ttname"><a href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a></div><div class="ttdef"><b>Definition:</b> <a href="_cpu_tensor_handle_8hpp_source.html#l00106">CpuTensorHandle.hpp:106</a></div></div>
455</div><!-- fragment -->
456</div>
457</div>
458<a id="a09705f5e38cfc0d5bccc64791eb4f231"></a>
459<h2 class="memtitle"><span class="permalink"><a href="#a09705f5e38cfc0d5bccc64791eb4f231">&#9670;&nbsp;</a></span>CompareDepthwiseConvolution2dFloatTest()</h2>
460
461<div class="memitem">
462<div class="memproto">
463 <table class="memname">
464 <tr>
465 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;float, 4&gt; CompareDepthwiseConvolution2dFloatTest </td>
466 <td>(</td>
467 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
468 <td class="paramname"><em>workloadFactory</em>, </td>
469 </tr>
470 <tr>
471 <td class="paramkey"></td>
472 <td></td>
473 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
474 <td class="paramname"><em>memoryManager</em>, </td>
475 </tr>
476 <tr>
477 <td class="paramkey"></td>
478 <td></td>
479 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
480 <td class="paramname"><em>refWorkloadFactory</em>, </td>
481 </tr>
482 <tr>
483 <td class="paramkey"></td>
484 <td></td>
485 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
486 <td class="paramname"><em>layout</em>&#160;</td>
487 </tr>
488 <tr>
489 <td></td>
490 <td>)</td>
491 <td></td><td></td>
492 </tr>
493 </table>
494</div><div class="memdoc">
495
496<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l03376">3376</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
497<div class="fragment"><div class="line"><a name="l03381"></a><span class="lineno"> 3381</span>&#160;{</div><div class="line"><a name="l03382"></a><span class="lineno"> 3382</span>&#160; <span class="keywordflow">return</span> CompareDepthwiseConvolution2dTestImpl&lt;armnn::DataType::Float32&gt;(</div><div class="line"><a name="l03383"></a><span class="lineno"> 3383</span>&#160; workloadFactory, memoryManager, refWorkloadFactory, layout);</div><div class="line"><a name="l03384"></a><span class="lineno"> 3384</span>&#160;}</div></div><!-- fragment -->
498</div>
499</div>
500<a id="acac29a0b58c3c3f2928e0d7ee258c066"></a>
501<h2 class="memtitle"><span class="permalink"><a href="#acac29a0b58c3c3f2928e0d7ee258c066">&#9670;&nbsp;</a></span>CompareDepthwiseConvolution2dTestImpl()</h2>
502
503<div class="memitem">
504<div class="memproto">
505 <table class="memname">
506 <tr>
507 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T, 4&gt; CompareDepthwiseConvolution2dTestImpl </td>
508 <td>(</td>
509 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
510 <td class="paramname"><em>workloadFactory</em>, </td>
511 </tr>
512 <tr>
513 <td class="paramkey"></td>
514 <td></td>
515 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
516 <td class="paramname"><em>memoryManager</em>, </td>
517 </tr>
518 <tr>
519 <td class="paramkey"></td>
520 <td></td>
521 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
522 <td class="paramname"><em>refWorkloadFactory</em>, </td>
523 </tr>
524 <tr>
525 <td class="paramkey"></td>
526 <td></td>
527 <td class="paramtype">const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a> &amp;&#160;</td>
528 <td class="paramname"><em>layout</em>&#160;</td>
529 </tr>
530 <tr>
531 <td></td>
532 <td>)</td>
533 <td></td><td></td>
534 </tr>
535 </table>
536</div><div class="memdoc">
537
538<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l02669">2669</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
539
540<p class="reference">References <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00019">AllocateAndCopyDataToITensorHandle()</a>, <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00014">CopyDataFromITensorHandle()</a>, <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00009">CopyDataToITensorHandle()</a>, <a class="el" href="_workload_factory_8cpp_source.html#l01160">IWorkloadFactory::CreateDepthwiseConvolution2d()</a>, <a class="el" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">IWorkloadFactory::CreateTensorHandle()</a>, <a class="el" href="_workload_data_8cpp_source.html#l00025">armnn::GetBiasDataType()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00022">DataLayoutIndexed::GetDataLayout()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::info</a>, <a class="el" href="_workload_data_8hpp_source.html#l00192">DepthwiseConvolution2dQueueDescriptor::m_Bias</a>, <a class="el" href="_descriptors_8hpp_source.html#l00490">DepthwiseConvolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00492">DepthwiseConvolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00480">DepthwiseConvolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00474">DepthwiseConvolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00476">DepthwiseConvolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00478">DepthwiseConvolution2dDescriptor::m_PadTop</a>, <a class="el" href="_workload_data_8hpp_source.html#l00049">QueueDescriptorWithParameters&lt; LayerDescriptor &gt;::m_Parameters</a>, <a class="el" href="_descriptors_8hpp_source.html#l00482">DepthwiseConvolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00484">DepthwiseConvolution2dDescriptor::m_StrideY</a>, <a class="el" href="_workload_data_8hpp_source.html#l00191">DepthwiseConvolution2dQueueDescriptor::m_Weight</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::NCHW</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::NHWC</a>.</p>
541<div class="fragment"><div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>&#160;{</div><div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = 8;</div><div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = 16;</div><div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels = 3;</div><div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputNum = 5;</div><div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>&#160;</div><div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelHeight = 3;</div><div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelWidth = 3;</div><div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelMultiplier = 1;</div><div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>&#160;</div><div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> strideX = 2;</div><div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> strideY = 3;</div><div class="line"><a name="l02686"></a><span class="lineno"> 2686</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> padX = 1;</div><div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> padY = 1;</div><div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>&#160;</div><div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputNum = inputNum;</div><div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputChannels = inputChannels * channelMultiplier;</div><div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = (inputHeight + 2 * padY - kernelHeight + strideY) / strideY;</div><div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = (inputWidth + 2 * padX - kernelWidth + strideX) / strideX;</div><div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>&#160;</div><div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputTensorInfo;</div><div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputTensorInfo;</div><div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> kernelDesc;</div><div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> biasDesc;</div><div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>&#160;</div><div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>&#160;</div><div class="line"><a name="l02700"></a><span class="lineno"> 2700</span>&#160; std::vector&lt;unsigned int&gt; inputShape;</div><div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>&#160; std::vector&lt;unsigned int&gt; outputShape;</div><div class="line"><a name="l02702"></a><span class="lineno"> 2702</span>&#160; std::vector&lt;unsigned int&gt; kernelShape{ channelMultiplier, inputChannels, kernelHeight, kernelWidth };</div><div class="line"><a name="l02703"></a><span class="lineno"> 2703</span>&#160; std::vector&lt;unsigned int&gt; biasShape{ outputChannels };</div><div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>&#160; <span class="keywordflow">switch</span> (layout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a7d8b3d755b6ca8f5533657969efb06c4">GetDataLayout</a>())</div><div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>&#160; {</div><div class="line"><a name="l02706"></a><span class="lineno"> 2706</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a>:</div><div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>&#160; inputShape = { inputNum, inputChannels, inputHeight, inputWidth };</div><div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>&#160; outputShape = { outputNum, outputChannels, outputHeight, outputWidth };</div><div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout ::NHWC</a>:</div><div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>&#160; inputShape = { inputNum, inputHeight, inputWidth, inputChannels };</div><div class="line"><a name="l02712"></a><span class="lineno"> 2712</span>&#160; outputShape = { outputNum, outputHeight, outputWidth, outputChannels };</div><div class="line"><a name="l02713"></a><span class="lineno"> 2713</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l02715"></a><span class="lineno"> 2715</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">armnn::InvalidArgumentException</a>(<span class="stringliteral">&quot;unknown data layout [&quot;</span></div><div class="line"><a name="l02716"></a><span class="lineno"> 2716</span>&#160; + std::to_string(static_cast&lt;int&gt;(layout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a7d8b3d755b6ca8f5533657969efb06c4">GetDataLayout</a>())) + <span class="stringliteral">&quot;]&quot;</span>);</div><div class="line"><a name="l02717"></a><span class="lineno"> 2717</span>&#160; }</div><div class="line"><a name="l02718"></a><span class="lineno"> 2718</span>&#160;</div><div class="line"><a name="l02719"></a><span class="lineno"> 2719</span>&#160; <span class="keywordtype">float</span> inputsQScale = armnn::IsQuantizedType&lt;T&gt;() ? 1.0f : 0;</div><div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>&#160; <span class="keywordtype">float</span> outputQScale = armnn::IsQuantizedType&lt;T&gt;() ? 2.0f : 0;</div><div class="line"><a name="l02721"></a><span class="lineno"> 2721</span>&#160; int32_t qOffset = 0;</div><div class="line"><a name="l02722"></a><span class="lineno"> 2722</span>&#160;</div><div class="line"><a name="l02723"></a><span class="lineno"> 2723</span>&#160; inputTensorInfo = <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a>(4, inputShape.data(), ArmnnType, inputsQScale, qOffset);</div><div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>&#160; outputTensorInfo = <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a>(4, outputShape.data(), ArmnnType, outputQScale, qOffset);</div><div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>&#160; kernelDesc = <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a>(4, kernelShape.data(), ArmnnType, inputsQScale, qOffset);</div><div class="line"><a name="l02726"></a><span class="lineno"> 2726</span>&#160; biasDesc = <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a>(</div><div class="line"><a name="l02727"></a><span class="lineno"> 2727</span>&#160; 1, biasShape.data(), <a class="code" href="namespacearmnn.html#a872803f5667392efc3c8e5607bd453ad">armnn::GetBiasDataType</a>(ArmnnType), inputsQScale, qOffset);</div><div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>&#160;</div><div class="line"><a name="l02729"></a><span class="lineno"> 2729</span>&#160; <a class="code" href="struct_layer_test_result.html">LayerTestResult&lt;T, 4&gt;</a> ret(outputTensorInfo);</div><div class="line"><a name="l02730"></a><span class="lineno"> 2730</span>&#160;</div><div class="line"><a name="l02731"></a><span class="lineno"> 2731</span>&#160; <span class="keyword">auto</span> input = MakeRandomTensor&lt;T, 4&gt;(inputTensorInfo, 124908, 0.0f, 255.0f);</div><div class="line"><a name="l02732"></a><span class="lineno"> 2732</span>&#160; <span class="keyword">auto</span> kernel = MakeRandomTensor&lt;T, 4&gt;(kernelDesc, 891234, 0.0f, 255.0f);</div><div class="line"><a name="l02733"></a><span class="lineno"> 2733</span>&#160; <span class="keyword">auto</span> bias = MakeRandomTensor&lt;typename FullyConnectedBiasTypeForInputType&lt;T&gt;::Type, 1&gt;(</div><div class="line"><a name="l02734"></a><span class="lineno"> 2734</span>&#160; biasDesc, 1028, 0.0f, 255.0f);</div><div class="line"><a name="l02735"></a><span class="lineno"> 2735</span>&#160;</div><div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>&#160; std::unique_ptr&lt;armnn::ITensorHandle&gt; inputHandle = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">CreateTensorHandle</a>(inputTensorInfo);</div><div class="line"><a name="l02737"></a><span class="lineno"> 2737</span>&#160; std::unique_ptr&lt;armnn::ITensorHandle&gt; outputHandle = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">CreateTensorHandle</a>(outputTensorInfo);</div><div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>&#160;</div><div class="line"><a name="l02739"></a><span class="lineno"> 2739</span>&#160; <a class="code" href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html">armnn::DepthwiseConvolution2dQueueDescriptor</a> data;</div><div class="line"><a name="l02740"></a><span class="lineno"> 2740</span>&#160; <a class="code" href="structarmnn_1_1_workload_info.html">armnn::WorkloadInfo</a> <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>;</div><div class="line"><a name="l02741"></a><span class="lineno"> 2741</span>&#160; <a class="code" href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a> weightsTensor(kernelDesc);</div><div class="line"><a name="l02742"></a><span class="lineno"> 2742</span>&#160; <a class="code" href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a> biasTensor(biasDesc);</div><div class="line"><a name="l02743"></a><span class="lineno"> 2743</span>&#160;</div><div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a>(&amp;weightsTensor, &amp;kernel[0][0][0][0]);</div><div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a>(&amp;biasTensor, &amp;bias[0]);</div><div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>&#160;</div><div class="line"><a name="l02747"></a><span class="lineno"> 2747</span>&#160; AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());</div><div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>&#160; AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());</div><div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>&#160; data.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html#a3369b66d9316a773a41711e3f590c041">m_Weight</a> = &amp;weightsTensor;</div><div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>&#160; data.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html#ab3437cee6b0687812104fc1b37cbe8b3">m_Bias</a> = &amp;biasTensor;</div><div class="line"><a name="l02751"></a><span class="lineno"> 2751</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#afe6a3377c4531315354def9023c8fdda">m_StrideX</a> = strideX;</div><div class="line"><a name="l02752"></a><span class="lineno"> 2752</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#ac1fe174bbadfb39a2b636940c2e647c8">m_StrideY</a> = strideY;</div><div class="line"><a name="l02753"></a><span class="lineno"> 2753</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#ac18546ebbebbb32fe0a03baa9bf2c600">m_PadLeft</a> = padX;</div><div class="line"><a name="l02754"></a><span class="lineno"> 2754</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a002bc30e590d78cbb4f4d12171055ca7">m_PadRight</a> = padX;</div><div class="line"><a name="l02755"></a><span class="lineno"> 2755</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a56b51f56cef50cdfa554258eecdab046">m_PadTop</a> = padY;</div><div class="line"><a name="l02756"></a><span class="lineno"> 2756</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aa9e49717ebdb741e8c767741647fc618">m_PadBottom</a> = padY;</div><div class="line"><a name="l02757"></a><span class="lineno"> 2757</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aea202e14d8874cefd9a0f778022b7e25">m_BiasEnabled</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l02758"></a><span class="lineno"> 2758</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a> = layout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a7d8b3d755b6ca8f5533657969efb06c4">GetDataLayout</a>();</div><div class="line"><a name="l02759"></a><span class="lineno"> 2759</span>&#160;</div><div class="line"><a name="l02760"></a><span class="lineno"> 2760</span>&#160; std::unique_ptr&lt;armnn::ITensorHandle&gt; outputHandleRef = refWorkloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">CreateTensorHandle</a>(outputTensorInfo);</div><div class="line"><a name="l02761"></a><span class="lineno"> 2761</span>&#160; std::unique_ptr&lt;armnn::ITensorHandle&gt; inputHandleRef = refWorkloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">CreateTensorHandle</a>(inputTensorInfo);</div><div class="line"><a name="l02762"></a><span class="lineno"> 2762</span>&#160;</div><div class="line"><a name="l02763"></a><span class="lineno"> 2763</span>&#160; <a class="code" href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html">armnn::DepthwiseConvolution2dQueueDescriptor</a> refData = data;</div><div class="line"><a name="l02764"></a><span class="lineno"> 2764</span>&#160; <a class="code" href="structarmnn_1_1_workload_info.html">armnn::WorkloadInfo</a> refInfo = info;</div><div class="line"><a name="l02765"></a><span class="lineno"> 2765</span>&#160; SetWorkloadInput(refData, refInfo, 0, inputTensorInfo, inputHandleRef.get());</div><div class="line"><a name="l02766"></a><span class="lineno"> 2766</span>&#160; SetWorkloadOutput(refData, refInfo, 0, outputTensorInfo, outputHandleRef.get());</div><div class="line"><a name="l02767"></a><span class="lineno"> 2767</span>&#160;</div><div class="line"><a name="l02768"></a><span class="lineno"> 2768</span>&#160; std::unique_ptr&lt;armnn::IWorkload&gt; workload = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#accb9759dfd2880efe0f8d2705ddee448">CreateDepthwiseConvolution2d</a>(data, info);</div><div class="line"><a name="l02769"></a><span class="lineno"> 2769</span>&#160; std::unique_ptr&lt;armnn::IWorkload&gt; workloadRef = refWorkloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#accb9759dfd2880efe0f8d2705ddee448">CreateDepthwiseConvolution2d</a>(refData, refInfo);</div><div class="line"><a name="l02770"></a><span class="lineno"> 2770</span>&#160;</div><div class="line"><a name="l02771"></a><span class="lineno"> 2771</span>&#160; outputHandleRef-&gt;Allocate();</div><div class="line"><a name="l02772"></a><span class="lineno"> 2772</span>&#160; inputHandleRef-&gt;Allocate();</div><div class="line"><a name="l02773"></a><span class="lineno"> 2773</span>&#160;</div><div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>&#160; inputHandle-&gt;Allocate();</div><div class="line"><a name="l02775"></a><span class="lineno"> 2775</span>&#160; outputHandle-&gt;Allocate();</div><div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>&#160;</div><div class="line"><a name="l02777"></a><span class="lineno"> 2777</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a>(inputHandle.get(), &amp;input[0][0][0][0]);</div><div class="line"><a name="l02778"></a><span class="lineno"> 2778</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a>(inputHandleRef.get(), &amp;input[0][0][0][0]);</div><div class="line"><a name="l02779"></a><span class="lineno"> 2779</span>&#160;</div><div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>&#160; ExecuteWorkload(*workload, memoryManager);</div><div class="line"><a name="l02781"></a><span class="lineno"> 2781</span>&#160;</div><div class="line"><a name="l02782"></a><span class="lineno"> 2782</span>&#160; workloadRef-&gt;PostAllocationConfigure();</div><div class="line"><a name="l02783"></a><span class="lineno"> 2783</span>&#160; workloadRef-&gt;Execute();</div><div class="line"><a name="l02784"></a><span class="lineno"> 2784</span>&#160;</div><div class="line"><a name="l02785"></a><span class="lineno"> 2785</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a>(&amp;ret.output[0][0][0][0], outputHandle.get());</div><div class="line"><a name="l02786"></a><span class="lineno"> 2786</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a>(&amp;ret.outputExpected[0][0][0][0], outputHandleRef.get());</div><div class="line"><a name="l02787"></a><span class="lineno"> 2787</span>&#160;</div><div class="line"><a name="l02788"></a><span class="lineno"> 2788</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l02789"></a><span class="lineno"> 2789</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_i_workload_factory_html_accb9759dfd2880efe0f8d2705ddee448"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.html#accb9759dfd2880efe0f8d2705ddee448">armnn::IWorkloadFactory::CreateDepthwiseConvolution2d</a></div><div class="ttdeci">virtual std::unique_ptr&lt; IWorkload &gt; CreateDepthwiseConvolution2d(const DepthwiseConvolution2dQueueDescriptor &amp;descriptor, const WorkloadInfo &amp;info) const</div><div class="ttdef"><b>Definition:</b> <a href="_workload_factory_8cpp_source.html#l01160">WorkloadFactory.cpp:1160</a></div></div>
542<div class="ttc" id="_tensor_copy_utils_8cpp_html_afaaca8c3f3a467d124bba44067d2afa8"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a></div><div class="ttdeci">void AllocateAndCopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00019">TensorCopyUtils.cpp:19</a></div></div>
543<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_afe6a3377c4531315354def9023c8fdda"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#afe6a3377c4531315354def9023c8fdda">armnn::DepthwiseConvolution2dDescriptor::m_StrideX</a></div><div class="ttdeci">uint32_t m_StrideX</div><div class="ttdoc">Stride value when proceeding through input for the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00482">Descriptors.hpp:482</a></div></div>
544<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_aa9e49717ebdb741e8c767741647fc618"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aa9e49717ebdb741e8c767741647fc618">armnn::DepthwiseConvolution2dDescriptor::m_PadBottom</a></div><div class="ttdeci">uint32_t m_PadBottom</div><div class="ttdoc">Padding bottom value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00480">Descriptors.hpp:480</a></div></div>
545<div class="ttc" id="_tensor_copy_utils_8cpp_html_ae15f1a3c55d2db87683577de9fa4437c"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a></div><div class="ttdeci">void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00009">TensorCopyUtils.cpp:9</a></div></div>
546<div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></div></div>
547<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a7d8b3d755b6ca8f5533657969efb06c4"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a7d8b3d755b6ca8f5533657969efb06c4">armnnUtils::DataLayoutIndexed::GetDataLayout</a></div><div class="ttdeci">armnn::DataLayout GetDataLayout() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00022">DataLayoutIndexed.hpp:22</a></div></div>
548<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_ac18546ebbebbb32fe0a03baa9bf2c600"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#ac18546ebbebbb32fe0a03baa9bf2c600">armnn::DepthwiseConvolution2dDescriptor::m_PadLeft</a></div><div class="ttdeci">uint32_t m_PadLeft</div><div class="ttdoc">Padding left value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00474">Descriptors.hpp:474</a></div></div>
549<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
550<div class="ttc" id="structarmnn_1_1_queue_descriptor_with_parameters_html_aad91b9bbf7aa365d304febe79a3d1333"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">armnn::QueueDescriptorWithParameters::m_Parameters</a></div><div class="ttdeci">LayerDescriptor m_Parameters</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00049">WorkloadData.hpp:49</a></div></div>
551<div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
552<div class="ttc" id="classarmnn_1_1_i_workload_factory_html_a15c140be4ddceffee16436f009d3ed94"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">armnn::IWorkloadFactory::CreateTensorHandle</a></div><div class="ttdeci">virtual std::unique_ptr&lt; ITensorHandle &gt; CreateTensorHandle(const TensorInfo &amp;tensorInfo, const bool IsMemoryManaged=true) const =0</div></div>
553<div class="ttc" id="struct_layer_test_result_html"><div class="ttname"><a href="struct_layer_test_result.html">LayerTestResult</a></div><div class="ttdef"><b>Definition:</b> <a href="_layer_test_result_8hpp_source.html#l00029">LayerTestResult.hpp:29</a></div></div>
554<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_queue_descriptor_html_ab3437cee6b0687812104fc1b37cbe8b3"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html#ab3437cee6b0687812104fc1b37cbe8b3">armnn::DepthwiseConvolution2dQueueDescriptor::m_Bias</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_Bias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00192">WorkloadData.hpp:192</a></div></div>
555<div class="ttc" id="_tensor_copy_utils_8cpp_html_a99b626c58a926dc7d6df78d22ec186c8"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a></div><div class="ttdeci">void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00014">TensorCopyUtils.cpp:14</a></div></div>
556<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">armnn::DepthwiseConvolution2dDescriptor::m_DataLayout</a></div><div class="ttdeci">DataLayout m_DataLayout</div><div class="ttdoc">The data layout to be used (NCHW, NHWC). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00492">Descriptors.hpp:492</a></div></div>
557<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_a56b51f56cef50cdfa554258eecdab046"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a56b51f56cef50cdfa554258eecdab046">armnn::DepthwiseConvolution2dDescriptor::m_PadTop</a></div><div class="ttdeci">uint32_t m_PadTop</div><div class="ttdoc">Padding top value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00478">Descriptors.hpp:478</a></div></div>
558<div class="ttc" id="structarmnn_1_1_workload_info_html"><div class="ttname"><a href="structarmnn_1_1_workload_info.html">armnn::WorkloadInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_workload_info_8hpp_source.html#l00016">WorkloadInfo.hpp:16</a></div></div>
559<div class="ttc" id="classarmnn_1_1_invalid_argument_exception_html"><div class="ttname"><a href="classarmnn_1_1_invalid_argument_exception.html">armnn::InvalidArgumentException</a></div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.html#l00080">Exceptions.hpp:80</a></div></div>
560<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_queue_descriptor_html_a3369b66d9316a773a41711e3f590c041"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html#a3369b66d9316a773a41711e3f590c041">armnn::DepthwiseConvolution2dQueueDescriptor::m_Weight</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_Weight</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00191">WorkloadData.hpp:191</a></div></div>
561<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_aea202e14d8874cefd9a0f778022b7e25"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aea202e14d8874cefd9a0f778022b7e25">armnn::DepthwiseConvolution2dDescriptor::m_BiasEnabled</a></div><div class="ttdeci">bool m_BiasEnabled</div><div class="ttdoc">Enable/disable bias. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00490">Descriptors.hpp:490</a></div></div>
562<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_queue_descriptor_html"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html">armnn::DepthwiseConvolution2dQueueDescriptor</a></div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00183">WorkloadData.hpp:183</a></div></div>
563<div class="ttc" id="namespacearmnn_html_a872803f5667392efc3c8e5607bd453ad"><div class="ttname"><a href="namespacearmnn.html#a872803f5667392efc3c8e5607bd453ad">armnn::GetBiasDataType</a></div><div class="ttdeci">DataType GetBiasDataType(DataType inputDataType)</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8cpp_source.html#l00025">WorkloadData.cpp:25</a></div></div>
564<div class="ttc" id="classarmnn_1_1_scoped_cpu_tensor_handle_html"><div class="ttname"><a href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a></div><div class="ttdef"><b>Definition:</b> <a href="_cpu_tensor_handle_8hpp_source.html#l00106">CpuTensorHandle.hpp:106</a></div></div>
565<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_ac1fe174bbadfb39a2b636940c2e647c8"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#ac1fe174bbadfb39a2b636940c2e647c8">armnn::DepthwiseConvolution2dDescriptor::m_StrideY</a></div><div class="ttdeci">uint32_t m_StrideY</div><div class="ttdoc">Stride value when proceeding through input for the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00484">Descriptors.hpp:484</a></div></div>
566<div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a></div></div>
567<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_a002bc30e590d78cbb4f4d12171055ca7"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a002bc30e590d78cbb4f4d12171055ca7">armnn::DepthwiseConvolution2dDescriptor::m_PadRight</a></div><div class="ttdeci">uint32_t m_PadRight</div><div class="ttdoc">Padding right value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00476">Descriptors.hpp:476</a></div></div>
568</div><!-- fragment -->
569</div>
570</div>
571<a id="a21af5850bca4df2ea0315afb407e7900"></a>
572<h2 class="memtitle"><span class="permalink"><a href="#a21af5850bca4df2ea0315afb407e7900">&#9670;&nbsp;</a></span>CompareDepthwiseConvolution2dUint8Test()</h2>
573
574<div class="memitem">
575<div class="memproto">
576 <table class="memname">
577 <tr>
578 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;uint8_t, 4&gt; CompareDepthwiseConvolution2dUint8Test </td>
579 <td>(</td>
580 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
581 <td class="paramname"><em>workloadFactory</em>, </td>
582 </tr>
583 <tr>
584 <td class="paramkey"></td>
585 <td></td>
586 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
587 <td class="paramname"><em>memoryManager</em>, </td>
588 </tr>
589 <tr>
590 <td class="paramkey"></td>
591 <td></td>
592 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
593 <td class="paramname"><em>refWorkloadFactory</em>, </td>
594 </tr>
595 <tr>
596 <td class="paramkey"></td>
597 <td></td>
598 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
599 <td class="paramname"><em>layout</em>&#160;</td>
600 </tr>
601 <tr>
602 <td></td>
603 <td>)</td>
604 <td></td><td></td>
605 </tr>
606 </table>
607</div><div class="memdoc">
608
609<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l03386">3386</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
610<div class="fragment"><div class="line"><a name="l03391"></a><span class="lineno"> 3391</span>&#160;{</div><div class="line"><a name="l03392"></a><span class="lineno"> 3392</span>&#160; <span class="keywordflow">return</span> CompareDepthwiseConvolution2dTestImpl&lt;armnn::DataType::QAsymmU8&gt;(</div><div class="line"><a name="l03393"></a><span class="lineno"> 3393</span>&#160; workloadFactory, memoryManager, refWorkloadFactory, layout);</div><div class="line"><a name="l03394"></a><span class="lineno"> 3394</span>&#160;}</div></div><!-- fragment -->
611</div>
612</div>
613<a id="ac7fac5767dabd650d3d8829572717064"></a>
614<h2 class="memtitle"><span class="permalink"><a href="#ac7fac5767dabd650d3d8829572717064">&#9670;&nbsp;</a></span>Convolution1dTest()</h2>
615
616<div class="memitem">
617<div class="memproto">
618 <table class="memname">
619 <tr>
620 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;float, 4&gt; Convolution1dTest </td>
621 <td>(</td>
622 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
623 <td class="paramname"><em>workloadFactory</em>, </td>
624 </tr>
625 <tr>
626 <td class="paramkey"></td>
627 <td></td>
628 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
629 <td class="paramname"><em>memoryManager</em>, </td>
630 </tr>
631 <tr>
632 <td class="paramkey"></td>
633 <td></td>
634 <td class="paramtype">bool&#160;</td>
635 <td class="paramname"><em>biasEnabled</em>&#160;</td>
636 </tr>
637 <tr>
638 <td></td>
639 <td>)</td>
640 <td></td><td></td>
641 </tr>
642 </table>
643</div><div class="memdoc">
644
645<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l03026">3026</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
646<div class="fragment"><div class="line"><a name="l03030"></a><span class="lineno"> 3030</span>&#160;{</div><div class="line"><a name="l03031"></a><span class="lineno"> 3031</span>&#160; <span class="keywordflow">return</span> Convolution1dTestImpl&lt;armnn::DataType::Float32, armnn::DataType::Float32&gt;(</div><div class="line"><a name="l03032"></a><span class="lineno"> 3032</span>&#160; workloadFactory, memoryManager, 0.0f, 0, biasEnabled);</div><div class="line"><a name="l03033"></a><span class="lineno"> 3033</span>&#160;}</div></div><!-- fragment -->
647</div>
648</div>
649<a id="af541f19e3d1ad345cc9208fc2d2e7b19"></a>
650<h2 class="memtitle"><span class="permalink"><a href="#af541f19e3d1ad345cc9208fc2d2e7b19">&#9670;&nbsp;</a></span>Convolution1dTestImpl()</h2>
651
652<div class="memitem">
653<div class="memproto">
654 <table class="memname">
655 <tr>
656 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T,4&gt; Convolution1dTestImpl </td>
657 <td>(</td>
658 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
659 <td class="paramname"><em>workloadFactory</em>, </td>
660 </tr>
661 <tr>
662 <td class="paramkey"></td>
663 <td></td>
664 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
665 <td class="paramname"><em>memoryManager</em>, </td>
666 </tr>
667 <tr>
668 <td class="paramkey"></td>
669 <td></td>
670 <td class="paramtype">float&#160;</td>
671 <td class="paramname"><em>qScale</em>, </td>
672 </tr>
673 <tr>
674 <td class="paramkey"></td>
675 <td></td>
676 <td class="paramtype">int32_t&#160;</td>
677 <td class="paramname"><em>qOffset</em>, </td>
678 </tr>
679 <tr>
680 <td class="paramkey"></td>
681 <td></td>
682 <td class="paramtype">bool&#160;</td>
683 <td class="paramname"><em>biasEnabled</em>&#160;</td>
684 </tr>
685 <tr>
686 <td></td>
687 <td>)</td>
688 <td></td><td></td>
689 </tr>
690 </table>
691</div><div class="memdoc">
692
693<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l00460">460</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
694
695<p class="reference">References <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00019">AllocateAndCopyDataToITensorHandle()</a>, <a class="el" href="_conv2d_test_impl_8cpp_source.html#l00169">ApplyBias()</a>, <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00014">CopyDataFromITensorHandle()</a>, <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00009">CopyDataToITensorHandle()</a>, <a class="el" href="_workload_factory_8cpp_source.html#l01142">IWorkloadFactory::CreateConvolution2d()</a>, <a class="el" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">IWorkloadFactory::CreateTensorHandle()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::info</a>, <a class="el" href="_workload_data_8hpp_source.html#l00177">Convolution2dQueueDescriptor::m_Bias</a>, <a class="el" href="_descriptors_8hpp_source.html#l00438">Convolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00428">Convolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00422">Convolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00424">Convolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00426">Convolution2dDescriptor::m_PadTop</a>, <a class="el" href="_workload_data_8hpp_source.html#l00049">QueueDescriptorWithParameters&lt; LayerDescriptor &gt;::m_Parameters</a>, <a class="el" href="_descriptors_8hpp_source.html#l00430">Convolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00432">Convolution2dDescriptor::m_StrideY</a>, <a class="el" href="_workload_data_8hpp_source.html#l00176">Convolution2dQueueDescriptor::m_Weight</a>, <a class="el" href="_layer_test_result_8hpp_source.html#l00040">LayerTestResult&lt; T, n &gt;::output</a>, <a class="el" href="_layer_test_result_8hpp_source.html#l00041">LayerTestResult&lt; T, n &gt;::outputExpected</a>, and <a class="el" href="_tensor_8cpp_source.html#l00259">TensorInfo::SetQuantizationScale()</a>.</p>
696<div class="fragment"><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;{</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keyword">using</span> <a class="code" href="_inference_test_image_8hpp.html#a65983f8cb907d873f2328bb8307c296aa9d5ed678fe57bcca610140957afab571">B</a> = <a class="code" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType&lt;ArmnnBType&gt;</a>;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="comment">// Until we have a specialist 1D convolution layer, we can fake one using</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="comment">// 2D convolution with the final dimension set to 1.</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="comment">// I don&#39;t anticipate this being particularly slow, given that convolution is implemented</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="comment">// as a matrix multiplication, at which point dimension doesn&#39;t matter.</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> batchSize = 1;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels = 2;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputChannels = 3;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputSize = 5; <span class="comment">// The 1D size (could view as &#39;width&#39; or &#39;height&#39;).</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelSize = 3;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> padSize = 2;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> stride = 1;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputSize = 7; <span class="comment">// (inputSize + 2 * padSize - kernelSize + 1) / stride.</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputInfo({batchSize, inputChannels, inputSize, 1}, ArmnnType);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputInfo({batchSize, outputChannels, outputSize, 1}, ArmnnType);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> kernelInfo({outputChannels, inputChannels, kernelSize, 1}, ArmnnType);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> biasInfo({outputChannels}, ArmnnBType);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="comment">// Set quantization parameters if the requested type is a quantized type.</span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">if</span>(armnn::IsQuantizedType&lt;T&gt;())</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; {</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a685739c4eb65a580e075282cfe6787d6">SetQuantizationScale</a>(qScale);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; inputInfo.SetQuantizationOffset(qOffset);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; outputInfo.SetQuantizationScale(qScale);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; outputInfo.SetQuantizationOffset(qOffset);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; kernelInfo.SetQuantizationScale(qScale);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; kernelInfo.SetQuantizationOffset(qOffset);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; biasInfo.SetQuantizationScale(inputInfo.GetQuantizationScale()*kernelInfo.GetQuantizationScale());</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; biasInfo.SetQuantizationOffset(0);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; }</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; std::vector&lt;T&gt; inputData = QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; {</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; 5.0f, -2.0f, 2.5f, 0.0f, 1.0f,</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; -3.0f, 3.2f, 5.0f, 2.0f, 3.0f,</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; },</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; inputInfo.GetQuantizationScale(),</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; inputInfo.GetQuantizationOffset());</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; std::vector&lt;T&gt; kernelData = QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; {</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; 1.0f, 0.0f, 0.0f,</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; 0.0f, 2.0f, -1.5f,</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; 0.0f, 0.0f, 0.0f,</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; 0.2f, 0.2f, 0.2f,</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; 0.5f, 0.0f, 0.5f,</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; 0.0f, -1.0f, 0.0f</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; },</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; kernelInfo.GetQuantizationScale(),</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; kernelInfo.GetQuantizationOffset());</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; std::vector&lt;B&gt; biasData =</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; QuantizedVector&lt;B&gt;({ 1.0f, 0.0f, 0.0f }, biasInfo.GetQuantizationScale(), biasInfo.GetQuantizationOffset());</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; std::vector&lt;T&gt; outputData = QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; 4.5f, -10.8f, 5.0f + 6.4f - 7.5f, -2.0f + 10.0f -3.0f, 2.5f + 4.0f - 4.5f, 6.0f, 1.0f,</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; -0.6f, -0.6f + 0.64f, -0.6f + 0.64f + 1.0f, 0.64f + 1.0f + 0.4f, 1.0f + 0.4f + 0.6f, 0.4f + 0.6f, 0.6f,</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; 2.5f, -1.0f + 3.0f, 1.25f - 3.2f + 2.5f, -1.0f - 5.0f, 1.25f + 0.5f - 2.0f, -3.0f, 0.5f</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; },</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; outputInfo.GetQuantizationScale(),</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; outputInfo.GetQuantizationOffset());</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="comment">// Optionally apply bias to output image.</span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">if</span>(biasEnabled)</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; {</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <a class="code" href="_conv2d_test_impl_8cpp.html#aa1f4ce02e0904dc8cf1b7f42bc34d346">ApplyBias</a>(outputData, outputInfo.GetQuantizationScale(), outputInfo.GetQuantizationOffset(),</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; biasData, biasInfo.GetQuantizationScale(), biasInfo.GetQuantizationOffset(),</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; 1, outputSize);</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; }</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; std::unique_ptr&lt;armnn::ITensorHandle&gt; inputHandle = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">CreateTensorHandle</a>(inputInfo);</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; std::unique_ptr&lt;armnn::ITensorHandle&gt; outputHandle = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">CreateTensorHandle</a>(outputInfo);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <a class="code" href="structarmnn_1_1_convolution2d_queue_descriptor.html">armnn::Convolution2dQueueDescriptor</a> data;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <a class="code" href="structarmnn_1_1_workload_info.html">armnn::WorkloadInfo</a> <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>;</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <a class="code" href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a> weightsTensor(kernelInfo);</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <a class="code" href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a> biasTensor(biasInfo);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a>(&amp;weightsTensor, kernelData.data());</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a>(&amp;biasTensor, biasData.data());</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; AddInputToWorkload(data, info, inputInfo, inputHandle.get());</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; AddOutputToWorkload(data, info, outputInfo, outputHandle.get());</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; data.<a class="code" href="structarmnn_1_1_convolution2d_queue_descriptor.html#a3369b66d9316a773a41711e3f590c041">m_Weight</a> = &amp;weightsTensor;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; data.<a class="code" href="structarmnn_1_1_convolution2d_queue_descriptor.html#ab3437cee6b0687812104fc1b37cbe8b3">m_Bias</a> = &amp;biasTensor;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#afe6a3377c4531315354def9023c8fdda">m_StrideX</a> = 1;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#ac1fe174bbadfb39a2b636940c2e647c8">m_StrideY</a> = stride;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#ac18546ebbebbb32fe0a03baa9bf2c600">m_PadLeft</a> = 0;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#a002bc30e590d78cbb4f4d12171055ca7">m_PadRight</a> = 0;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#a56b51f56cef50cdfa554258eecdab046">m_PadTop</a> = padSize;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#aa9e49717ebdb741e8c767741647fc618">m_PadBottom</a> = padSize;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#aea202e14d8874cefd9a0f778022b7e25">m_BiasEnabled</a> = biasEnabled;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; std::unique_ptr&lt;armnn::IWorkload&gt; workload = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a2184995027cd2c9f9980206de9658855">CreateConvolution2d</a>(data, info);</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; inputHandle-&gt;Allocate();</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; outputHandle-&gt;Allocate();</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a>(inputHandle.get(), inputData.data());</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; ExecuteWorkload(*workload, memoryManager);</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="comment">// Output</span></div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <a class="code" href="struct_layer_test_result.html">LayerTestResult&lt;T,4&gt;</a> ret(outputInfo);</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a>(&amp;ret.output[0][0][0][0], outputHandle.get());</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; ret.outputExpected = MakeTensor&lt;T, 4&gt;(outputInfo, outputData);</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;}</div><div class="ttc" id="_tensor_copy_utils_8cpp_html_afaaca8c3f3a467d124bba44067d2afa8"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a></div><div class="ttdeci">void AllocateAndCopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00019">TensorCopyUtils.cpp:19</a></div></div>
697<div class="ttc" id="_conv2d_test_impl_8cpp_html_aa1f4ce02e0904dc8cf1b7f42bc34d346"><div class="ttname"><a href="_conv2d_test_impl_8cpp.html#aa1f4ce02e0904dc8cf1b7f42bc34d346">ApplyBias</a></div><div class="ttdeci">void ApplyBias(std::vector&lt; T &gt; &amp;v, float vScale, int32_t vOffset, const std::vector&lt; B &gt; &amp;bias, float bScale, int32_t bOffset, uint32_t w, uint32_t h)</div><div class="ttdef"><b>Definition:</b> <a href="_conv2d_test_impl_8cpp_source.html#l00169">Conv2dTestImpl.cpp:169</a></div></div>
698<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_a002bc30e590d78cbb4f4d12171055ca7"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#a002bc30e590d78cbb4f4d12171055ca7">armnn::Convolution2dDescriptor::m_PadRight</a></div><div class="ttdeci">uint32_t m_PadRight</div><div class="ttdoc">Padding right value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00424">Descriptors.hpp:424</a></div></div>
699<div class="ttc" id="_tensor_copy_utils_8cpp_html_ae15f1a3c55d2db87683577de9fa4437c"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a></div><div class="ttdeci">void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00009">TensorCopyUtils.cpp:9</a></div></div>
700<div class="ttc" id="structarmnn_1_1_convolution2d_queue_descriptor_html"><div class="ttname"><a href="structarmnn_1_1_convolution2d_queue_descriptor.html">armnn::Convolution2dQueueDescriptor</a></div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00168">WorkloadData.hpp:168</a></div></div>
701<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
702<div class="ttc" id="structarmnn_1_1_queue_descriptor_with_parameters_html_aad91b9bbf7aa365d304febe79a3d1333"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">armnn::QueueDescriptorWithParameters::m_Parameters</a></div><div class="ttdeci">LayerDescriptor m_Parameters</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00049">WorkloadData.hpp:49</a></div></div>
703<div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
704<div class="ttc" id="classarmnn_1_1_i_workload_factory_html_a15c140be4ddceffee16436f009d3ed94"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">armnn::IWorkloadFactory::CreateTensorHandle</a></div><div class="ttdeci">virtual std::unique_ptr&lt; ITensorHandle &gt; CreateTensorHandle(const TensorInfo &amp;tensorInfo, const bool IsMemoryManaged=true) const =0</div></div>
705<div class="ttc" id="struct_layer_test_result_html"><div class="ttname"><a href="struct_layer_test_result.html">LayerTestResult</a></div><div class="ttdef"><b>Definition:</b> <a href="_layer_test_result_8hpp_source.html#l00029">LayerTestResult.hpp:29</a></div></div>
706<div class="ttc" id="_tensor_copy_utils_8cpp_html_a99b626c58a926dc7d6df78d22ec186c8"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a></div><div class="ttdeci">void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00014">TensorCopyUtils.cpp:14</a></div></div>
707<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_aa9e49717ebdb741e8c767741647fc618"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#aa9e49717ebdb741e8c767741647fc618">armnn::Convolution2dDescriptor::m_PadBottom</a></div><div class="ttdeci">uint32_t m_PadBottom</div><div class="ttdoc">Padding bottom value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00428">Descriptors.hpp:428</a></div></div>
708<div class="ttc" id="structarmnn_1_1_workload_info_html"><div class="ttname"><a href="structarmnn_1_1_workload_info.html">armnn::WorkloadInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_workload_info_8hpp_source.html#l00016">WorkloadInfo.hpp:16</a></div></div>
709<div class="ttc" id="namespacearmnn_html_a0743ed5e860c316a20b68ca96301b411"><div class="ttname"><a href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a></div><div class="ttdeci">typename ResolveTypeImpl&lt; DT &gt;::Type ResolveType</div><div class="ttdef"><b>Definition:</b> <a href="_resolve_type_8hpp_source.html#l00066">ResolveType.hpp:66</a></div></div>
710<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_ac1fe174bbadfb39a2b636940c2e647c8"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#ac1fe174bbadfb39a2b636940c2e647c8">armnn::Convolution2dDescriptor::m_StrideY</a></div><div class="ttdeci">uint32_t m_StrideY</div><div class="ttdoc">Stride value when proceeding through input for the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00432">Descriptors.hpp:432</a></div></div>
711<div class="ttc" id="structarmnn_1_1_convolution2d_queue_descriptor_html_a3369b66d9316a773a41711e3f590c041"><div class="ttname"><a href="structarmnn_1_1_convolution2d_queue_descriptor.html#a3369b66d9316a773a41711e3f590c041">armnn::Convolution2dQueueDescriptor::m_Weight</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_Weight</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00176">WorkloadData.hpp:176</a></div></div>
712<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_a56b51f56cef50cdfa554258eecdab046"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#a56b51f56cef50cdfa554258eecdab046">armnn::Convolution2dDescriptor::m_PadTop</a></div><div class="ttdeci">uint32_t m_PadTop</div><div class="ttdoc">Padding top value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00426">Descriptors.hpp:426</a></div></div>
713<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_ac18546ebbebbb32fe0a03baa9bf2c600"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#ac18546ebbebbb32fe0a03baa9bf2c600">armnn::Convolution2dDescriptor::m_PadLeft</a></div><div class="ttdeci">uint32_t m_PadLeft</div><div class="ttdoc">Padding left value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00422">Descriptors.hpp:422</a></div></div>
714<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_afe6a3377c4531315354def9023c8fdda"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#afe6a3377c4531315354def9023c8fdda">armnn::Convolution2dDescriptor::m_StrideX</a></div><div class="ttdeci">uint32_t m_StrideX</div><div class="ttdoc">Stride value when proceeding through input for the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00430">Descriptors.hpp:430</a></div></div>
715<div class="ttc" id="_inference_test_image_8hpp_html_a65983f8cb907d873f2328bb8307c296aa9d5ed678fe57bcca610140957afab571"><div class="ttname"><a href="_inference_test_image_8hpp.html#a65983f8cb907d873f2328bb8307c296aa9d5ed678fe57bcca610140957afab571">ImageChannel::B</a></div></div>
716<div class="ttc" id="classarmnn_1_1_tensor_info_html_a685739c4eb65a580e075282cfe6787d6"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a685739c4eb65a580e075282cfe6787d6">armnn::TensorInfo::SetQuantizationScale</a></div><div class="ttdeci">void SetQuantizationScale(float scale)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00259">Tensor.cpp:259</a></div></div>
717<div class="ttc" id="structarmnn_1_1_convolution2d_queue_descriptor_html_ab3437cee6b0687812104fc1b37cbe8b3"><div class="ttname"><a href="structarmnn_1_1_convolution2d_queue_descriptor.html#ab3437cee6b0687812104fc1b37cbe8b3">armnn::Convolution2dQueueDescriptor::m_Bias</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_Bias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00177">WorkloadData.hpp:177</a></div></div>
718<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_aea202e14d8874cefd9a0f778022b7e25"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#aea202e14d8874cefd9a0f778022b7e25">armnn::Convolution2dDescriptor::m_BiasEnabled</a></div><div class="ttdeci">bool m_BiasEnabled</div><div class="ttdoc">Enable/disable bias. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00438">Descriptors.hpp:438</a></div></div>
719<div class="ttc" id="classarmnn_1_1_i_workload_factory_html_a2184995027cd2c9f9980206de9658855"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.html#a2184995027cd2c9f9980206de9658855">armnn::IWorkloadFactory::CreateConvolution2d</a></div><div class="ttdeci">virtual std::unique_ptr&lt; IWorkload &gt; CreateConvolution2d(const Convolution2dQueueDescriptor &amp;descriptor, const WorkloadInfo &amp;info) const</div><div class="ttdef"><b>Definition:</b> <a href="_workload_factory_8cpp_source.html#l01142">WorkloadFactory.cpp:1142</a></div></div>
720<div class="ttc" id="classarmnn_1_1_scoped_cpu_tensor_handle_html"><div class="ttname"><a href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a></div><div class="ttdef"><b>Definition:</b> <a href="_cpu_tensor_handle_8hpp_source.html#l00106">CpuTensorHandle.hpp:106</a></div></div>
721</div><!-- fragment -->
722</div>
723</div>
724<a id="a40bc412ed2a6d2f764655070c02c036b"></a>
725<h2 class="memtitle"><span class="permalink"><a href="#a40bc412ed2a6d2f764655070c02c036b">&#9670;&nbsp;</a></span>Convolution1dUint8Test()</h2>
726
727<div class="memitem">
728<div class="memproto">
729 <table class="memname">
730 <tr>
731 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;uint8_t, 4&gt; Convolution1dUint8Test </td>
732 <td>(</td>
733 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
734 <td class="paramname"><em>workloadFactory</em>, </td>
735 </tr>
736 <tr>
737 <td class="paramkey"></td>
738 <td></td>
739 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
740 <td class="paramname"><em>memoryManager</em>, </td>
741 </tr>
742 <tr>
743 <td class="paramkey"></td>
744 <td></td>
745 <td class="paramtype">bool&#160;</td>
746 <td class="paramname"><em>biasEnabled</em>&#160;</td>
747 </tr>
748 <tr>
749 <td></td>
750 <td>)</td>
751 <td></td><td></td>
752 </tr>
753 </table>
754</div><div class="memdoc">
755
756<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l03035">3035</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
757<div class="fragment"><div class="line"><a name="l03039"></a><span class="lineno"> 3039</span>&#160;{</div><div class="line"><a name="l03040"></a><span class="lineno"> 3040</span>&#160; <span class="keywordflow">return</span> Convolution1dTestImpl&lt;armnn::DataType::QAsymmU8, armnn::DataType::Signed32&gt;(</div><div class="line"><a name="l03041"></a><span class="lineno"> 3041</span>&#160; workloadFactory, memoryManager, 0.1f, 128, biasEnabled);</div><div class="line"><a name="l03042"></a><span class="lineno"> 3042</span>&#160;}</div></div><!-- fragment -->
758</div>
759</div>
760<a id="acf553288e3b5060768fb91e064993678"></a>
761<h2 class="memtitle"><span class="permalink"><a href="#acf553288e3b5060768fb91e064993678">&#9670;&nbsp;</a></span>Convolution2d2x2Dilation2x2Padding2x2Stride3x3Test()</h2>
762
763<div class="memitem">
764<div class="memproto">
765 <table class="memname">
766 <tr>
767 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T, 4&gt; Convolution2d2x2Dilation2x2Padding2x2Stride3x3Test </td>
768 <td>(</td>
769 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
770 <td class="paramname"><em>workloadFactory</em>, </td>
771 </tr>
772 <tr>
773 <td class="paramkey"></td>
774 <td></td>
775 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
776 <td class="paramname"><em>memoryManager</em>, </td>
777 </tr>
778 <tr>
779 <td class="paramkey"></td>
780 <td></td>
781 <td class="paramtype">bool&#160;</td>
782 <td class="paramname"><em>biasEnabled</em>, </td>
783 </tr>
784 <tr>
785 <td class="paramkey"></td>
786 <td></td>
787 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
788 <td class="paramname"><em>layout</em>&#160;</td>
789 </tr>
790 <tr>
791 <td></td>
792 <td>)</td>
793 <td></td><td></td>
794 </tr>
795 </table>
796</div><div class="memdoc">
797
798<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l01210">1210</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
799<div class="fragment"><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160;{</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputTensorInfo({1, 1, 10, 10}, ArmnnType);</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; std::vector&lt;float&gt; inputNoQuantizedValues =</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; {</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; 1, 1, 1, 1, 1, 1, 1, 1, 1, 1</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; };</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> kernelTensorInfo({ 1, 1, 2, 2}, ArmnnType);</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; std::vector&lt;float&gt; kernelNoQuantizedValues =</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; {</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; 1, 2,</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; 3, 4</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; };</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; <span class="comment">// Since the dilation rate is 2 this will dilate the kernel to be like 3x3: d(K-1)+1 --&gt; 2 x (2-1) + 1 = 3,</span></div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; <span class="comment">// therefore the output will be 4x4: (I − K + 2P)/S +1 =&gt; trunc ( (10 - 3 + 2x2 ) / 3 + 1 )</span></div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; <span class="comment">// where, dilation size = d = 2; kernel size = K = 2; input size = I = 10; padding size = P = 2; stride = S = 3</span></div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputTensorInfo({ 1, 1, 4, 4}, ArmnnType);</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; std::vector&lt;float&gt; outputExpectedNoQuantizedValues =</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; {</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; 4, 7, 7, 3,</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; 6, 10, 10, 4,</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; 6, 10, 10, 4,</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; 2, 3, 3, 1</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; };</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; uint32_t padLeft = 1;</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; uint32_t padTop = 1;</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; uint32_t padRight = 1;</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; uint32_t padBottom = 1;</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; <span class="keywordflow">return</span> Convolution2d3x3DilationTestCommon&lt;ArmnnType, ArmnnBType&gt;(</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; workloadFactory,</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; memoryManager,</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; inputNoQuantizedValues,</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; inputTensorInfo,</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; kernelNoQuantizedValues,</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; kernelTensorInfo,</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; outputExpectedNoQuantizedValues,</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; outputTensorInfo,</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; 2,</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; 2,</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; layout,</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; padLeft,</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; padTop,</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; padRight,</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; padBottom,</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; 3,</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; 3,</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; biasEnabled</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; );</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
800</div><!-- fragment -->
801</div>
802</div>
803<a id="a72ba5d8a546cd3e8bf890058d74959d1"></a>
804<h2 class="memtitle"><span class="permalink"><a href="#a72ba5d8a546cd3e8bf890058d74959d1">&#9670;&nbsp;</a></span>Convolution2d2x2Dilation2x2Padding2x2Stride3x3Test< armnn::DataType::Float32, armnn::DataType::Float32 >()</h2>
805
806<div class="memitem">
807<div class="memproto">
808 <table class="memname">
809 <tr>
810 <td class="memname">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;<a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>&gt;, 4&gt; <a class="el" href="_conv2d_test_impl_8hpp.html#acf553288e3b5060768fb91e064993678">Convolution2d2x2Dilation2x2Padding2x2Stride3x3Test</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a> &gt; </td>
811 <td>(</td>
812 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
813 <td class="paramname"><em>workloadFactory</em>, </td>
814 </tr>
815 <tr>
816 <td class="paramkey"></td>
817 <td></td>
818 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
819 <td class="paramname"><em>memoryManager</em>, </td>
820 </tr>
821 <tr>
822 <td class="paramkey"></td>
823 <td></td>
824 <td class="paramtype">bool&#160;</td>
825 <td class="paramname"><em>biasEnabled</em>, </td>
826 </tr>
827 <tr>
828 <td class="paramkey"></td>
829 <td></td>
830 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
831 <td class="paramname"><em>layout</em>&#160;</td>
832 </tr>
833 <tr>
834 <td></td>
835 <td>)</td>
836 <td></td><td></td>
837 </tr>
838 </table>
839</div><div class="memdoc">
840
841</div>
842</div>
843<a id="adfbd5fcca8b67b69f528fd1a270a1c53"></a>
844<h2 class="memtitle"><span class="permalink"><a href="#adfbd5fcca8b67b69f528fd1a270a1c53">&#9670;&nbsp;</a></span>Convolution2d2x2Dilation2x2Padding2x2Stride3x3Test< armnn::DataType::QAsymmU8, armnn::DataType::Signed32 >()</h2>
845
846<div class="memitem">
847<div class="memproto">
848 <table class="memname">
849 <tr>
850 <td class="memname">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;<a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>&gt;, 4&gt; <a class="el" href="_conv2d_test_impl_8hpp.html#acf553288e3b5060768fb91e064993678">Convolution2d2x2Dilation2x2Padding2x2Stride3x3Test</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a> &gt; </td>
851 <td>(</td>
852 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
853 <td class="paramname"><em>workloadFactory</em>, </td>
854 </tr>
855 <tr>
856 <td class="paramkey"></td>
857 <td></td>
858 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
859 <td class="paramname"><em>memoryManager</em>, </td>
860 </tr>
861 <tr>
862 <td class="paramkey"></td>
863 <td></td>
864 <td class="paramtype">bool&#160;</td>
865 <td class="paramname"><em>biasEnabled</em>, </td>
866 </tr>
867 <tr>
868 <td class="paramkey"></td>
869 <td></td>
870 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
871 <td class="paramname"><em>layout</em>&#160;</td>
872 </tr>
873 <tr>
874 <td></td>
875 <td>)</td>
876 <td></td><td></td>
877 </tr>
878 </table>
879</div><div class="memdoc">
880
881</div>
882</div>
883<a id="a0ca68580fabbe96baccab2139bf8fec3"></a>
884<h2 class="memtitle"><span class="permalink"><a href="#a0ca68580fabbe96baccab2139bf8fec3">&#9670;&nbsp;</a></span>Convolution2d2x2Dilation2x2Padding2x2Stride3x3Test< armnn::DataType::QSymmS16, armnn::DataType::Signed32 >()</h2>
885
886<div class="memitem">
887<div class="memproto">
888 <table class="memname">
889 <tr>
890 <td class="memname">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;<a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a>&gt;, 4&gt; <a class="el" href="_conv2d_test_impl_8hpp.html#acf553288e3b5060768fb91e064993678">Convolution2d2x2Dilation2x2Padding2x2Stride3x3Test</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a> &gt; </td>
891 <td>(</td>
892 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
893 <td class="paramname"><em>workloadFactory</em>, </td>
894 </tr>
895 <tr>
896 <td class="paramkey"></td>
897 <td></td>
898 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
899 <td class="paramname"><em>memoryManager</em>, </td>
900 </tr>
901 <tr>
902 <td class="paramkey"></td>
903 <td></td>
904 <td class="paramtype">bool&#160;</td>
905 <td class="paramname"><em>biasEnabled</em>, </td>
906 </tr>
907 <tr>
908 <td class="paramkey"></td>
909 <td></td>
910 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
911 <td class="paramname"><em>layout</em>&#160;</td>
912 </tr>
913 <tr>
914 <td></td>
915 <td>)</td>
916 <td></td><td></td>
917 </tr>
918 </table>
919</div><div class="memdoc">
920
921</div>
922</div>
923<a id="a99ef3f48cbd057e0169bc80dc77331ef"></a>
924<h2 class="memtitle"><span class="permalink"><a href="#a99ef3f48cbd057e0169bc80dc77331ef">&#9670;&nbsp;</a></span>Convolution2d2x3x3Dilation3x3Test()</h2>
925
926<div class="memitem">
927<div class="memproto">
928 <table class="memname">
929 <tr>
930 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T, 4&gt; Convolution2d2x3x3Dilation3x3Test </td>
931 <td>(</td>
932 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
933 <td class="paramname"><em>workloadFactory</em>, </td>
934 </tr>
935 <tr>
936 <td class="paramkey"></td>
937 <td></td>
938 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
939 <td class="paramname"><em>memoryManager</em>, </td>
940 </tr>
941 <tr>
942 <td class="paramkey"></td>
943 <td></td>
944 <td class="paramtype">bool&#160;</td>
945 <td class="paramname"><em>biasEnabled</em>, </td>
946 </tr>
947 <tr>
948 <td class="paramkey"></td>
949 <td></td>
950 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
951 <td class="paramname"><em>layout</em>&#160;</td>
952 </tr>
953 <tr>
954 <td></td>
955 <td>)</td>
956 <td></td><td></td>
957 </tr>
958 </table>
959</div><div class="memdoc">
960
961<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l01139">1139</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
962<div class="fragment"><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;{</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputTensorInfo({1, 2, 10, 10}, ArmnnType);</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; std::vector&lt;float&gt; inputNoQuantizedValues =</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; {</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; };</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> kernelTensorInfo({ 1, 2, 3, 3}, ArmnnType);</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; std::vector&lt;float&gt; kernelNoQuantizedValues =</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; {</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; 1, 2, 3,</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; 4, 5, 6,</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; 7, 8, 9,</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; 1, 2, 3,</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; 4, 5, 6,</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; 7, 8, 9</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; };</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; <span class="comment">// Since the dilation rate is 3 this will dilate the kernel to be like 7x7,</span></div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; <span class="comment">// therefore the output will be 4x4: (I−K+2P)/S +1 =&gt; (10-7 +0)/1 +1</span></div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputTensorInfo({ 1, 1, 4, 4}, ArmnnType);</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; std::vector&lt;float&gt; outputExpectedNoQuantizedValues =</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; {</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; 12., 10., 10., 10.,</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; 12., 10., 10., 10.,</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; 12., 10., 10., 10.,</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; 6., 4., 4., 4.</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; };</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160;</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; <span class="keywordflow">return</span> Convolution2d3x3DilationTestCommon&lt;ArmnnType, ArmnnBType&gt;(</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; workloadFactory,</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; memoryManager,</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; inputNoQuantizedValues,</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; inputTensorInfo,</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; kernelNoQuantizedValues,</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; kernelTensorInfo,</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; outputExpectedNoQuantizedValues,</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; outputTensorInfo,</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; 3,</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; 3,</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; layout,</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; biasEnabled);</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
963</div><!-- fragment -->
964</div>
965</div>
966<a id="ae4aeb75cd7f8051b6715ac315ae88254"></a>
967<h2 class="memtitle"><span class="permalink"><a href="#ae4aeb75cd7f8051b6715ac315ae88254">&#9670;&nbsp;</a></span>Convolution2d2x3x3Dilation3x3Test< armnn::DataType::Float32, armnn::DataType::Float32 >()</h2>
968
969<div class="memitem">
970<div class="memproto">
971 <table class="memname">
972 <tr>
973 <td class="memname">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;<a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>&gt;, 4&gt; <a class="el" href="_conv2d_test_impl_8hpp.html#a99ef3f48cbd057e0169bc80dc77331ef">Convolution2d2x3x3Dilation3x3Test</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a> &gt; </td>
974 <td>(</td>
975 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
976 <td class="paramname">, </td>
977 </tr>
978 <tr>
979 <td class="paramkey"></td>
980 <td></td>
981 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
982 <td class="paramname">, </td>
983 </tr>
984 <tr>
985 <td class="paramkey"></td>
986 <td></td>
987 <td class="paramtype">bool&#160;</td>
988 <td class="paramname">, </td>
989 </tr>
990 <tr>
991 <td class="paramkey"></td>
992 <td></td>
993 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
994 <td class="paramname">&#160;</td>
995 </tr>
996 <tr>
997 <td></td>
998 <td>)</td>
999 <td></td><td></td>
1000 </tr>
1001 </table>
1002</div><div class="memdoc">
1003
1004</div>
1005</div>
1006<a id="aa2e414537fb1d51510cd7d1d3c85066b"></a>
1007<h2 class="memtitle"><span class="permalink"><a href="#aa2e414537fb1d51510cd7d1d3c85066b">&#9670;&nbsp;</a></span>Convolution2d2x3x3Dilation3x3Test< armnn::DataType::QAsymmU8, armnn::DataType::Signed32 >()</h2>
1008
1009<div class="memitem">
1010<div class="memproto">
1011 <table class="memname">
1012 <tr>
1013 <td class="memname">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;<a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>&gt;, 4&gt; <a class="el" href="_conv2d_test_impl_8hpp.html#a99ef3f48cbd057e0169bc80dc77331ef">Convolution2d2x3x3Dilation3x3Test</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a> &gt; </td>
1014 <td>(</td>
1015 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
1016 <td class="paramname">, </td>
1017 </tr>
1018 <tr>
1019 <td class="paramkey"></td>
1020 <td></td>
1021 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
1022 <td class="paramname">, </td>
1023 </tr>
1024 <tr>
1025 <td class="paramkey"></td>
1026 <td></td>
1027 <td class="paramtype">bool&#160;</td>
1028 <td class="paramname">, </td>
1029 </tr>
1030 <tr>
1031 <td class="paramkey"></td>
1032 <td></td>
1033 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
1034 <td class="paramname">&#160;</td>
1035 </tr>
1036 <tr>
1037 <td></td>
1038 <td>)</td>
1039 <td></td><td></td>
1040 </tr>
1041 </table>
1042</div><div class="memdoc">
1043
1044</div>
1045</div>
1046<a id="a48050c4e985c5741b51b55eb9961a19a"></a>
1047<h2 class="memtitle"><span class="permalink"><a href="#a48050c4e985c5741b51b55eb9961a19a">&#9670;&nbsp;</a></span>Convolution2d2x3x3Dilation3x3Test< armnn::DataType::QSymmS16, armnn::DataType::Signed32 >()</h2>
1048
1049<div class="memitem">
1050<div class="memproto">
1051 <table class="memname">
1052 <tr>
1053 <td class="memname">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;<a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a>&gt;, 4&gt; <a class="el" href="_conv2d_test_impl_8hpp.html#a99ef3f48cbd057e0169bc80dc77331ef">Convolution2d2x3x3Dilation3x3Test</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a> &gt; </td>
1054 <td>(</td>
1055 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
1056 <td class="paramname">, </td>
1057 </tr>
1058 <tr>
1059 <td class="paramkey"></td>
1060 <td></td>
1061 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
1062 <td class="paramname">, </td>
1063 </tr>
1064 <tr>
1065 <td class="paramkey"></td>
1066 <td></td>
1067 <td class="paramtype">bool&#160;</td>
1068 <td class="paramname">, </td>
1069 </tr>
1070 <tr>
1071 <td class="paramkey"></td>
1072 <td></td>
1073 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
1074 <td class="paramname">&#160;</td>
1075 </tr>
1076 <tr>
1077 <td></td>
1078 <td>)</td>
1079 <td></td><td></td>
1080 </tr>
1081 </table>
1082</div><div class="memdoc">
1083
1084</div>
1085</div>
1086<a id="a90abce368d7f16012bef5ee461329484"></a>
1087<h2 class="memtitle"><span class="permalink"><a href="#a90abce368d7f16012bef5ee461329484">&#9670;&nbsp;</a></span>Convolution2d3x3Dilation3x3Test()</h2>
1088
1089<div class="memitem">
1090<div class="memproto">
1091 <table class="memname">
1092 <tr>
1093 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T, 4&gt; Convolution2d3x3Dilation3x3Test </td>
1094 <td>(</td>
1095 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
1096 <td class="paramname"><em>workloadFactory</em>, </td>
1097 </tr>
1098 <tr>
1099 <td class="paramkey"></td>
1100 <td></td>
1101 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
1102 <td class="paramname"><em>memoryManager</em>, </td>
1103 </tr>
1104 <tr>
1105 <td class="paramkey"></td>
1106 <td></td>
1107 <td class="paramtype">bool&#160;</td>
1108 <td class="paramname"><em>biasEnabled</em>, </td>
1109 </tr>
1110 <tr>
1111 <td class="paramkey"></td>
1112 <td></td>
1113 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
1114 <td class="paramname"><em>layout</em>&#160;</td>
1115 </tr>
1116 <tr>
1117 <td></td>
1118 <td>)</td>
1119 <td></td><td></td>
1120 </tr>
1121 </table>
1122</div><div class="memdoc">
1123
1124<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l01083">1083</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
1125<div class="fragment"><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;{</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputTensorInfo({1, 1, 10, 10}, ArmnnType);</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; std::vector&lt;float&gt; inputNoQuantizedValues =</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; {</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; };</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> kernelTensorInfo({ 1, 1, 3, 3}, ArmnnType);</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; std::vector&lt;float&gt; kernelNoQuantizedValues =</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; {</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; 1, 2, 3,</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; 4, 5, 6,</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; 7, 8, 9</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; };</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; <span class="comment">// Since the dilation rate is 3 this will dilate the kernel to be like 7x7,</span></div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; <span class="comment">// therefore the output will be 4x4: (I−K+2P)/S +1 =&gt; (10-7 +0)/1 +1</span></div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputTensorInfo({ 1, 1, 4, 4}, ArmnnType);</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; std::vector&lt;float&gt; outputExpectedNoQuantizedValues =</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; {</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; 6., 5., 5., 5.,</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; 6., 5., 5., 5.,</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; 6., 5., 5., 5.,</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; 3., 2., 2., 2.</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; };</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; <span class="keywordflow">return</span> Convolution2d3x3DilationTestCommon&lt;ArmnnType, ArmnnBType&gt;(</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; workloadFactory,</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; memoryManager,</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; inputNoQuantizedValues,</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; inputTensorInfo,</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; kernelNoQuantizedValues,</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; kernelTensorInfo,</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; outputExpectedNoQuantizedValues,</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; outputTensorInfo,</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; 3,</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; 3,</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; layout,</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; biasEnabled);</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
1126</div><!-- fragment -->
1127</div>
1128</div>
1129<a id="a7ea8f82c89483fdec102125b82a798c7"></a>
1130<h2 class="memtitle"><span class="permalink"><a href="#a7ea8f82c89483fdec102125b82a798c7">&#9670;&nbsp;</a></span>Convolution2d3x3Dilation3x3Test< armnn::DataType::Float32, armnn::DataType::Float32 >()</h2>
1131
1132<div class="memitem">
1133<div class="memproto">
1134 <table class="memname">
1135 <tr>
1136 <td class="memname">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;<a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>&gt;, 4&gt; <a class="el" href="_conv2d_test_impl_8hpp.html#a90abce368d7f16012bef5ee461329484">Convolution2d3x3Dilation3x3Test</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a> &gt; </td>
1137 <td>(</td>
1138 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
1139 <td class="paramname">, </td>
1140 </tr>
1141 <tr>
1142 <td class="paramkey"></td>
1143 <td></td>
1144 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
1145 <td class="paramname">, </td>
1146 </tr>
1147 <tr>
1148 <td class="paramkey"></td>
1149 <td></td>
1150 <td class="paramtype">bool&#160;</td>
1151 <td class="paramname">, </td>
1152 </tr>
1153 <tr>
1154 <td class="paramkey"></td>
1155 <td></td>
1156 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
1157 <td class="paramname">&#160;</td>
1158 </tr>
1159 <tr>
1160 <td></td>
1161 <td>)</td>
1162 <td></td><td></td>
1163 </tr>
1164 </table>
1165</div><div class="memdoc">
1166
1167</div>
1168</div>
1169<a id="ac580208ebb11ac2d93076a5a7a346b9f"></a>
1170<h2 class="memtitle"><span class="permalink"><a href="#ac580208ebb11ac2d93076a5a7a346b9f">&#9670;&nbsp;</a></span>Convolution2d3x3Dilation3x3Test< armnn::DataType::QAsymmU8, armnn::DataType::Signed32 >()</h2>
1171
1172<div class="memitem">
1173<div class="memproto">
1174 <table class="memname">
1175 <tr>
1176 <td class="memname">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;<a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>&gt;, 4&gt; <a class="el" href="_conv2d_test_impl_8hpp.html#a90abce368d7f16012bef5ee461329484">Convolution2d3x3Dilation3x3Test</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a> &gt; </td>
1177 <td>(</td>
1178 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
1179 <td class="paramname">, </td>
1180 </tr>
1181 <tr>
1182 <td class="paramkey"></td>
1183 <td></td>
1184 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
1185 <td class="paramname">, </td>
1186 </tr>
1187 <tr>
1188 <td class="paramkey"></td>
1189 <td></td>
1190 <td class="paramtype">bool&#160;</td>
1191 <td class="paramname">, </td>
1192 </tr>
1193 <tr>
1194 <td class="paramkey"></td>
1195 <td></td>
1196 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
1197 <td class="paramname">&#160;</td>
1198 </tr>
1199 <tr>
1200 <td></td>
1201 <td>)</td>
1202 <td></td><td></td>
1203 </tr>
1204 </table>
1205</div><div class="memdoc">
1206
1207</div>
1208</div>
1209<a id="af84d6d89c899073318abbfa25292c36e"></a>
1210<h2 class="memtitle"><span class="permalink"><a href="#af84d6d89c899073318abbfa25292c36e">&#9670;&nbsp;</a></span>Convolution2d3x3Dilation3x3Test< armnn::DataType::QSymmS16, armnn::DataType::Signed32 >()</h2>
1211
1212<div class="memitem">
1213<div class="memproto">
1214 <table class="memname">
1215 <tr>
1216 <td class="memname">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;<a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a>&gt;, 4&gt; <a class="el" href="_conv2d_test_impl_8hpp.html#a90abce368d7f16012bef5ee461329484">Convolution2d3x3Dilation3x3Test</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a> &gt; </td>
1217 <td>(</td>
1218 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
1219 <td class="paramname">, </td>
1220 </tr>
1221 <tr>
1222 <td class="paramkey"></td>
1223 <td></td>
1224 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
1225 <td class="paramname">, </td>
1226 </tr>
1227 <tr>
1228 <td class="paramkey"></td>
1229 <td></td>
1230 <td class="paramtype">bool&#160;</td>
1231 <td class="paramname">, </td>
1232 </tr>
1233 <tr>
1234 <td class="paramkey"></td>
1235 <td></td>
1236 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
1237 <td class="paramname">&#160;</td>
1238 </tr>
1239 <tr>
1240 <td></td>
1241 <td>)</td>
1242 <td></td><td></td>
1243 </tr>
1244 </table>
1245</div><div class="memdoc">
1246
1247</div>
1248</div>
1249<a id="ad12c52b6d41931219bdfec5fbf5990bd"></a>
1250<h2 class="memtitle"><span class="permalink"><a href="#ad12c52b6d41931219bdfec5fbf5990bd">&#9670;&nbsp;</a></span>Convolution2d3x3DilationTestCommon()</h2>
1251
1252<div class="memitem">
1253<div class="memproto">
1254 <table class="memname">
1255 <tr>
1256 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T, 4&gt; Convolution2d3x3DilationTestCommon </td>
1257 <td>(</td>
1258 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
1259 <td class="paramname"><em>workloadFactory</em>, </td>
1260 </tr>
1261 <tr>
1262 <td class="paramkey"></td>
1263 <td></td>
1264 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
1265 <td class="paramname"><em>memoryManager</em>, </td>
1266 </tr>
1267 <tr>
1268 <td class="paramkey"></td>
1269 <td></td>
1270 <td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
1271 <td class="paramname"><em>inputNoQuantizedValues</em>, </td>
1272 </tr>
1273 <tr>
1274 <td class="paramkey"></td>
1275 <td></td>
1276 <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
1277 <td class="paramname"><em>inputTensorInfo</em>, </td>
1278 </tr>
1279 <tr>
1280 <td class="paramkey"></td>
1281 <td></td>
1282 <td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
1283 <td class="paramname"><em>kernelNoQuantizedValues</em>, </td>
1284 </tr>
1285 <tr>
1286 <td class="paramkey"></td>
1287 <td></td>
1288 <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
1289 <td class="paramname"><em>kernelTensorInfo</em>, </td>
1290 </tr>
1291 <tr>
1292 <td class="paramkey"></td>
1293 <td></td>
1294 <td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
1295 <td class="paramname"><em>outputExpectedNoQuantizedValues</em>, </td>
1296 </tr>
1297 <tr>
1298 <td class="paramkey"></td>
1299 <td></td>
1300 <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
1301 <td class="paramname"><em>outputTensorInfo</em>, </td>
1302 </tr>
1303 <tr>
1304 <td class="paramkey"></td>
1305 <td></td>
1306 <td class="paramtype">uint32_t&#160;</td>
1307 <td class="paramname"><em>dilationX</em>, </td>
1308 </tr>
1309 <tr>
1310 <td class="paramkey"></td>
1311 <td></td>
1312 <td class="paramtype">uint32_t&#160;</td>
1313 <td class="paramname"><em>dilationY</em>, </td>
1314 </tr>
1315 <tr>
1316 <td class="paramkey"></td>
1317 <td></td>
1318 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
1319 <td class="paramname"><em>layout</em> = <code><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></code>, </td>
1320 </tr>
1321 <tr>
1322 <td class="paramkey"></td>
1323 <td></td>
1324 <td class="paramtype">uint32_t&#160;</td>
1325 <td class="paramname"><em>padLeft</em> = <code>0</code>, </td>
1326 </tr>
1327 <tr>
1328 <td class="paramkey"></td>
1329 <td></td>
1330 <td class="paramtype">uint32_t&#160;</td>
1331 <td class="paramname"><em>padTop</em> = <code>0</code>, </td>
1332 </tr>
1333 <tr>
1334 <td class="paramkey"></td>
1335 <td></td>
1336 <td class="paramtype">uint32_t&#160;</td>
1337 <td class="paramname"><em>padRight</em> = <code>0</code>, </td>
1338 </tr>
1339 <tr>
1340 <td class="paramkey"></td>
1341 <td></td>
1342 <td class="paramtype">uint32_t&#160;</td>
1343 <td class="paramname"><em>padBottom</em> = <code>0</code>, </td>
1344 </tr>
1345 <tr>
1346 <td class="paramkey"></td>
1347 <td></td>
1348 <td class="paramtype">uint32_t&#160;</td>
1349 <td class="paramname"><em>strideX</em> = <code>1</code>, </td>
1350 </tr>
1351 <tr>
1352 <td class="paramkey"></td>
1353 <td></td>
1354 <td class="paramtype">uint32_t&#160;</td>
1355 <td class="paramname"><em>strideY</em> = <code>1</code>, </td>
1356 </tr>
1357 <tr>
1358 <td class="paramkey"></td>
1359 <td></td>
1360 <td class="paramtype">bool&#160;</td>
1361 <td class="paramname"><em>biasEnabled</em> = <code><a class="el" href="_ref_layer_tests_8cpp.html#a67e2647a90dec71bb79c8b38872ba570">false</a></code>&#160;</td>
1362 </tr>
1363 <tr>
1364 <td></td>
1365 <td>)</td>
1366 <td></td><td></td>
1367 </tr>
1368 </table>
1369</div><div class="memdoc">
1370
1371<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l00995">995</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
1372
1373<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::Float32</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::QSymmS16</a>, <a class="el" href="_tensor_8cpp_source.html#l00275">TensorInfo::SetQuantizationOffset()</a>, and <a class="el" href="_tensor_8cpp_source.html#l00259">TensorInfo::SetQuantizationScale()</a>.</p>
1374<div class="fragment"><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;{</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; <span class="keywordtype">float</span> qScale;</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; int32_t qOffset;</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; <span class="keywordflow">switch</span> (ArmnnType)</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; {</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>:</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; {</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; qScale = 0.1f;</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; qOffset = 128;</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; }</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a>:</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; {</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; qScale = 0.1f;</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; qOffset = 0;</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; }</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>:</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; {</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; qScale = 0.f;</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; qOffset = 0;</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; }</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; }</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160;</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a685739c4eb65a580e075282cfe6787d6">SetQuantizationScale</a>(qScale);</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a63cbc581012c957f9d68d224ddc3e43c">SetQuantizationOffset</a>(qOffset);</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; kernelTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a685739c4eb65a580e075282cfe6787d6">SetQuantizationScale</a>(qScale);</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; kernelTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a63cbc581012c957f9d68d224ddc3e43c">SetQuantizationOffset</a>(qOffset);</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a685739c4eb65a580e075282cfe6787d6">SetQuantizationScale</a>(qScale);</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a63cbc581012c957f9d68d224ddc3e43c">SetQuantizationOffset</a>(qOffset);</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <span class="keyword">auto</span> input = MakeTensor&lt;T, 4&gt;(inputTensorInfo,</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; std::vector&lt;T&gt;(QuantizedVector&lt;T&gt;(inputNoQuantizedValues,</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; inputTensorInfo.GetQuantizationScale(),</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; inputTensorInfo.GetQuantizationOffset())));</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; <span class="keyword">auto</span> kernel = MakeTensor&lt;T, 4&gt;(kernelTensorInfo,</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; std::vector&lt;T&gt;(QuantizedVector&lt;T&gt;(kernelNoQuantizedValues,</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; kernelTensorInfo.GetQuantizationScale(),</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; kernelTensorInfo.GetQuantizationOffset())));</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; <span class="keyword">auto</span> expectedOutput =</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; MakeTensor&lt;T, 4&gt;(outputTensorInfo,</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; std::vector&lt;T&gt;(QuantizedVector&lt;T&gt;(outputExpectedNoQuantizedValues,</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; outputTensorInfo.GetQuantizationScale(),</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; outputTensorInfo.GetQuantizationOffset())));</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; <span class="keywordflow">return</span> SimpleConvolution2dTestImpl&lt;ArmnnType, ArmnnBType&gt;(</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; workloadFactory,</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; memoryManager,</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; input,</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; kernel,</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; GetBias2&lt;ArmnnBType&gt;(biasEnabled, qScale * qScale),</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; expectedOutput,</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; qScale,</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; qOffset,</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; layout,</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; padLeft,</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; padTop,</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; padRight,</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; padBottom,</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; strideX,</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; strideY,</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; dilationX,</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; dilationY);</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a></div></div>
1375<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
1376<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a></div></div>
1377<div class="ttc" id="classarmnn_1_1_tensor_info_html_a685739c4eb65a580e075282cfe6787d6"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a685739c4eb65a580e075282cfe6787d6">armnn::TensorInfo::SetQuantizationScale</a></div><div class="ttdeci">void SetQuantizationScale(float scale)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00259">Tensor.cpp:259</a></div></div>
1378<div class="ttc" id="classarmnn_1_1_tensor_info_html_a63cbc581012c957f9d68d224ddc3e43c"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a63cbc581012c957f9d68d224ddc3e43c">armnn::TensorInfo::SetQuantizationOffset</a></div><div class="ttdeci">void SetQuantizationOffset(int32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00275">Tensor.cpp:275</a></div></div>
1379</div><!-- fragment -->
1380</div>
1381</div>
1382<a id="a48884a37a6b783185c608a68cfce752f"></a>
1383<h2 class="memtitle"><span class="permalink"><a href="#a48884a37a6b783185c608a68cfce752f">&#9670;&nbsp;</a></span>Convolution2dAsymmetricPaddingLargerThanHalfKernelSizeTest()</h2>
1384
1385<div class="memitem">
1386<div class="memproto">
1387 <table class="memname">
1388 <tr>
1389 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;float, 4&gt; Convolution2dAsymmetricPaddingLargerThanHalfKernelSizeTest </td>
1390 <td>(</td>
1391 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
1392 <td class="paramname"><em>workloadFactory</em>, </td>
1393 </tr>
1394 <tr>
1395 <td class="paramkey"></td>
1396 <td></td>
1397 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
1398 <td class="paramname"><em>memoryManager</em>, </td>
1399 </tr>
1400 <tr>
1401 <td class="paramkey"></td>
1402 <td></td>
1403 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
1404 <td class="paramname"><em>layout</em>&#160;</td>
1405 </tr>
1406 <tr>
1407 <td></td>
1408 <td>)</td>
1409 <td></td><td></td>
1410 </tr>
1411 </table>
1412</div><div class="memdoc">
1413
1414<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l03016">3016</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
1415
1416<p class="reference">References <a class="el" href="_conv2d_test_impl_8cpp_source.html#l00869">Convolution2dAsymmetricPaddingLargerThanHalfKernelSizeTestCommon()</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::Float32</a>.</p>
1417<div class="fragment"><div class="line"><a name="l03020"></a><span class="lineno"> 3020</span>&#160;{</div><div class="line"><a name="l03021"></a><span class="lineno"> 3021</span>&#160; <span class="keywordflow">return</span> <a class="code" href="_conv2d_test_impl_8cpp.html#a35ad1225c524b4594b461e613695ee4a">Convolution2dAsymmetricPaddingLargerThanHalfKernelSizeTestCommon</a></div><div class="line"><a name="l03022"></a><span class="lineno"> 3022</span>&#160; &lt;<a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>, armnn::DataType::Float32&gt;(</div><div class="line"><a name="l03023"></a><span class="lineno"> 3023</span>&#160; workloadFactory, memoryManager, layout, 0.0f, 0);</div><div class="line"><a name="l03024"></a><span class="lineno"> 3024</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
1418<div class="ttc" id="_conv2d_test_impl_8cpp_html_a35ad1225c524b4594b461e613695ee4a"><div class="ttname"><a href="_conv2d_test_impl_8cpp.html#a35ad1225c524b4594b461e613695ee4a">Convolution2dAsymmetricPaddingLargerThanHalfKernelSizeTestCommon</a></div><div class="ttdeci">LayerTestResult&lt; T, 4 &gt; Convolution2dAsymmetricPaddingLargerThanHalfKernelSizeTestCommon(armnn::IWorkloadFactory &amp;workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::DataLayout layout, float qScale, int32_t qOffset)</div><div class="ttdef"><b>Definition:</b> <a href="_conv2d_test_impl_8cpp_source.html#l00869">Conv2dTestImpl.cpp:869</a></div></div>
1419</div><!-- fragment -->
1420</div>
1421</div>
1422<a id="a35ad1225c524b4594b461e613695ee4a"></a>
1423<h2 class="memtitle"><span class="permalink"><a href="#a35ad1225c524b4594b461e613695ee4a">&#9670;&nbsp;</a></span>Convolution2dAsymmetricPaddingLargerThanHalfKernelSizeTestCommon()</h2>
1424
1425<div class="memitem">
1426<div class="memproto">
1427 <table class="memname">
1428 <tr>
1429 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T, 4&gt; Convolution2dAsymmetricPaddingLargerThanHalfKernelSizeTestCommon </td>
1430 <td>(</td>
1431 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
1432 <td class="paramname"><em>workloadFactory</em>, </td>
1433 </tr>
1434 <tr>
1435 <td class="paramkey"></td>
1436 <td></td>
1437 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
1438 <td class="paramname"><em>memoryManager</em>, </td>
1439 </tr>
1440 <tr>
1441 <td class="paramkey"></td>
1442 <td></td>
1443 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
1444 <td class="paramname"><em>layout</em>, </td>
1445 </tr>
1446 <tr>
1447 <td class="paramkey"></td>
1448 <td></td>
1449 <td class="paramtype">float&#160;</td>
1450 <td class="paramname"><em>qScale</em>, </td>
1451 </tr>
1452 <tr>
1453 <td class="paramkey"></td>
1454 <td></td>
1455 <td class="paramtype">int32_t&#160;</td>
1456 <td class="paramname"><em>qOffset</em>&#160;</td>
1457 </tr>
1458 <tr>
1459 <td></td>
1460 <td>)</td>
1461 <td></td><td></td>
1462 </tr>
1463 </table>
1464</div><div class="memdoc">
1465
1466<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l00869">869</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
1467
1468<p class="reference">Referenced by <a class="el" href="_conv2d_test_impl_8cpp_source.html#l03016">Convolution2dAsymmetricPaddingLargerThanHalfKernelSizeTest()</a>.</p>
1469<div class="fragment"><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160;{</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="comment">// Use a single-batch 1-channel 3x3 image as input.</span></div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputDesc({1, 1, 3, 3}, ArmnnType);</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; boost::multi_array&lt;T, 4&gt; input = MakeTensor&lt;T, 4&gt;(inputDesc, std::vector&lt;T&gt;(</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; QuantizedVector&lt;T&gt;({</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; 11,21,31,</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; 12,22,32,</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; 13,23,33</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; },</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; qScale, qOffset)));</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160;</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="comment">// Use 1 batch of a 1-channel 2x2 kernel.</span></div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> kernelDesc({1, 1, 2, 2}, ArmnnType);</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; boost::multi_array&lt;T, 4&gt; kernel = MakeTensor&lt;T, 4&gt;(kernelDesc, std::vector&lt;T&gt;(</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; QuantizedVector&lt;T&gt;({</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; -11,-21,</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; -12,-22,</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; },</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; qScale, qOffset)));</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160;</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160;<span class="comment">// Expected output is 1 batch of a 1-channel 6x8 image.</span></div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160;<span class="comment">// Manually calculated like this:</span></div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160;<span class="comment">//[-11*0 -21*0 -12*0 -22*0 ; -11*0 -21*0 -12*0 -22*0 ; -11*0 -21*0 -12*0 -22*0 ; -11*0 -21*0 -12*0 -22*0 ..]</span></div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160;<span class="comment">//[-11*0 -21*0 -12*0 -22*11 ; -11*0 -21*0 -12*11 -22*21 ; -11*0 -21*0 -12*21 -22*31 ; -11*0 -21*0 -12*31 -22*0 ..]</span></div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160;<span class="comment">//[-11*0 -21*11 -12*0 -22*12 ; -11*11 -21*21 -12*12 -22*22 ; -11*21 -21*31 -12*22 -22*32 ; -11*31 -21*0 -12*32 -22*0 ..]</span></div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160;<span class="comment">//[-11*0 -21*12 -12*0 -22*13 ; -11*12 -21*22 -12*13 -22*23 ; -11*22 -21*32 -12*23 -22*33 ; -11*32 -21*0 -12*33 -22*0 ..]</span></div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160;<span class="comment">//[-11*0 -21*13 -12*0 -22*0 ; -11*13 -21*23 -12*0 -22*0 ; -11*23 -21*33 -12*0 -22*0 ; -11*33 -21*0 -12*0 -22*0 ..]</span></div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160;<span class="comment">//[-11*0 -21*0 -12*0 -22*0 ; -11*0 -21*0 -12*0 -22*0 ; -11*0 -21*0 -12*0 -22*0 ; -11*0 -21*0 -12*0 -22*0 ..]</span></div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160;<span class="comment">//[..... ..... ..... ..... ; ..... ..... ..... ..... ; ..... ..... ..... ..... ; ..... ..... ..... ..... ..]</span></div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputDesc({1, 1, 8, 6}, ArmnnType);</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; boost::multi_array&lt;T, 4&gt; expectedOutput = MakeTensor&lt;T, 4&gt;(outputDesc, std::vector&lt;T&gt;(</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; QuantizedVector&lt;T&gt;({</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; -242, -594, -934, -372, 0, 0,</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; -495, -1190, -1850, -725, 0, 0,</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; -538, -1256, -1916, -748, 0, 0,</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; -273, -626, -946, -363, 0, 0,</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; 0, 0, 0, 0, 0, 0</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; },</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; qScale, qOffset)));</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160;</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keywordflow">return</span> SimpleConvolution2dTestImpl&lt;ArmnnType, ArmnnBType&gt;(</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; workloadFactory,</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; memoryManager,</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; input,</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; kernel,</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; GetBias2&lt;ArmnnBType&gt;(<span class="keyword">false</span>, qScale * qScale),</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; expectedOutput,</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; qScale,</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; qOffset,</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; layout,</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; 1, <span class="comment">// Padding left.</span></div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; 2, <span class="comment">// Padding top.</span></div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; 3, <span class="comment">// Padding right.</span></div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; 4); <span class="comment">// Padding bottom.</span></div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
1470</div><!-- fragment -->
1471</div>
1472</div>
1473<a id="af7f2cd23423130ebdd916de12bc0eb1d"></a>
1474<h2 class="memtitle"><span class="permalink"><a href="#af7f2cd23423130ebdd916de12bc0eb1d">&#9670;&nbsp;</a></span>Convolution2dAsymmetricPaddingTest()</h2>
1475
1476<div class="memitem">
1477<div class="memproto">
1478 <table class="memname">
1479 <tr>
1480 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;float, 4&gt; Convolution2dAsymmetricPaddingTest </td>
1481 <td>(</td>
1482 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
1483 <td class="paramname"><em>workloadFactory</em>, </td>
1484 </tr>
1485 <tr>
1486 <td class="paramkey"></td>
1487 <td></td>
1488 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
1489 <td class="paramname"><em>memoryManager</em>, </td>
1490 </tr>
1491 <tr>
1492 <td class="paramkey"></td>
1493 <td></td>
1494 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
1495 <td class="paramname"><em>layout</em>&#160;</td>
1496 </tr>
1497 <tr>
1498 <td></td>
1499 <td>)</td>
1500 <td></td><td></td>
1501 </tr>
1502 </table>
1503</div><div class="memdoc">
1504
1505<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l03007">3007</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
1506<div class="fragment"><div class="line"><a name="l03011"></a><span class="lineno"> 3011</span>&#160;{</div><div class="line"><a name="l03012"></a><span class="lineno"> 3012</span>&#160; <span class="keywordflow">return</span> SimpleConvolution2dAsymmetricPaddingTestCommon&lt;armnn::DataType::Float32, armnn::DataType::Float32&gt;(</div><div class="line"><a name="l03013"></a><span class="lineno"> 3013</span>&#160; workloadFactory, memoryManager, layout, 0.0f, 0);</div><div class="line"><a name="l03014"></a><span class="lineno"> 3014</span>&#160;}</div></div><!-- fragment -->
1507</div>
1508</div>
1509<a id="a370a5216668b507284677234264a22a2"></a>
1510<h2 class="memtitle"><span class="permalink"><a href="#a370a5216668b507284677234264a22a2">&#9670;&nbsp;</a></span>Convolution2dPerAxisQuantTest()</h2>
1511
1512<div class="memitem">
1513<div class="memproto">
1514 <table class="memname">
1515 <tr>
1516 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;uint8_t, 4&gt; Convolution2dPerAxisQuantTest </td>
1517 <td>(</td>
1518 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
1519 <td class="paramname"><em>workloadFactory</em>, </td>
1520 </tr>
1521 <tr>
1522 <td class="paramkey"></td>
1523 <td></td>
1524 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
1525 <td class="paramname"><em>memoryManager</em>, </td>
1526 </tr>
1527 <tr>
1528 <td class="paramkey"></td>
1529 <td></td>
1530 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
1531 <td class="paramname"><em>layout</em>&#160;</td>
1532 </tr>
1533 <tr>
1534 <td></td>
1535 <td>)</td>
1536 <td></td><td></td>
1537 </tr>
1538 </table>
1539</div><div class="memdoc">
1540
1541<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l03044">3044</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
1542
1543<p class="reference">References <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00019">AllocateAndCopyDataToITensorHandle()</a>, <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00014">CopyDataFromITensorHandle()</a>, <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00009">CopyDataToITensorHandle()</a>, <a class="el" href="_workload_factory_8cpp_source.html#l01142">IWorkloadFactory::CreateConvolution2d()</a>, <a class="el" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">IWorkloadFactory::CreateTensorHandle()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00438">Convolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00440">Convolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00428">Convolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00422">Convolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00424">Convolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00426">Convolution2dDescriptor::m_PadTop</a>, <a class="el" href="_workload_data_8hpp_source.html#l00049">QueueDescriptorWithParameters&lt; LayerDescriptor &gt;::m_Parameters</a>, <a class="el" href="_descriptors_8hpp_source.html#l00430">Convolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00432">Convolution2dDescriptor::m_StrideY</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::NCHW</a>, <a class="el" href="_layer_test_result_8hpp_source.html#l00040">LayerTestResult&lt; T, n &gt;::output</a>, <a class="el" href="_layer_test_result_8hpp_source.html#l00041">LayerTestResult&lt; T, n &gt;::outputExpected</a>, and <a class="el" href="_data_layout_utils_8hpp_source.html#l00026">PermuteTensorNhwcToNchw()</a>.</p>
1544<div class="fragment"><div class="line"><a name="l03048"></a><span class="lineno"> 3048</span>&#160;{</div><div class="line"><a name="l03049"></a><span class="lineno"> 3049</span>&#160; <span class="keyword">using namespace </span><a class="code" href="namespacearmnn.html">armnn</a>;</div><div class="line"><a name="l03050"></a><span class="lineno"> 3050</span>&#160;</div><div class="line"><a name="l03051"></a><span class="lineno"> 3051</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> inputType = <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a>;</div><div class="line"><a name="l03052"></a><span class="lineno"> 3052</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> kernelType = <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">DataType::QSymmS8</a>;</div><div class="line"><a name="l03053"></a><span class="lineno"> 3053</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> biasType = <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">DataType::Signed32</a>;</div><div class="line"><a name="l03054"></a><span class="lineno"> 3054</span>&#160;</div><div class="line"><a name="l03055"></a><span class="lineno"> 3055</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> inputInfo ({ 1, 3, 1, 2 }, inputType, 0.5f, 128);</div><div class="line"><a name="l03056"></a><span class="lineno"> 3056</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> outputInfo({ 1, 3, 1, 3 }, inputType, 1.0f, 128);</div><div class="line"><a name="l03057"></a><span class="lineno"> 3057</span>&#160;</div><div class="line"><a name="l03058"></a><span class="lineno"> 3058</span>&#160; <span class="keyword">const</span> std::vector&lt;float&gt; quantScales{ 0.5f, 0.75f, 1.0f };</div><div class="line"><a name="l03059"></a><span class="lineno"> 3059</span>&#160; constexpr <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> quantDimension = 0;</div><div class="line"><a name="l03060"></a><span class="lineno"> 3060</span>&#160;</div><div class="line"><a name="l03061"></a><span class="lineno"> 3061</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> kernelInfo({ 3, 1, 1, 2 }, kernelType, quantScales, quantDimension);</div><div class="line"><a name="l03062"></a><span class="lineno"> 3062</span>&#160;</div><div class="line"><a name="l03063"></a><span class="lineno"> 3063</span>&#160; <span class="keyword">const</span> std::vector&lt;float&gt; biasQuantScales{ 0.25f, 0.375f, 0.5f };</div><div class="line"><a name="l03064"></a><span class="lineno"> 3064</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> biasInfo({ 3 }, biasType, biasQuantScales, quantDimension);</div><div class="line"><a name="l03065"></a><span class="lineno"> 3065</span>&#160;</div><div class="line"><a name="l03066"></a><span class="lineno"> 3066</span>&#160; std::vector&lt;uint8_t&gt; inputData =</div><div class="line"><a name="l03067"></a><span class="lineno"> 3067</span>&#160; {</div><div class="line"><a name="l03068"></a><span class="lineno"> 3068</span>&#160; 138, 108, 138, 108, 138, 108</div><div class="line"><a name="l03069"></a><span class="lineno"> 3069</span>&#160; };</div><div class="line"><a name="l03070"></a><span class="lineno"> 3070</span>&#160;</div><div class="line"><a name="l03071"></a><span class="lineno"> 3071</span>&#160; std::vector&lt;int8_t&gt; kernelData =</div><div class="line"><a name="l03072"></a><span class="lineno"> 3072</span>&#160; {</div><div class="line"><a name="l03073"></a><span class="lineno"> 3073</span>&#160; 1, 2, 1, 2, 1, 2</div><div class="line"><a name="l03074"></a><span class="lineno"> 3074</span>&#160; };</div><div class="line"><a name="l03075"></a><span class="lineno"> 3075</span>&#160;</div><div class="line"><a name="l03076"></a><span class="lineno"> 3076</span>&#160; std::vector&lt;int32_t&gt; biasData =</div><div class="line"><a name="l03077"></a><span class="lineno"> 3077</span>&#160; {</div><div class="line"><a name="l03078"></a><span class="lineno"> 3078</span>&#160; 4, 4, 4</div><div class="line"><a name="l03079"></a><span class="lineno"> 3079</span>&#160; };</div><div class="line"><a name="l03080"></a><span class="lineno"> 3080</span>&#160;</div><div class="line"><a name="l03081"></a><span class="lineno"> 3081</span>&#160; std::vector&lt;uint8_t&gt; expectedOutputData =</div><div class="line"><a name="l03082"></a><span class="lineno"> 3082</span>&#160; {</div><div class="line"><a name="l03083"></a><span class="lineno"> 3083</span>&#160; 121, 118, 115, 121, 118, 115, 121, 118, 115</div><div class="line"><a name="l03084"></a><span class="lineno"> 3084</span>&#160; };</div><div class="line"><a name="l03085"></a><span class="lineno"> 3085</span>&#160;</div><div class="line"><a name="l03086"></a><span class="lineno"> 3086</span>&#160; <span class="keywordflow">if</span> (layout == <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">DataLayout::NCHW</a>)</div><div class="line"><a name="l03087"></a><span class="lineno"> 3087</span>&#160; {</div><div class="line"><a name="l03088"></a><span class="lineno"> 3088</span>&#160; <a class="code" href="_data_layout_utils_8hpp.html#a1452f049aef30409b3b649af2be7ff82">PermuteTensorNhwcToNchw</a>(inputInfo, inputData);</div><div class="line"><a name="l03089"></a><span class="lineno"> 3089</span>&#160; <a class="code" href="_data_layout_utils_8hpp.html#a1452f049aef30409b3b649af2be7ff82">PermuteTensorNhwcToNchw</a>(kernelInfo, kernelData);</div><div class="line"><a name="l03090"></a><span class="lineno"> 3090</span>&#160; <a class="code" href="_data_layout_utils_8hpp.html#a1452f049aef30409b3b649af2be7ff82">PermuteTensorNhwcToNchw</a>(outputInfo, expectedOutputData);</div><div class="line"><a name="l03091"></a><span class="lineno"> 3091</span>&#160; }</div><div class="line"><a name="l03092"></a><span class="lineno"> 3092</span>&#160;</div><div class="line"><a name="l03093"></a><span class="lineno"> 3093</span>&#160; <a class="code" href="structarmnn_1_1_convolution2d_descriptor.html">Convolution2dDescriptor</a> descriptor;</div><div class="line"><a name="l03094"></a><span class="lineno"> 3094</span>&#160; descriptor.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#afe6a3377c4531315354def9023c8fdda">m_StrideX</a> = 1;</div><div class="line"><a name="l03095"></a><span class="lineno"> 3095</span>&#160; descriptor.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#ac1fe174bbadfb39a2b636940c2e647c8">m_StrideY</a> = 1;</div><div class="line"><a name="l03096"></a><span class="lineno"> 3096</span>&#160; descriptor.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#ac18546ebbebbb32fe0a03baa9bf2c600">m_PadLeft</a> = 0;</div><div class="line"><a name="l03097"></a><span class="lineno"> 3097</span>&#160; descriptor.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#a002bc30e590d78cbb4f4d12171055ca7">m_PadRight</a> = 0;</div><div class="line"><a name="l03098"></a><span class="lineno"> 3098</span>&#160; descriptor.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#a56b51f56cef50cdfa554258eecdab046">m_PadTop</a> = 0;</div><div class="line"><a name="l03099"></a><span class="lineno"> 3099</span>&#160; descriptor.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#aa9e49717ebdb741e8c767741647fc618">m_PadBottom</a> = 0;</div><div class="line"><a name="l03100"></a><span class="lineno"> 3100</span>&#160; descriptor.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#aea202e14d8874cefd9a0f778022b7e25">m_BiasEnabled</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l03101"></a><span class="lineno"> 3101</span>&#160; descriptor.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a> = layout;</div><div class="line"><a name="l03102"></a><span class="lineno"> 3102</span>&#160;</div><div class="line"><a name="l03103"></a><span class="lineno"> 3103</span>&#160; std::unique_ptr&lt;ITensorHandle&gt; inputHandle = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">CreateTensorHandle</a>(inputInfo);</div><div class="line"><a name="l03104"></a><span class="lineno"> 3104</span>&#160; std::unique_ptr&lt;ITensorHandle&gt; outputHandle = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">CreateTensorHandle</a>(outputInfo);</div><div class="line"><a name="l03105"></a><span class="lineno"> 3105</span>&#160;</div><div class="line"><a name="l03106"></a><span class="lineno"> 3106</span>&#160; <a class="code" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> workloadInfo;</div><div class="line"><a name="l03107"></a><span class="lineno"> 3107</span>&#160; <a class="code" href="classarmnn_1_1_scoped_cpu_tensor_handle.html">ScopedCpuTensorHandle</a> weightTensor(kernelInfo);</div><div class="line"><a name="l03108"></a><span class="lineno"> 3108</span>&#160; <a class="code" href="classarmnn_1_1_scoped_cpu_tensor_handle.html">ScopedCpuTensorHandle</a> biasTensor(biasInfo);</div><div class="line"><a name="l03109"></a><span class="lineno"> 3109</span>&#160;</div><div class="line"><a name="l03110"></a><span class="lineno"> 3110</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a>(&amp;weightTensor, kernelData.data());</div><div class="line"><a name="l03111"></a><span class="lineno"> 3111</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a>(&amp;biasTensor, biasData.data());</div><div class="line"><a name="l03112"></a><span class="lineno"> 3112</span>&#160;</div><div class="line"><a name="l03113"></a><span class="lineno"> 3113</span>&#160; <a class="code" href="structarmnn_1_1_convolution2d_queue_descriptor.html">Convolution2dQueueDescriptor</a> queueDescriptor;</div><div class="line"><a name="l03114"></a><span class="lineno"> 3114</span>&#160; queueDescriptor.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a> = descriptor;</div><div class="line"><a name="l03115"></a><span class="lineno"> 3115</span>&#160; queueDescriptor.m_Weight = &amp;weightTensor;</div><div class="line"><a name="l03116"></a><span class="lineno"> 3116</span>&#160; queueDescriptor.m_Bias = &amp;biasTensor;</div><div class="line"><a name="l03117"></a><span class="lineno"> 3117</span>&#160;</div><div class="line"><a name="l03118"></a><span class="lineno"> 3118</span>&#160; AddInputToWorkload(queueDescriptor, workloadInfo, inputInfo, inputHandle.get());</div><div class="line"><a name="l03119"></a><span class="lineno"> 3119</span>&#160; AddOutputToWorkload(queueDescriptor, workloadInfo, outputInfo, outputHandle.get());</div><div class="line"><a name="l03120"></a><span class="lineno"> 3120</span>&#160;</div><div class="line"><a name="l03121"></a><span class="lineno"> 3121</span>&#160; std::unique_ptr&lt;IWorkload&gt; workload = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a2184995027cd2c9f9980206de9658855">CreateConvolution2d</a>(queueDescriptor, workloadInfo);</div><div class="line"><a name="l03122"></a><span class="lineno"> 3122</span>&#160; inputHandle-&gt;Allocate();</div><div class="line"><a name="l03123"></a><span class="lineno"> 3123</span>&#160; outputHandle-&gt;Allocate();</div><div class="line"><a name="l03124"></a><span class="lineno"> 3124</span>&#160;</div><div class="line"><a name="l03125"></a><span class="lineno"> 3125</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a>(inputHandle.get(), inputData.data());</div><div class="line"><a name="l03126"></a><span class="lineno"> 3126</span>&#160;</div><div class="line"><a name="l03127"></a><span class="lineno"> 3127</span>&#160; ExecuteWorkload(*workload, memoryManager);</div><div class="line"><a name="l03128"></a><span class="lineno"> 3128</span>&#160;</div><div class="line"><a name="l03129"></a><span class="lineno"> 3129</span>&#160; <a class="code" href="struct_layer_test_result.html">LayerTestResult&lt;uint8_t, 4&gt;</a> ret(outputInfo);</div><div class="line"><a name="l03130"></a><span class="lineno"> 3130</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a>(ret.output.origin(), outputHandle.get());</div><div class="line"><a name="l03131"></a><span class="lineno"> 3131</span>&#160; ret.outputExpected = MakeTensor&lt;uint8_t, 4&gt;(outputInfo, expectedOutputData);</div><div class="line"><a name="l03132"></a><span class="lineno"> 3132</span>&#160;</div><div class="line"><a name="l03133"></a><span class="lineno"> 3133</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l03134"></a><span class="lineno"> 3134</span>&#160;}</div><div class="ttc" id="_tensor_copy_utils_8cpp_html_afaaca8c3f3a467d124bba44067d2afa8"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a></div><div class="ttdeci">void AllocateAndCopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00019">TensorCopyUtils.cpp:19</a></div></div>
1545<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">armnn::Convolution2dDescriptor::m_DataLayout</a></div><div class="ttdeci">DataLayout m_DataLayout</div><div class="ttdoc">The data layout to be used (NCHW, NHWC). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00440">Descriptors.hpp:440</a></div></div>
1546<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">armnn::DataType::QSymmS8</a></div></div>
1547<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_a002bc30e590d78cbb4f4d12171055ca7"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#a002bc30e590d78cbb4f4d12171055ca7">armnn::Convolution2dDescriptor::m_PadRight</a></div><div class="ttdeci">uint32_t m_PadRight</div><div class="ttdoc">Padding right value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00424">Descriptors.hpp:424</a></div></div>
1548<div class="ttc" id="_tensor_copy_utils_8cpp_html_ae15f1a3c55d2db87683577de9fa4437c"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a></div><div class="ttdeci">void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00009">TensorCopyUtils.cpp:9</a></div></div>
1549<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a></div></div>
1550<div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></div></div>
1551<div class="ttc" id="structarmnn_1_1_convolution2d_queue_descriptor_html"><div class="ttname"><a href="structarmnn_1_1_convolution2d_queue_descriptor.html">armnn::Convolution2dQueueDescriptor</a></div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00168">WorkloadData.hpp:168</a></div></div>
1552<div class="ttc" id="structarmnn_1_1_queue_descriptor_with_parameters_html_aad91b9bbf7aa365d304febe79a3d1333"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">armnn::QueueDescriptorWithParameters::m_Parameters</a></div><div class="ttdeci">LayerDescriptor m_Parameters</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00049">WorkloadData.hpp:49</a></div></div>
1553<div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
1554<div class="ttc" id="classarmnn_1_1_i_workload_factory_html_a15c140be4ddceffee16436f009d3ed94"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">armnn::IWorkloadFactory::CreateTensorHandle</a></div><div class="ttdeci">virtual std::unique_ptr&lt; ITensorHandle &gt; CreateTensorHandle(const TensorInfo &amp;tensorInfo, const bool IsMemoryManaged=true) const =0</div></div>
1555<div class="ttc" id="struct_layer_test_result_html"><div class="ttname"><a href="struct_layer_test_result.html">LayerTestResult</a></div><div class="ttdef"><b>Definition:</b> <a href="_layer_test_result_8hpp_source.html#l00029">LayerTestResult.hpp:29</a></div></div>
1556<div class="ttc" id="_tensor_copy_utils_8cpp_html_a99b626c58a926dc7d6df78d22ec186c8"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a></div><div class="ttdeci">void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00014">TensorCopyUtils.cpp:14</a></div></div>
1557<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_aa9e49717ebdb741e8c767741647fc618"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#aa9e49717ebdb741e8c767741647fc618">armnn::Convolution2dDescriptor::m_PadBottom</a></div><div class="ttdeci">uint32_t m_PadBottom</div><div class="ttdoc">Padding bottom value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00428">Descriptors.hpp:428</a></div></div>
1558<div class="ttc" id="structarmnn_1_1_workload_info_html"><div class="ttname"><a href="structarmnn_1_1_workload_info.html">armnn::WorkloadInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_workload_info_8hpp_source.html#l00016">WorkloadInfo.hpp:16</a></div></div>
1559<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_ac1fe174bbadfb39a2b636940c2e647c8"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#ac1fe174bbadfb39a2b636940c2e647c8">armnn::Convolution2dDescriptor::m_StrideY</a></div><div class="ttdeci">uint32_t m_StrideY</div><div class="ttdoc">Stride value when proceeding through input for the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00432">Descriptors.hpp:432</a></div></div>
1560<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_a56b51f56cef50cdfa554258eecdab046"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#a56b51f56cef50cdfa554258eecdab046">armnn::Convolution2dDescriptor::m_PadTop</a></div><div class="ttdeci">uint32_t m_PadTop</div><div class="ttdoc">Padding top value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00426">Descriptors.hpp:426</a></div></div>
1561<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_ac18546ebbebbb32fe0a03baa9bf2c600"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#ac18546ebbebbb32fe0a03baa9bf2c600">armnn::Convolution2dDescriptor::m_PadLeft</a></div><div class="ttdeci">uint32_t m_PadLeft</div><div class="ttdoc">Padding left value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00422">Descriptors.hpp:422</a></div></div>
1562<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_afe6a3377c4531315354def9023c8fdda"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#afe6a3377c4531315354def9023c8fdda">armnn::Convolution2dDescriptor::m_StrideX</a></div><div class="ttdeci">uint32_t m_StrideX</div><div class="ttdoc">Stride value when proceeding through input for the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00430">Descriptors.hpp:430</a></div></div>
1563<div class="ttc" id="_data_layout_utils_8hpp_html_a1452f049aef30409b3b649af2be7ff82"><div class="ttname"><a href="_data_layout_utils_8hpp.html#a1452f049aef30409b3b649af2be7ff82">PermuteTensorNhwcToNchw</a></div><div class="ttdeci">void PermuteTensorNhwcToNchw(armnn::TensorInfo &amp;tensorInfo, std::vector&lt; T &gt; &amp;tensorData)</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_utils_8hpp_source.html#l00026">DataLayoutUtils.hpp:26</a></div></div>
1564<div class="ttc" id="namespacearmnn_html"><div class="ttname"><a href="namespacearmnn.html">armnn</a></div><div class="ttdef"><b>Definition:</b> <a href="_backend_helper_8hpp_source.html#l00011">BackendHelper.hpp:11</a></div></div>
1565<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_aea202e14d8874cefd9a0f778022b7e25"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#aea202e14d8874cefd9a0f778022b7e25">armnn::Convolution2dDescriptor::m_BiasEnabled</a></div><div class="ttdeci">bool m_BiasEnabled</div><div class="ttdoc">Enable/disable bias. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00438">Descriptors.hpp:438</a></div></div>
1566<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a></div></div>
1567<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00032">Types.hpp:32</a></div></div>
1568<div class="ttc" id="classarmnn_1_1_i_workload_factory_html_a2184995027cd2c9f9980206de9658855"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.html#a2184995027cd2c9f9980206de9658855">armnn::IWorkloadFactory::CreateConvolution2d</a></div><div class="ttdeci">virtual std::unique_ptr&lt; IWorkload &gt; CreateConvolution2d(const Convolution2dQueueDescriptor &amp;descriptor, const WorkloadInfo &amp;info) const</div><div class="ttdef"><b>Definition:</b> <a href="_workload_factory_8cpp_source.html#l01142">WorkloadFactory.cpp:1142</a></div></div>
1569<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html">armnn::Convolution2dDescriptor</a></div><div class="ttdoc">A Convolution2dDescriptor for the Convolution2dLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00392">Descriptors.hpp:392</a></div></div>
1570<div class="ttc" id="classarmnn_1_1_scoped_cpu_tensor_handle_html"><div class="ttname"><a href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a></div><div class="ttdef"><b>Definition:</b> <a href="_cpu_tensor_handle_8hpp_source.html#l00106">CpuTensorHandle.hpp:106</a></div></div>
1571</div><!-- fragment -->
1572</div>
1573</div>
1574<a id="acffa50ae3185e3e5302909f27e7e9a02"></a>
1575<h2 class="memtitle"><span class="permalink"><a href="#acffa50ae3185e3e5302909f27e7e9a02">&#9670;&nbsp;</a></span>DepthwiseConvolution2d2x3x3Dilation3x3Test()</h2>
1576
1577<div class="memitem">
1578<div class="memproto">
1579 <table class="memname">
1580 <tr>
1581 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T, 4&gt; DepthwiseConvolution2d2x3x3Dilation3x3Test </td>
1582 <td>(</td>
1583 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
1584 <td class="paramname"><em>workloadFactory</em>, </td>
1585 </tr>
1586 <tr>
1587 <td class="paramkey"></td>
1588 <td></td>
1589 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
1590 <td class="paramname"><em>memoryManager</em>, </td>
1591 </tr>
1592 <tr>
1593 <td class="paramkey"></td>
1594 <td></td>
1595 <td class="paramtype">bool&#160;</td>
1596 <td class="paramname"><em>biasEnabled</em>, </td>
1597 </tr>
1598 <tr>
1599 <td class="paramkey"></td>
1600 <td></td>
1601 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
1602 <td class="paramname"><em>layout</em>&#160;</td>
1603 </tr>
1604 <tr>
1605 <td></td>
1606 <td>)</td>
1607 <td></td><td></td>
1608 </tr>
1609 </table>
1610</div><div class="memdoc">
1611
1612<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l02432">2432</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
1613<div class="fragment"><div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>&#160;{</div><div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputTensorInfo({1, 2, 10, 10}, ArmnnType);</div><div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>&#160; std::vector&lt;float&gt; inputNoQuantizedValues =</div><div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>&#160; {</div><div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>&#160; 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,</div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>&#160; 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,</div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>&#160; 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,</div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>&#160;</div><div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>&#160; 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,</div><div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>&#160; 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,</div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>&#160; 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,</div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0</div><div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>&#160; };</div><div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>&#160;</div><div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> kernelTensorInfo({ 1, 2, 3, 3}, ArmnnType);</div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>&#160; std::vector&lt;float&gt; kernelNoQuantizedValues =</div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>&#160; {</div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>&#160; 1, 2, 3,</div><div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>&#160; 4, 5, 6,</div><div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>&#160; 7, 8, 9,</div><div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>&#160;</div><div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>&#160; 1, 2, 3,</div><div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>&#160; 4, 5, 6,</div><div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>&#160; 7, 8, 9</div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>&#160; };</div><div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>&#160;</div><div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>&#160; <span class="comment">// Since the dilation rate is 3 this will dilate the kernel to be like 7x7,</span></div><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>&#160; <span class="comment">// therefore the output will be 2x4x4: (I−K+2P)/S +1 =&gt; (10-7 +0)/1 +1</span></div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputTensorInfo({ 1, 2, 4, 4}, ArmnnType);</div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>&#160; std::vector&lt;float&gt; outputExpectedNoQuantizedValues =</div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>&#160; {</div><div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>&#160; 6., 5., 5., 5.,</div><div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>&#160; 6., 5., 5., 5.,</div><div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>&#160; 6., 5., 5., 5.,</div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>&#160; 3., 2., 2., 2.,</div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>&#160;</div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>&#160; 6., 5., 5., 5.,</div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>&#160; 6., 5., 5., 5.,</div><div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>&#160; 6., 5., 5., 5.,</div><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>&#160; 3., 2., 2., 2.</div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>&#160; };</div><div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>&#160;</div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>&#160; <span class="keywordflow">return</span> DepthwiseConvolution2d3x3DilationTestCommon&lt;ArmnnType, ArmnnBType&gt;(</div><div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>&#160; workloadFactory,</div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>&#160; memoryManager,</div><div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>&#160; inputNoQuantizedValues,</div><div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>&#160; inputTensorInfo,</div><div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>&#160; kernelNoQuantizedValues,</div><div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>&#160; kernelTensorInfo,</div><div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>&#160; outputExpectedNoQuantizedValues,</div><div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>&#160; outputTensorInfo,</div><div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>&#160; 3,</div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>&#160; 3,</div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>&#160; layout,</div><div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>&#160; biasEnabled);</div><div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
1614</div><!-- fragment -->
1615</div>
1616</div>
1617<a id="abfba475aaa254cb80fea6f6b9e2885ed"></a>
1618<h2 class="memtitle"><span class="permalink"><a href="#abfba475aaa254cb80fea6f6b9e2885ed">&#9670;&nbsp;</a></span>DepthwiseConvolution2d2x3x3Dilation3x3Test< armnn::DataType::Float32, armnn::DataType::Float32 >()</h2>
1619
1620<div class="memitem">
1621<div class="memproto">
1622 <table class="memname">
1623 <tr>
1624 <td class="memname">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;<a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>&gt;, 4&gt; <a class="el" href="_conv2d_test_impl_8hpp.html#acffa50ae3185e3e5302909f27e7e9a02">DepthwiseConvolution2d2x3x3Dilation3x3Test</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a> &gt; </td>
1625 <td>(</td>
1626 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
1627 <td class="paramname">, </td>
1628 </tr>
1629 <tr>
1630 <td class="paramkey"></td>
1631 <td></td>
1632 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
1633 <td class="paramname">, </td>
1634 </tr>
1635 <tr>
1636 <td class="paramkey"></td>
1637 <td></td>
1638 <td class="paramtype">bool&#160;</td>
1639 <td class="paramname">, </td>
1640 </tr>
1641 <tr>
1642 <td class="paramkey"></td>
1643 <td></td>
1644 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
1645 <td class="paramname">&#160;</td>
1646 </tr>
1647 <tr>
1648 <td></td>
1649 <td>)</td>
1650 <td></td><td></td>
1651 </tr>
1652 </table>
1653</div><div class="memdoc">
1654
1655</div>
1656</div>
1657<a id="a7d1005e18161a898d383f302bda746ea"></a>
1658<h2 class="memtitle"><span class="permalink"><a href="#a7d1005e18161a898d383f302bda746ea">&#9670;&nbsp;</a></span>DepthwiseConvolution2d2x3x3Dilation3x3Test< armnn::DataType::QAsymmU8, armnn::DataType::Signed32 >()</h2>
1659
1660<div class="memitem">
1661<div class="memproto">
1662 <table class="memname">
1663 <tr>
1664 <td class="memname">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;<a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>&gt;, 4&gt; <a class="el" href="_conv2d_test_impl_8hpp.html#acffa50ae3185e3e5302909f27e7e9a02">DepthwiseConvolution2d2x3x3Dilation3x3Test</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a> &gt; </td>
1665 <td>(</td>
1666 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
1667 <td class="paramname">, </td>
1668 </tr>
1669 <tr>
1670 <td class="paramkey"></td>
1671 <td></td>
1672 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
1673 <td class="paramname">, </td>
1674 </tr>
1675 <tr>
1676 <td class="paramkey"></td>
1677 <td></td>
1678 <td class="paramtype">bool&#160;</td>
1679 <td class="paramname">, </td>
1680 </tr>
1681 <tr>
1682 <td class="paramkey"></td>
1683 <td></td>
1684 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
1685 <td class="paramname">&#160;</td>
1686 </tr>
1687 <tr>
1688 <td></td>
1689 <td>)</td>
1690 <td></td><td></td>
1691 </tr>
1692 </table>
1693</div><div class="memdoc">
1694
1695</div>
1696</div>
1697<a id="adc98546ccc8455972832038cf8a296c9"></a>
1698<h2 class="memtitle"><span class="permalink"><a href="#adc98546ccc8455972832038cf8a296c9">&#9670;&nbsp;</a></span>DepthwiseConvolution2d2x3x3Dilation3x3Test< armnn::DataType::QSymmS16, armnn::DataType::Signed32 >()</h2>
1699
1700<div class="memitem">
1701<div class="memproto">
1702 <table class="memname">
1703 <tr>
1704 <td class="memname">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;<a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a>&gt;, 4&gt; <a class="el" href="_conv2d_test_impl_8hpp.html#acffa50ae3185e3e5302909f27e7e9a02">DepthwiseConvolution2d2x3x3Dilation3x3Test</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a> &gt; </td>
1705 <td>(</td>
1706 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
1707 <td class="paramname">, </td>
1708 </tr>
1709 <tr>
1710 <td class="paramkey"></td>
1711 <td></td>
1712 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
1713 <td class="paramname">, </td>
1714 </tr>
1715 <tr>
1716 <td class="paramkey"></td>
1717 <td></td>
1718 <td class="paramtype">bool&#160;</td>
1719 <td class="paramname">, </td>
1720 </tr>
1721 <tr>
1722 <td class="paramkey"></td>
1723 <td></td>
1724 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
1725 <td class="paramname">&#160;</td>
1726 </tr>
1727 <tr>
1728 <td></td>
1729 <td>)</td>
1730 <td></td><td></td>
1731 </tr>
1732 </table>
1733</div><div class="memdoc">
1734
1735</div>
1736</div>
1737<a id="a1c3398bdb48e4ce4643a1eeaf3e054a3"></a>
1738<h2 class="memtitle"><span class="permalink"><a href="#a1c3398bdb48e4ce4643a1eeaf3e054a3">&#9670;&nbsp;</a></span>DepthwiseConvolution2d3x3Dilation3x3Test()</h2>
1739
1740<div class="memitem">
1741<div class="memproto">
1742 <table class="memname">
1743 <tr>
1744 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T, 4&gt; DepthwiseConvolution2d3x3Dilation3x3Test </td>
1745 <td>(</td>
1746 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
1747 <td class="paramname"><em>workloadFactory</em>, </td>
1748 </tr>
1749 <tr>
1750 <td class="paramkey"></td>
1751 <td></td>
1752 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
1753 <td class="paramname"><em>memoryManager</em>, </td>
1754 </tr>
1755 <tr>
1756 <td class="paramkey"></td>
1757 <td></td>
1758 <td class="paramtype">bool&#160;</td>
1759 <td class="paramname"><em>biasEnabled</em>, </td>
1760 </tr>
1761 <tr>
1762 <td class="paramkey"></td>
1763 <td></td>
1764 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
1765 <td class="paramname"><em>layout</em>&#160;</td>
1766 </tr>
1767 <tr>
1768 <td></td>
1769 <td>)</td>
1770 <td></td><td></td>
1771 </tr>
1772 </table>
1773</div><div class="memdoc">
1774
1775<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l02376">2376</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
1776<div class="fragment"><div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>&#160;{</div><div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputTensorInfo({1, 1, 10, 10}, ArmnnType);</div><div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>&#160; std::vector&lt;float&gt; inputNoQuantizedValues =</div><div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>&#160; {</div><div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>&#160; 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,</div><div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>&#160; 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,</div><div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>&#160; 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,</div><div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0</div><div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>&#160; };</div><div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>&#160;</div><div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> kernelTensorInfo({ 1, 1, 3, 3}, ArmnnType);</div><div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>&#160; std::vector&lt;float&gt; kernelNoQuantizedValues =</div><div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>&#160; {</div><div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>&#160; 1, 2, 3,</div><div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>&#160; 4, 5, 6,</div><div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>&#160; 7, 8, 9</div><div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>&#160; };</div><div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>&#160;</div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>&#160; <span class="comment">// Since the dilation rate is 3 this will dilate the kernel to be like 7x7,</span></div><div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>&#160; <span class="comment">// therefore the output will be 4x4: (I−K+2P)/S +1 =&gt; (10-7 +0)/1 +1</span></div><div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputTensorInfo({ 1, 1, 4, 4}, ArmnnType);</div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>&#160; std::vector&lt;float&gt; outputExpectedNoQuantizedValues =</div><div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>&#160; {</div><div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>&#160; 6., 5., 5., 5.,</div><div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>&#160; 6., 5., 5., 5.,</div><div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>&#160; 6., 5., 5., 5.,</div><div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>&#160; 3., 2., 2., 2.</div><div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>&#160; };</div><div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>&#160;</div><div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>&#160; <span class="keywordflow">return</span> DepthwiseConvolution2d3x3DilationTestCommon&lt;ArmnnType, ArmnnBType&gt;(</div><div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>&#160; workloadFactory,</div><div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>&#160; memoryManager,</div><div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>&#160; inputNoQuantizedValues,</div><div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>&#160; inputTensorInfo,</div><div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>&#160; kernelNoQuantizedValues,</div><div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>&#160; kernelTensorInfo,</div><div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>&#160; outputExpectedNoQuantizedValues,</div><div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>&#160; outputTensorInfo,</div><div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>&#160; 3,</div><div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>&#160; 3,</div><div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>&#160; layout,</div><div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>&#160; biasEnabled);</div><div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
1777</div><!-- fragment -->
1778</div>
1779</div>
1780<a id="a5d3f9d15fbc0e3f43e100efb545e6ce6"></a>
1781<h2 class="memtitle"><span class="permalink"><a href="#a5d3f9d15fbc0e3f43e100efb545e6ce6">&#9670;&nbsp;</a></span>DepthwiseConvolution2d3x3Dilation3x3Test< armnn::DataType::Float32, armnn::DataType::Float32 >()</h2>
1782
1783<div class="memitem">
1784<div class="memproto">
1785 <table class="memname">
1786 <tr>
1787 <td class="memname">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;<a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>&gt;, 4&gt; <a class="el" href="_conv2d_test_impl_8hpp.html#a1c3398bdb48e4ce4643a1eeaf3e054a3">DepthwiseConvolution2d3x3Dilation3x3Test</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a> &gt; </td>
1788 <td>(</td>
1789 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
1790 <td class="paramname">, </td>
1791 </tr>
1792 <tr>
1793 <td class="paramkey"></td>
1794 <td></td>
1795 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
1796 <td class="paramname">, </td>
1797 </tr>
1798 <tr>
1799 <td class="paramkey"></td>
1800 <td></td>
1801 <td class="paramtype">bool&#160;</td>
1802 <td class="paramname">, </td>
1803 </tr>
1804 <tr>
1805 <td class="paramkey"></td>
1806 <td></td>
1807 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
1808 <td class="paramname">&#160;</td>
1809 </tr>
1810 <tr>
1811 <td></td>
1812 <td>)</td>
1813 <td></td><td></td>
1814 </tr>
1815 </table>
1816</div><div class="memdoc">
1817
1818</div>
1819</div>
1820<a id="a7703f4745f048b3a0b0c082b01d9715e"></a>
1821<h2 class="memtitle"><span class="permalink"><a href="#a7703f4745f048b3a0b0c082b01d9715e">&#9670;&nbsp;</a></span>DepthwiseConvolution2d3x3Dilation3x3Test< armnn::DataType::QAsymmU8, armnn::DataType::Signed32 >()</h2>
1822
1823<div class="memitem">
1824<div class="memproto">
1825 <table class="memname">
1826 <tr>
1827 <td class="memname">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;<a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>&gt;, 4&gt; <a class="el" href="_conv2d_test_impl_8hpp.html#a1c3398bdb48e4ce4643a1eeaf3e054a3">DepthwiseConvolution2d3x3Dilation3x3Test</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a> &gt; </td>
1828 <td>(</td>
1829 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
1830 <td class="paramname">, </td>
1831 </tr>
1832 <tr>
1833 <td class="paramkey"></td>
1834 <td></td>
1835 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
1836 <td class="paramname">, </td>
1837 </tr>
1838 <tr>
1839 <td class="paramkey"></td>
1840 <td></td>
1841 <td class="paramtype">bool&#160;</td>
1842 <td class="paramname">, </td>
1843 </tr>
1844 <tr>
1845 <td class="paramkey"></td>
1846 <td></td>
1847 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
1848 <td class="paramname">&#160;</td>
1849 </tr>
1850 <tr>
1851 <td></td>
1852 <td>)</td>
1853 <td></td><td></td>
1854 </tr>
1855 </table>
1856</div><div class="memdoc">
1857
1858</div>
1859</div>
1860<a id="ae2611d5cac758d2eebff6450315aa7df"></a>
1861<h2 class="memtitle"><span class="permalink"><a href="#ae2611d5cac758d2eebff6450315aa7df">&#9670;&nbsp;</a></span>DepthwiseConvolution2d3x3Dilation3x3Test< armnn::DataType::QSymmS16, armnn::DataType::Signed32 >()</h2>
1862
1863<div class="memitem">
1864<div class="memproto">
1865 <table class="memname">
1866 <tr>
1867 <td class="memname">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;<a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a>&gt;, 4&gt; <a class="el" href="_conv2d_test_impl_8hpp.html#a1c3398bdb48e4ce4643a1eeaf3e054a3">DepthwiseConvolution2d3x3Dilation3x3Test</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a> &gt; </td>
1868 <td>(</td>
1869 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
1870 <td class="paramname">, </td>
1871 </tr>
1872 <tr>
1873 <td class="paramkey"></td>
1874 <td></td>
1875 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
1876 <td class="paramname">, </td>
1877 </tr>
1878 <tr>
1879 <td class="paramkey"></td>
1880 <td></td>
1881 <td class="paramtype">bool&#160;</td>
1882 <td class="paramname">, </td>
1883 </tr>
1884 <tr>
1885 <td class="paramkey"></td>
1886 <td></td>
1887 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
1888 <td class="paramname">&#160;</td>
1889 </tr>
1890 <tr>
1891 <td></td>
1892 <td>)</td>
1893 <td></td><td></td>
1894 </tr>
1895 </table>
1896</div><div class="memdoc">
1897
1898</div>
1899</div>
1900<a id="a80ee4cde34185af792db65aa40cf5c98"></a>
1901<h2 class="memtitle"><span class="permalink"><a href="#a80ee4cde34185af792db65aa40cf5c98">&#9670;&nbsp;</a></span>DepthwiseConvolution2d3x3DilationTestCommon()</h2>
1902
1903<div class="memitem">
1904<div class="memproto">
1905 <table class="memname">
1906 <tr>
1907 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T, 4&gt; DepthwiseConvolution2d3x3DilationTestCommon </td>
1908 <td>(</td>
1909 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
1910 <td class="paramname"><em>workloadFactory</em>, </td>
1911 </tr>
1912 <tr>
1913 <td class="paramkey"></td>
1914 <td></td>
1915 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
1916 <td class="paramname"><em>memoryManager</em>, </td>
1917 </tr>
1918 <tr>
1919 <td class="paramkey"></td>
1920 <td></td>
1921 <td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
1922 <td class="paramname"><em>inputNoQuantizedValues</em>, </td>
1923 </tr>
1924 <tr>
1925 <td class="paramkey"></td>
1926 <td></td>
1927 <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
1928 <td class="paramname"><em>inputTensorInfo</em>, </td>
1929 </tr>
1930 <tr>
1931 <td class="paramkey"></td>
1932 <td></td>
1933 <td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
1934 <td class="paramname"><em>kernelNoQuantizedValues</em>, </td>
1935 </tr>
1936 <tr>
1937 <td class="paramkey"></td>
1938 <td></td>
1939 <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
1940 <td class="paramname"><em>kernelTensorInfo</em>, </td>
1941 </tr>
1942 <tr>
1943 <td class="paramkey"></td>
1944 <td></td>
1945 <td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
1946 <td class="paramname"><em>outputExpectedNoQuantizedValues</em>, </td>
1947 </tr>
1948 <tr>
1949 <td class="paramkey"></td>
1950 <td></td>
1951 <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
1952 <td class="paramname"><em>outputTensorInfo</em>, </td>
1953 </tr>
1954 <tr>
1955 <td class="paramkey"></td>
1956 <td></td>
1957 <td class="paramtype">uint32_t&#160;</td>
1958 <td class="paramname"><em>dilationX</em>, </td>
1959 </tr>
1960 <tr>
1961 <td class="paramkey"></td>
1962 <td></td>
1963 <td class="paramtype">uint32_t&#160;</td>
1964 <td class="paramname"><em>dilationY</em>, </td>
1965 </tr>
1966 <tr>
1967 <td class="paramkey"></td>
1968 <td></td>
1969 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
1970 <td class="paramname"><em>layout</em> = <code><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></code>, </td>
1971 </tr>
1972 <tr>
1973 <td class="paramkey"></td>
1974 <td></td>
1975 <td class="paramtype">bool&#160;</td>
1976 <td class="paramname"><em>biasEnabled</em> = <code><a class="el" href="_ref_layer_tests_8cpp.html#a67e2647a90dec71bb79c8b38872ba570">false</a></code>&#160;</td>
1977 </tr>
1978 <tr>
1979 <td></td>
1980 <td>)</td>
1981 <td></td><td></td>
1982 </tr>
1983 </table>
1984</div><div class="memdoc">
1985
1986<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l02288">2288</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
1987
1988<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::Float32</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::QSymmS16</a>, <a class="el" href="_tensor_8cpp_source.html#l00275">TensorInfo::SetQuantizationOffset()</a>, and <a class="el" href="_tensor_8cpp_source.html#l00259">TensorInfo::SetQuantizationScale()</a>.</p>
1989<div class="fragment"><div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>&#160;{</div><div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>&#160; <span class="keywordtype">float</span> qScale;</div><div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>&#160; int32_t qOffset;</div><div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>&#160; <span class="keywordflow">switch</span> (ArmnnType)</div><div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>&#160; {</div><div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>:</div><div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>&#160; {</div><div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>&#160; qScale = 0.1f;</div><div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>&#160; qOffset = 128;</div><div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>&#160; }</div><div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a>:</div><div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>&#160; {</div><div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>&#160; qScale = 0.1f;</div><div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>&#160; qOffset = 0;</div><div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>&#160; }</div><div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>:</div><div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>&#160; {</div><div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>&#160; qScale = 0.f;</div><div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>&#160; qOffset = 0;</div><div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>&#160; }</div><div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>&#160; }</div><div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>&#160;</div><div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>&#160; inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a685739c4eb65a580e075282cfe6787d6">SetQuantizationScale</a>(qScale);</div><div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>&#160; inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a63cbc581012c957f9d68d224ddc3e43c">SetQuantizationOffset</a>(qOffset);</div><div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>&#160; kernelTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a685739c4eb65a580e075282cfe6787d6">SetQuantizationScale</a>(qScale);</div><div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>&#160; kernelTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a63cbc581012c957f9d68d224ddc3e43c">SetQuantizationOffset</a>(qOffset);</div><div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>&#160; outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a685739c4eb65a580e075282cfe6787d6">SetQuantizationScale</a>(qScale);</div><div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>&#160; outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a63cbc581012c957f9d68d224ddc3e43c">SetQuantizationOffset</a>(qOffset);</div><div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>&#160;</div><div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>&#160; <span class="keyword">auto</span> input = MakeTensor&lt;T, 4&gt;(inputTensorInfo,</div><div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>&#160; std::vector&lt;T&gt;(QuantizedVector&lt;T&gt;(inputNoQuantizedValues,</div><div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>&#160; inputTensorInfo.GetQuantizationScale(),</div><div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>&#160; inputTensorInfo.GetQuantizationOffset())));</div><div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>&#160; <span class="keyword">auto</span> kernel = MakeTensor&lt;T, 4&gt;(kernelTensorInfo,</div><div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>&#160; std::vector&lt;T&gt;(QuantizedVector&lt;T&gt;(kernelNoQuantizedValues,</div><div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>&#160; kernelTensorInfo.GetQuantizationScale(),</div><div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>&#160; kernelTensorInfo.GetQuantizationOffset())));</div><div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>&#160; <span class="keyword">auto</span> expectedOutput =</div><div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>&#160; MakeTensor&lt;T, 4&gt;(outputTensorInfo,</div><div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>&#160; std::vector&lt;T&gt;(QuantizedVector&lt;T&gt;(outputExpectedNoQuantizedValues,</div><div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>&#160; outputTensorInfo.GetQuantizationScale(),</div><div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>&#160; outputTensorInfo.GetQuantizationOffset())));</div><div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>&#160;</div><div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>&#160; uint32_t padLeft = 0;</div><div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>&#160; uint32_t padTop = 0;</div><div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>&#160; uint32_t padRight = 0;</div><div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>&#160; uint32_t padBottom = 0;</div><div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>&#160; uint32_t strideX = 1;</div><div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>&#160; uint32_t strideY = 1;</div><div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>&#160;</div><div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>&#160; <span class="keywordflow">return</span> DepthwiseConvolution2dTestImpl&lt;ArmnnType, ArmnnBType&gt;(</div><div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>&#160; workloadFactory,</div><div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>&#160; memoryManager,</div><div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>&#160; input,</div><div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>&#160; kernel,</div><div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>&#160; GetBias&lt;ArmnnBType&gt;(biasEnabled, qScale * qScale, outputTensorInfo, layout),</div><div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>&#160; expectedOutput,</div><div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>&#160; qScale,</div><div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>&#160; qOffset,</div><div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>&#160; layout,</div><div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>&#160; padLeft,</div><div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>&#160; padTop,</div><div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>&#160; padRight,</div><div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>&#160; padBottom,</div><div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>&#160; strideX,</div><div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>&#160; strideY,</div><div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>&#160; dilationX,</div><div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>&#160; dilationY);</div><div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a></div></div>
1990<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
1991<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a></div></div>
1992<div class="ttc" id="classarmnn_1_1_tensor_info_html_a685739c4eb65a580e075282cfe6787d6"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a685739c4eb65a580e075282cfe6787d6">armnn::TensorInfo::SetQuantizationScale</a></div><div class="ttdeci">void SetQuantizationScale(float scale)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00259">Tensor.cpp:259</a></div></div>
1993<div class="ttc" id="classarmnn_1_1_tensor_info_html_a63cbc581012c957f9d68d224ddc3e43c"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a63cbc581012c957f9d68d224ddc3e43c">armnn::TensorInfo::SetQuantizationOffset</a></div><div class="ttdeci">void SetQuantizationOffset(int32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00275">Tensor.cpp:275</a></div></div>
1994</div><!-- fragment -->
1995</div>
1996</div>
1997<a id="abf326cbf49ec19c6272fe7c244b7817c"></a>
1998<h2 class="memtitle"><span class="permalink"><a href="#abf326cbf49ec19c6272fe7c244b7817c">&#9670;&nbsp;</a></span>DepthwiseConvolution2dAsymmetricTest()</h2>
1999
2000<div class="memitem">
2001<div class="memproto">
2002 <table class="memname">
2003 <tr>
2004 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;float, 4&gt; DepthwiseConvolution2dAsymmetricTest </td>
2005 <td>(</td>
2006 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
2007 <td class="paramname"><em>workloadFactory</em>, </td>
2008 </tr>
2009 <tr>
2010 <td class="paramkey"></td>
2011 <td></td>
2012 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
2013 <td class="paramname"><em>memoryManager</em>, </td>
2014 </tr>
2015 <tr>
2016 <td class="paramkey"></td>
2017 <td></td>
2018 <td class="paramtype">bool&#160;</td>
2019 <td class="paramname"><em>biasEnabled</em>, </td>
2020 </tr>
2021 <tr>
2022 <td class="paramkey"></td>
2023 <td></td>
2024 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
2025 <td class="paramname"><em>layout</em>&#160;</td>
2026 </tr>
2027 <tr>
2028 <td></td>
2029 <td>)</td>
2030 <td></td><td></td>
2031 </tr>
2032 </table>
2033</div><div class="memdoc">
2034
2035<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l03206">3206</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
2036<div class="fragment"><div class="line"><a name="l03211"></a><span class="lineno"> 3211</span>&#160;{</div><div class="line"><a name="l03212"></a><span class="lineno"> 3212</span>&#160; <span class="keywordflow">return</span> DepthwiseConvolution2dAsymmetricTestCommon&lt;armnn::DataType::Float32, armnn::DataType::Float32&gt;(</div><div class="line"><a name="l03213"></a><span class="lineno"> 3213</span>&#160; workloadFactory, memoryManager, 0.0f, 0, biasEnabled, layout);</div><div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>&#160;}</div></div><!-- fragment -->
2037</div>
2038</div>
2039<a id="a952b4460c66365d89ebb3df940bbd9bd"></a>
2040<h2 class="memtitle"><span class="permalink"><a href="#a952b4460c66365d89ebb3df940bbd9bd">&#9670;&nbsp;</a></span>DepthwiseConvolution2dAsymmetricTestCommon()</h2>
2041
2042<div class="memitem">
2043<div class="memproto">
2044 <table class="memname">
2045 <tr>
2046 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T, 4&gt; DepthwiseConvolution2dAsymmetricTestCommon </td>
2047 <td>(</td>
2048 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
2049 <td class="paramname"><em>workloadFactory</em>, </td>
2050 </tr>
2051 <tr>
2052 <td class="paramkey"></td>
2053 <td></td>
2054 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
2055 <td class="paramname"><em>memoryManager</em>, </td>
2056 </tr>
2057 <tr>
2058 <td class="paramkey"></td>
2059 <td></td>
2060 <td class="paramtype">float&#160;</td>
2061 <td class="paramname"><em>qScale</em>, </td>
2062 </tr>
2063 <tr>
2064 <td class="paramkey"></td>
2065 <td></td>
2066 <td class="paramtype">int32_t&#160;</td>
2067 <td class="paramname"><em>qOffset</em>, </td>
2068 </tr>
2069 <tr>
2070 <td class="paramkey"></td>
2071 <td></td>
2072 <td class="paramtype">bool&#160;</td>
2073 <td class="paramname"><em>biasEnabled</em>, </td>
2074 </tr>
2075 <tr>
2076 <td class="paramkey"></td>
2077 <td></td>
2078 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
2079 <td class="paramname"><em>layout</em>&#160;</td>
2080 </tr>
2081 <tr>
2082 <td></td>
2083 <td>)</td>
2084 <td></td><td></td>
2085 </tr>
2086 </table>
2087</div><div class="memdoc">
2088
2089<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l02047">2047</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
2090<div class="fragment"><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160;{</div><div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160; <span class="comment">// Use a single-batch 2-channel 5x5 image as input.</span></div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputTensorInfo({ 1, 2, 5, 5 }, ArmnnType);</div><div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160; <span class="keyword">auto</span> input = MakeTensor&lt;T, 4&gt;(inputTensorInfo, std::vector&lt;T&gt;(</div><div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160; QuantizedVector&lt;T&gt;({</div><div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160; 0, 1, 2, 3, 4,</div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>&#160; 5, 6, 7, 8, 9,</div><div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>&#160; 10, 11, 12, 13, 14,</div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160; 15, 16, 17, 18, 19,</div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160; 20, 21, 22, 23, 24,</div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160;</div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160; 25, 26, 27, 28, 29,</div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160; 30, 31, 32, 33, 34,</div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160; 35, 36, 37, 38, 39,</div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160; 40, 41, 42, 43, 44,</div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160; 45, 46, 47, 48, 49</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160; },</div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160; inputTensorInfo.GetQuantizationScale(),</div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160; inputTensorInfo.GetQuantizationOffset())));</div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160;</div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160; <span class="comment">// Use a depth multiplier of 1 on a 2-channel 4x4 kernel.</span></div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> kernelTensorInfo({ 1, 2, 4, 4 }, ArmnnType);</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160; <span class="keyword">auto</span> kernel = MakeTensor&lt;T, 4&gt;(kernelTensorInfo, std::vector&lt;T&gt;(</div><div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>&#160; QuantizedVector&lt;T&gt;({</div><div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160; 32, 31, 30, 29,</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160; 28, 27, 26, 25,</div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160; 24, 23, 22, 21,</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>&#160; 20, 19, 18, 17,</div><div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>&#160;</div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160; 16, 15, 14, 13,</div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160; 12, 11, 10, 9,</div><div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160; 8, 7, 6, 5,</div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160; 4, 3, 2, 1</div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160; },</div><div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>&#160; kernelTensorInfo.GetQuantizationScale(),</div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>&#160; kernelTensorInfo.GetQuantizationOffset())));</div><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160;</div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160; <span class="comment">// Expected output is 1 batch of a 2-channel 5x5 image.</span></div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>&#160; <span class="comment">// Calculated using the python tensorflow library with strideX=1, strideY=1.</span></div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputTensorInfo({ 1, 2, 5, 5 }, ArmnnType);</div><div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>&#160; boost::multi_array&lt;T, 4&gt; expectedOutput = MakeTensor&lt;T, 4&gt;(outputTensorInfo, std::vector&lt;T&gt;(</div><div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160; QuantizedVector&lt;T&gt;({</div><div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>&#160; 1062, 1580, 1850, 1530, 1117,</div><div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160; 2140, 3108, 3500, 2842, 2042,</div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160; 3580, 5068, 5460, 4342, 3062,</div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160; 3618, 5072, 5390, 4248, 2971,</div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160; 3074, 4282, 4510, 3533, 2457,</div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160;</div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160; 1550, 2284, 2362, 1955, 1428,</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>&#160; 2910, 4206, 4342, 3528, 2536,</div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160; 3390, 4886, 5022, 4068, 2916,</div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160; 3566, 5056, 5182, 4133, 2922,</div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160; 3100, 4352, 4452, 3517, 2465</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160; },</div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160; outputTensorInfo.GetQuantizationScale(),</div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160; outputTensorInfo.GetQuantizationOffset())));</div><div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160;</div><div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>&#160; <span class="keywordflow">return</span> DepthwiseConvolution2dAsymmetricTestImpl&lt;ArmnnType, ArmnnBType&gt;(</div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160; workloadFactory,</div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160; memoryManager,</div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160; input,</div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160; kernel,</div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>&#160; GetBias2&lt;ArmnnBType&gt;(biasEnabled, qScale * qScale),</div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160; expectedOutput,</div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160; qScale,</div><div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160; qOffset,</div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160; layout,</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160; 1, <span class="comment">// Padding left.</span></div><div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160; 1, <span class="comment">// Padding top.</span></div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160; 2, <span class="comment">// Padding right.</span></div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160; 2, <span class="comment">// Padding bottom.</span></div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160; 1, <span class="comment">// strideX</span></div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160; 1); <span class="comment">// strideY</span></div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
2091</div><!-- fragment -->
2092</div>
2093</div>
2094<a id="aa405363108e52032fb1e23c3f5a03a57"></a>
2095<h2 class="memtitle"><span class="permalink"><a href="#aa405363108e52032fb1e23c3f5a03a57">&#9670;&nbsp;</a></span>DepthwiseConvolution2dAsymmetricTestImpl()</h2>
2096
2097<div class="memitem">
2098<div class="memproto">
2099 <table class="memname">
2100 <tr>
2101 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T, 4&gt; DepthwiseConvolution2dAsymmetricTestImpl </td>
2102 <td>(</td>
2103 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
2104 <td class="paramname"><em>workloadFactory</em>, </td>
2105 </tr>
2106 <tr>
2107 <td class="paramkey"></td>
2108 <td></td>
2109 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
2110 <td class="paramname"><em>memoryManager</em>, </td>
2111 </tr>
2112 <tr>
2113 <td class="paramkey"></td>
2114 <td></td>
2115 <td class="paramtype">const boost::multi_array&lt; T, 4 &gt; &amp;&#160;</td>
2116 <td class="paramname"><em>input</em>, </td>
2117 </tr>
2118 <tr>
2119 <td class="paramkey"></td>
2120 <td></td>
2121 <td class="paramtype">const boost::multi_array&lt; T, 4 &gt; &amp;&#160;</td>
2122 <td class="paramname"><em>kernel</em>, </td>
2123 </tr>
2124 <tr>
2125 <td class="paramkey"></td>
2126 <td></td>
2127 <td class="paramtype">const boost::multi_array&lt; B, 1 &gt; &amp;&#160;</td>
2128 <td class="paramname"><em>bias</em>, </td>
2129 </tr>
2130 <tr>
2131 <td class="paramkey"></td>
2132 <td></td>
2133 <td class="paramtype">const boost::multi_array&lt; T, 4 &gt; &amp;&#160;</td>
2134 <td class="paramname"><em>outputExpected</em>, </td>
2135 </tr>
2136 <tr>
2137 <td class="paramkey"></td>
2138 <td></td>
2139 <td class="paramtype">float&#160;</td>
2140 <td class="paramname"><em>qScale</em>, </td>
2141 </tr>
2142 <tr>
2143 <td class="paramkey"></td>
2144 <td></td>
2145 <td class="paramtype">int32_t&#160;</td>
2146 <td class="paramname"><em>qOffset</em>, </td>
2147 </tr>
2148 <tr>
2149 <td class="paramkey"></td>
2150 <td></td>
2151 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
2152 <td class="paramname"><em>layout</em>, </td>
2153 </tr>
2154 <tr>
2155 <td class="paramkey"></td>
2156 <td></td>
2157 <td class="paramtype">uint32_t&#160;</td>
2158 <td class="paramname"><em>padLeft</em> = <code>0</code>, </td>
2159 </tr>
2160 <tr>
2161 <td class="paramkey"></td>
2162 <td></td>
2163 <td class="paramtype">uint32_t&#160;</td>
2164 <td class="paramname"><em>padTop</em> = <code>0</code>, </td>
2165 </tr>
2166 <tr>
2167 <td class="paramkey"></td>
2168 <td></td>
2169 <td class="paramtype">uint32_t&#160;</td>
2170 <td class="paramname"><em>padRight</em> = <code>0</code>, </td>
2171 </tr>
2172 <tr>
2173 <td class="paramkey"></td>
2174 <td></td>
2175 <td class="paramtype">uint32_t&#160;</td>
2176 <td class="paramname"><em>padBottom</em> = <code>0</code>, </td>
2177 </tr>
2178 <tr>
2179 <td class="paramkey"></td>
2180 <td></td>
2181 <td class="paramtype">uint32_t&#160;</td>
2182 <td class="paramname"><em>strideX</em> = <code>1</code>, </td>
2183 </tr>
2184 <tr>
2185 <td class="paramkey"></td>
2186 <td></td>
2187 <td class="paramtype">uint32_t&#160;</td>
2188 <td class="paramname"><em>strideY</em> = <code>1</code>&#160;</td>
2189 </tr>
2190 <tr>
2191 <td></td>
2192 <td>)</td>
2193 <td></td><td></td>
2194 </tr>
2195 </table>
2196</div><div class="memdoc">
2197
2198<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l01381">1381</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
2199
2200<p class="reference">References <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00019">AllocateAndCopyDataToITensorHandle()</a>, <a class="el" href="_conv2d_test_impl_8cpp_source.html#l00169">ApplyBias()</a>, <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00014">CopyDataFromITensorHandle()</a>, <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00009">CopyDataToITensorHandle()</a>, <a class="el" href="_workload_factory_8cpp_source.html#l01160">IWorkloadFactory::CreateDepthwiseConvolution2d()</a>, <a class="el" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">IWorkloadFactory::CreateTensorHandle()</a>, <a class="el" href="_tensor_8cpp_source.html#l00264">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.html#l00247">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00038">armnnUtils::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::info</a>, <a class="el" href="_workload_data_8hpp_source.html#l00192">DepthwiseConvolution2dQueueDescriptor::m_Bias</a>, <a class="el" href="_descriptors_8hpp_source.html#l00490">DepthwiseConvolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00492">DepthwiseConvolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00480">DepthwiseConvolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00474">DepthwiseConvolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00476">DepthwiseConvolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00478">DepthwiseConvolution2dDescriptor::m_PadTop</a>, <a class="el" href="_workload_data_8hpp_source.html#l00049">QueueDescriptorWithParameters&lt; LayerDescriptor &gt;::m_Parameters</a>, <a class="el" href="_descriptors_8hpp_source.html#l00482">DepthwiseConvolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00484">DepthwiseConvolution2dDescriptor::m_StrideY</a>, <a class="el" href="_workload_data_8hpp_source.html#l00191">DepthwiseConvolution2dQueueDescriptor::m_Weight</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::NHWC</a>, <a class="el" href="_permute_8cpp_source.html#l00121">armnnUtils::Permute()</a>, <a class="el" href="_tensor_8cpp_source.html#l00275">TensorInfo::SetQuantizationOffset()</a>, and <a class="el" href="_tensor_8cpp_source.html#l00259">TensorInfo::SetQuantizationScale()</a>.</p>
2201<div class="fragment"><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160;{</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputNum = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(input.shape()[0]);</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(input.shape()[1]);</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(input.shape()[2]);</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(input.shape()[3]);</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelChanMul = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(kernel.shape()[0]);</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelChannels = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(kernel.shape()[1]);</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelHeight = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(kernel.shape()[2]);</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelWidth = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(kernel.shape()[3]);</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputNum = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(outputExpected.shape()[0]);</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputChannels = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(outputExpected.shape()[1]);</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(outputExpected.shape()[2]);</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(outputExpected.shape()[3]);</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160;</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; <span class="comment">// If a bias is used, its size must equal the number of output channels.</span></div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; <span class="keywordtype">bool</span> biasEnabled = bias.size() &gt; 0;</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; BOOST_ASSERT(!biasEnabled || bias.size() == outputChannels);</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160;</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160; <span class="comment">// Creates the tensors.</span></div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputTensorInfo =</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a>(inputNum, inputChannels, inputHeight, inputWidth, layout, ArmnnType);</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputTensorInfo =</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a>(outputNum, outputChannels, outputHeight, outputWidth, layout, ArmnnType);</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> kernelDesc({kernelChanMul, kernelChannels, kernelHeight, kernelWidth}, ArmnnType);</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> biasDesc({<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(bias.size())}, ArmnnBType);</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160;</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; <span class="comment">// Set quantization parameters if the requested type is a quantized type.</span></div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; <span class="keywordflow">if</span> (armnn::IsQuantizedType&lt;T&gt;())</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; {</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; inputTensorInfo.SetQuantizationScale(qScale);</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; inputTensorInfo.SetQuantizationOffset(qOffset);</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a685739c4eb65a580e075282cfe6787d6">SetQuantizationScale</a>(qScale);</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a63cbc581012c957f9d68d224ddc3e43c">SetQuantizationOffset</a>(qOffset);</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; kernelDesc.SetQuantizationScale(qScale);</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; kernelDesc.SetQuantizationOffset(qOffset);</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; biasDesc.SetQuantizationScale(qScale*qScale);</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160; biasDesc.SetQuantizationOffset(0);</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; }</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160;</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; <span class="comment">// Construct the input data.</span></div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160; std::vector&lt;T&gt; inputData;</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; inputData.assign(input.data(), input.data() + inputChannels*inputHeight*inputWidth);</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160;</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160; <span class="comment">// At this point if we require it permute the input data</span></div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a> NCHWToNHWC = { 0, 3, 1, 2 };</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; <span class="keywordflow">if</span> (layout == <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a>)</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160; {</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; std::vector&lt;T&gt; tmp(inputData.size());</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; <a class="code" href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a>(inputTensorInfo.GetShape(), NCHWToNHWC, inputData.data(), tmp.data(), <span class="keyword">sizeof</span>(T));</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; inputData = tmp;</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; }</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160;</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; <span class="keyword">auto</span> batchedInput = MakeTensor&lt;T, 4&gt;(inputTensorInfo, inputData);</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160;</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; <span class="comment">// Construct the output data, with bias applied, as appropriate.</span></div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; std::vector&lt;T&gt; outputData;</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; outputData.assign(outputExpected.data(), outputExpected.data() + outputChannels*outputHeight*outputWidth);</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; <span class="keywordflow">if</span> (biasEnabled)</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; {</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; std::vector&lt;T&gt; biasV;</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160; biasV.assign(bias.data(), bias.data() + outputChannels);</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; <a class="code" href="_conv2d_test_impl_8cpp.html#aa1f4ce02e0904dc8cf1b7f42bc34d346">ApplyBias</a>(outputData, outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a047ca888c43bd7fb5702853bf72410d0">GetQuantizationScale</a>(), outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a770b51078da02f44a819e9f95d8058b5">GetQuantizationOffset</a>(),</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; biasV, biasDesc.GetQuantizationScale(), biasDesc.GetQuantizationOffset(),</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; outputWidth, outputHeight);</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160; }</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160;</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; <a class="code" href="struct_layer_test_result.html">LayerTestResult&lt;T, 4&gt;</a> ret(outputTensorInfo);</div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160;</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160; <span class="comment">// At this point if we require it permute the expected output</span></div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160; <span class="keywordflow">if</span> (layout == <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a>)</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160; {</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; std::vector&lt;T&gt; tmp(outputData.size());</div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160; <a class="code" href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a>(outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>(), NCHWToNHWC, outputData.data(), tmp.data(), <span class="keyword">sizeof</span>(T));</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160; outputData = tmp;</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; }</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; ret.outputExpected = MakeTensor&lt;T, 4&gt;(outputTensorInfo, outputData);</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160; std::unique_ptr&lt;armnn::ITensorHandle&gt; inputHandle = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">CreateTensorHandle</a>(inputTensorInfo);</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160; std::unique_ptr&lt;armnn::ITensorHandle&gt; outputHandle = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">CreateTensorHandle</a>(outputTensorInfo);</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160;</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; <a class="code" href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a> weightsTensor(kernelDesc);</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160;</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a>(&amp;weightsTensor, &amp;kernel[0][0][0][0]);</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160;</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; <a class="code" href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a> biasTensor(biasDesc);</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; <span class="keywordflow">if</span> (biasEnabled)</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160; {</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a>(&amp;biasTensor, &amp;bias[0]);</div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160; }</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160;</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; <a class="code" href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html">armnn::DepthwiseConvolution2dQueueDescriptor</a> data;</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; data.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html#a3369b66d9316a773a41711e3f590c041">m_Weight</a> = &amp;weightsTensor;</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160; data.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html#ab3437cee6b0687812104fc1b37cbe8b3">m_Bias</a> = &amp;biasTensor; <span class="comment">// Still set this whether or not bias is enabled - it can be a source of bugs.</span></div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#afe6a3377c4531315354def9023c8fdda">m_StrideX</a> = strideX;</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#ac1fe174bbadfb39a2b636940c2e647c8">m_StrideY</a> = strideY;</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#ac18546ebbebbb32fe0a03baa9bf2c600">m_PadLeft</a> = padLeft;</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a002bc30e590d78cbb4f4d12171055ca7">m_PadRight</a> = padRight;</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a56b51f56cef50cdfa554258eecdab046">m_PadTop</a> = padTop;</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aa9e49717ebdb741e8c767741647fc618">m_PadBottom</a> = padBottom;</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aea202e14d8874cefd9a0f778022b7e25">m_BiasEnabled</a> = biasEnabled;</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a> = layout;</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160;</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; <a class="code" href="structarmnn_1_1_workload_info.html">armnn::WorkloadInfo</a> <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>;</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160;</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; std::unique_ptr&lt;armnn::IWorkload&gt; workload = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#accb9759dfd2880efe0f8d2705ddee448">CreateDepthwiseConvolution2d</a>(data, info);</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; inputHandle-&gt;Allocate();</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160; outputHandle-&gt;Allocate();</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160;</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a>(inputHandle.get(), &amp;batchedInput[0][0][0][0]);</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160;</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; ExecuteWorkload(*workload, memoryManager);</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160;</div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a>(&amp;ret.output[0][0][0][0], outputHandle.get());</div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160;</div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_i_workload_factory_html_accb9759dfd2880efe0f8d2705ddee448"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.html#accb9759dfd2880efe0f8d2705ddee448">armnn::IWorkloadFactory::CreateDepthwiseConvolution2d</a></div><div class="ttdeci">virtual std::unique_ptr&lt; IWorkload &gt; CreateDepthwiseConvolution2d(const DepthwiseConvolution2dQueueDescriptor &amp;descriptor, const WorkloadInfo &amp;info) const</div><div class="ttdef"><b>Definition:</b> <a href="_workload_factory_8cpp_source.html#l01160">WorkloadFactory.cpp:1160</a></div></div>
2202<div class="ttc" id="_tensor_copy_utils_8cpp_html_afaaca8c3f3a467d124bba44067d2afa8"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a></div><div class="ttdeci">void AllocateAndCopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00019">TensorCopyUtils.cpp:19</a></div></div>
2203<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_afe6a3377c4531315354def9023c8fdda"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#afe6a3377c4531315354def9023c8fdda">armnn::DepthwiseConvolution2dDescriptor::m_StrideX</a></div><div class="ttdeci">uint32_t m_StrideX</div><div class="ttdoc">Stride value when proceeding through input for the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00482">Descriptors.hpp:482</a></div></div>
2204<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_aa9e49717ebdb741e8c767741647fc618"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aa9e49717ebdb741e8c767741647fc618">armnn::DepthwiseConvolution2dDescriptor::m_PadBottom</a></div><div class="ttdeci">uint32_t m_PadBottom</div><div class="ttdoc">Padding bottom value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00480">Descriptors.hpp:480</a></div></div>
2205<div class="ttc" id="_conv2d_test_impl_8cpp_html_aa1f4ce02e0904dc8cf1b7f42bc34d346"><div class="ttname"><a href="_conv2d_test_impl_8cpp.html#aa1f4ce02e0904dc8cf1b7f42bc34d346">ApplyBias</a></div><div class="ttdeci">void ApplyBias(std::vector&lt; T &gt; &amp;v, float vScale, int32_t vOffset, const std::vector&lt; B &gt; &amp;bias, float bScale, int32_t bOffset, uint32_t w, uint32_t h)</div><div class="ttdef"><b>Definition:</b> <a href="_conv2d_test_impl_8cpp_source.html#l00169">Conv2dTestImpl.cpp:169</a></div></div>
2206<div class="ttc" id="classarmnn_1_1_tensor_info_html_a770b51078da02f44a819e9f95d8058b5"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a770b51078da02f44a819e9f95d8058b5">armnn::TensorInfo::GetQuantizationOffset</a></div><div class="ttdeci">int32_t GetQuantizationOffset() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00264">Tensor.cpp:264</a></div></div>
2207<div class="ttc" id="namespacearmnn_utils_html_af3c74017185773dd61d8ca6662d65d43"><div class="ttname"><a href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a></div><div class="ttdeci">void Permute(const armnn::TensorShape &amp;dstShape, const armnn::PermutationVector &amp;mappings, const void *src, void *dst, size_t dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="_permute_8cpp_source.html#l00121">Permute.cpp:121</a></div></div>
2208<div class="ttc" id="_tensor_copy_utils_8cpp_html_ae15f1a3c55d2db87683577de9fa4437c"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a></div><div class="ttdeci">void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00009">TensorCopyUtils.cpp:9</a></div></div>
2209<div class="ttc" id="classarmnn_1_1_permutation_vector_html"><div class="ttname"><a href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a></div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00170">Types.hpp:170</a></div></div>
2210<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_ac18546ebbebbb32fe0a03baa9bf2c600"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#ac18546ebbebbb32fe0a03baa9bf2c600">armnn::DepthwiseConvolution2dDescriptor::m_PadLeft</a></div><div class="ttdeci">uint32_t m_PadLeft</div><div class="ttdoc">Padding left value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00474">Descriptors.hpp:474</a></div></div>
2211<div class="ttc" id="namespacearmnn_utils_html_acee63cd08da47910fc166a1990988fa8"><div class="ttname"><a href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00038">TensorUtils.cpp:38</a></div></div>
2212<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
2213<div class="ttc" id="structarmnn_1_1_queue_descriptor_with_parameters_html_aad91b9bbf7aa365d304febe79a3d1333"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">armnn::QueueDescriptorWithParameters::m_Parameters</a></div><div class="ttdeci">LayerDescriptor m_Parameters</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00049">WorkloadData.hpp:49</a></div></div>
2214<div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
2215<div class="ttc" id="classarmnn_1_1_i_workload_factory_html_a15c140be4ddceffee16436f009d3ed94"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">armnn::IWorkloadFactory::CreateTensorHandle</a></div><div class="ttdeci">virtual std::unique_ptr&lt; ITensorHandle &gt; CreateTensorHandle(const TensorInfo &amp;tensorInfo, const bool IsMemoryManaged=true) const =0</div></div>
2216<div class="ttc" id="struct_layer_test_result_html"><div class="ttname"><a href="struct_layer_test_result.html">LayerTestResult</a></div><div class="ttdef"><b>Definition:</b> <a href="_layer_test_result_8hpp_source.html#l00029">LayerTestResult.hpp:29</a></div></div>
2217<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_queue_descriptor_html_ab3437cee6b0687812104fc1b37cbe8b3"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html#ab3437cee6b0687812104fc1b37cbe8b3">armnn::DepthwiseConvolution2dQueueDescriptor::m_Bias</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_Bias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00192">WorkloadData.hpp:192</a></div></div>
2218<div class="ttc" id="_tensor_copy_utils_8cpp_html_a99b626c58a926dc7d6df78d22ec186c8"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a></div><div class="ttdeci">void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00014">TensorCopyUtils.cpp:14</a></div></div>
2219<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">armnn::DepthwiseConvolution2dDescriptor::m_DataLayout</a></div><div class="ttdeci">DataLayout m_DataLayout</div><div class="ttdoc">The data layout to be used (NCHW, NHWC). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00492">Descriptors.hpp:492</a></div></div>
2220<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_a56b51f56cef50cdfa554258eecdab046"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a56b51f56cef50cdfa554258eecdab046">armnn::DepthwiseConvolution2dDescriptor::m_PadTop</a></div><div class="ttdeci">uint32_t m_PadTop</div><div class="ttdoc">Padding top value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00478">Descriptors.hpp:478</a></div></div>
2221<div class="ttc" id="structarmnn_1_1_workload_info_html"><div class="ttname"><a href="structarmnn_1_1_workload_info.html">armnn::WorkloadInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_workload_info_8hpp_source.html#l00016">WorkloadInfo.hpp:16</a></div></div>
2222<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_queue_descriptor_html_a3369b66d9316a773a41711e3f590c041"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html#a3369b66d9316a773a41711e3f590c041">armnn::DepthwiseConvolution2dQueueDescriptor::m_Weight</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_Weight</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00191">WorkloadData.hpp:191</a></div></div>
2223<div class="ttc" id="classarmnn_1_1_tensor_info_html_a685739c4eb65a580e075282cfe6787d6"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a685739c4eb65a580e075282cfe6787d6">armnn::TensorInfo::SetQuantizationScale</a></div><div class="ttdeci">void SetQuantizationScale(float scale)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00259">Tensor.cpp:259</a></div></div>
2224<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_aea202e14d8874cefd9a0f778022b7e25"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aea202e14d8874cefd9a0f778022b7e25">armnn::DepthwiseConvolution2dDescriptor::m_BiasEnabled</a></div><div class="ttdeci">bool m_BiasEnabled</div><div class="ttdoc">Enable/disable bias. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00490">Descriptors.hpp:490</a></div></div>
2225<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_queue_descriptor_html"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html">armnn::DepthwiseConvolution2dQueueDescriptor</a></div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00183">WorkloadData.hpp:183</a></div></div>
2226<div class="ttc" id="classarmnn_1_1_tensor_info_html_a63cbc581012c957f9d68d224ddc3e43c"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a63cbc581012c957f9d68d224ddc3e43c">armnn::TensorInfo::SetQuantizationOffset</a></div><div class="ttdeci">void SetQuantizationOffset(int32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00275">Tensor.cpp:275</a></div></div>
2227<div class="ttc" id="classarmnn_1_1_scoped_cpu_tensor_handle_html"><div class="ttname"><a href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a></div><div class="ttdef"><b>Definition:</b> <a href="_cpu_tensor_handle_8hpp_source.html#l00106">CpuTensorHandle.hpp:106</a></div></div>
2228<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">armnn::TensorInfo::GetShape</a></div><div class="ttdeci">const TensorShape &amp; GetShape() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00088">Tensor.hpp:88</a></div></div>
2229<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_ac1fe174bbadfb39a2b636940c2e647c8"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#ac1fe174bbadfb39a2b636940c2e647c8">armnn::DepthwiseConvolution2dDescriptor::m_StrideY</a></div><div class="ttdeci">uint32_t m_StrideY</div><div class="ttdoc">Stride value when proceeding through input for the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00484">Descriptors.hpp:484</a></div></div>
2230<div class="ttc" id="classarmnn_1_1_tensor_info_html_a047ca888c43bd7fb5702853bf72410d0"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a047ca888c43bd7fb5702853bf72410d0">armnn::TensorInfo::GetQuantizationScale</a></div><div class="ttdeci">float GetQuantizationScale() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00247">Tensor.cpp:247</a></div></div>
2231<div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a></div></div>
2232<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_a002bc30e590d78cbb4f4d12171055ca7"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a002bc30e590d78cbb4f4d12171055ca7">armnn::DepthwiseConvolution2dDescriptor::m_PadRight</a></div><div class="ttdeci">uint32_t m_PadRight</div><div class="ttdoc">Padding right value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00476">Descriptors.hpp:476</a></div></div>
2233</div><!-- fragment -->
2234</div>
2235</div>
2236<a id="a74346a72d64f7fa3463473424c3098ab"></a>
2237<h2 class="memtitle"><span class="permalink"><a href="#a74346a72d64f7fa3463473424c3098ab">&#9670;&nbsp;</a></span>DepthwiseConvolution2dDepthMul1Int16Test()</h2>
2238
2239<div class="memitem">
2240<div class="memproto">
2241 <table class="memname">
2242 <tr>
2243 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;int16_t, 4&gt; DepthwiseConvolution2dDepthMul1Int16Test </td>
2244 <td>(</td>
2245 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
2246 <td class="paramname"><em>workloadFactory</em>, </td>
2247 </tr>
2248 <tr>
2249 <td class="paramkey"></td>
2250 <td></td>
2251 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
2252 <td class="paramname"><em>memoryManager</em>, </td>
2253 </tr>
2254 <tr>
2255 <td class="paramkey"></td>
2256 <td></td>
2257 <td class="paramtype">bool&#160;</td>
2258 <td class="paramname"><em>biasEnabled</em>, </td>
2259 </tr>
2260 <tr>
2261 <td class="paramkey"></td>
2262 <td></td>
2263 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
2264 <td class="paramname"><em>layout</em>&#160;</td>
2265 </tr>
2266 <tr>
2267 <td></td>
2268 <td>)</td>
2269 <td></td><td></td>
2270 </tr>
2271 </table>
2272</div><div class="memdoc">
2273
2274<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l03258">3258</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
2275<div class="fragment"><div class="line"><a name="l03263"></a><span class="lineno"> 3263</span>&#160;{</div><div class="line"><a name="l03264"></a><span class="lineno"> 3264</span>&#160; <span class="keywordflow">return</span> DepthwiseConvolution2dDepthMul1TestImpl&lt;armnn::DataType::QSymmS16, armnn::DataType::Signed32&gt;(</div><div class="line"><a name="l03265"></a><span class="lineno"> 3265</span>&#160; workloadFactory, memoryManager, 0.5f, 50, biasEnabled, layout);</div><div class="line"><a name="l03266"></a><span class="lineno"> 3266</span>&#160;}</div></div><!-- fragment -->
2276</div>
2277</div>
2278<a id="a8b32d950a40903f502f5e1ec0dcab0bd"></a>
2279<h2 class="memtitle"><span class="permalink"><a href="#a8b32d950a40903f502f5e1ec0dcab0bd">&#9670;&nbsp;</a></span>DepthwiseConvolution2dDepthMul1Test()</h2>
2280
2281<div class="memitem">
2282<div class="memproto">
2283 <table class="memname">
2284 <tr>
2285 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;float, 4&gt; DepthwiseConvolution2dDepthMul1Test </td>
2286 <td>(</td>
2287 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
2288 <td class="paramname"><em>workloadFactory</em>, </td>
2289 </tr>
2290 <tr>
2291 <td class="paramkey"></td>
2292 <td></td>
2293 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
2294 <td class="paramname"><em>memoryManager</em>, </td>
2295 </tr>
2296 <tr>
2297 <td class="paramkey"></td>
2298 <td></td>
2299 <td class="paramtype">bool&#160;</td>
2300 <td class="paramname"><em>biasEnabled</em>, </td>
2301 </tr>
2302 <tr>
2303 <td class="paramkey"></td>
2304 <td></td>
2305 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
2306 <td class="paramname"><em>layout</em>&#160;</td>
2307 </tr>
2308 <tr>
2309 <td></td>
2310 <td>)</td>
2311 <td></td><td></td>
2312 </tr>
2313 </table>
2314</div><div class="memdoc">
2315
2316<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l03164">3164</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
2317<div class="fragment"><div class="line"><a name="l03169"></a><span class="lineno"> 3169</span>&#160;{</div><div class="line"><a name="l03170"></a><span class="lineno"> 3170</span>&#160; <span class="keywordflow">return</span> DepthwiseConvolution2dDepthMul1TestImpl&lt;armnn::DataType::Float32, armnn::DataType::Float32&gt;(</div><div class="line"><a name="l03171"></a><span class="lineno"> 3171</span>&#160; workloadFactory, memoryManager, 0.0f, 0, biasEnabled, layout);</div><div class="line"><a name="l03172"></a><span class="lineno"> 3172</span>&#160;}</div></div><!-- fragment -->
2318</div>
2319</div>
2320<a id="a01eae690cbfa5359968f4b8ee13b8814"></a>
2321<h2 class="memtitle"><span class="permalink"><a href="#a01eae690cbfa5359968f4b8ee13b8814">&#9670;&nbsp;</a></span>DepthwiseConvolution2dDepthMul1TestImpl()</h2>
2322
2323<div class="memitem">
2324<div class="memproto">
2325 <table class="memname">
2326 <tr>
2327 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T, 4&gt; DepthwiseConvolution2dDepthMul1TestImpl </td>
2328 <td>(</td>
2329 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
2330 <td class="paramname"><em>workloadFactory</em>, </td>
2331 </tr>
2332 <tr>
2333 <td class="paramkey"></td>
2334 <td></td>
2335 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
2336 <td class="paramname"><em>memoryManager</em>, </td>
2337 </tr>
2338 <tr>
2339 <td class="paramkey"></td>
2340 <td></td>
2341 <td class="paramtype">float&#160;</td>
2342 <td class="paramname"><em>qScale</em>, </td>
2343 </tr>
2344 <tr>
2345 <td class="paramkey"></td>
2346 <td></td>
2347 <td class="paramtype">int32_t&#160;</td>
2348 <td class="paramname"><em>qOffset</em>, </td>
2349 </tr>
2350 <tr>
2351 <td class="paramkey"></td>
2352 <td></td>
2353 <td class="paramtype">bool&#160;</td>
2354 <td class="paramname"><em>biasEnabled</em>, </td>
2355 </tr>
2356 <tr>
2357 <td class="paramkey"></td>
2358 <td></td>
2359 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
2360 <td class="paramname"><em>layout</em>&#160;</td>
2361 </tr>
2362 <tr>
2363 <td></td>
2364 <td>)</td>
2365 <td></td><td></td>
2366 </tr>
2367 </table>
2368</div><div class="memdoc">
2369
2370<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l01518">1518</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
2371
2372<p class="reference">References <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00019">AllocateAndCopyDataToITensorHandle()</a>, <a class="el" href="_conv2d_test_impl_8cpp_source.html#l00169">ApplyBias()</a>, <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00014">CopyDataFromITensorHandle()</a>, <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00009">CopyDataToITensorHandle()</a>, <a class="el" href="_workload_factory_8cpp_source.html#l01160">IWorkloadFactory::CreateDepthwiseConvolution2d()</a>, <a class="el" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">IWorkloadFactory::CreateTensorHandle()</a>, <a class="el" href="_tensor_8cpp_source.html#l00264">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.html#l00247">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00038">armnnUtils::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::info</a>, <a class="el" href="_workload_data_8hpp_source.html#l00192">DepthwiseConvolution2dQueueDescriptor::m_Bias</a>, <a class="el" href="_descriptors_8hpp_source.html#l00490">DepthwiseConvolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00492">DepthwiseConvolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00480">DepthwiseConvolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00474">DepthwiseConvolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00476">DepthwiseConvolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00478">DepthwiseConvolution2dDescriptor::m_PadTop</a>, <a class="el" href="_workload_data_8hpp_source.html#l00049">QueueDescriptorWithParameters&lt; LayerDescriptor &gt;::m_Parameters</a>, <a class="el" href="_descriptors_8hpp_source.html#l00482">DepthwiseConvolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00484">DepthwiseConvolution2dDescriptor::m_StrideY</a>, <a class="el" href="_workload_data_8hpp_source.html#l00191">DepthwiseConvolution2dQueueDescriptor::m_Weight</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::NHWC</a>, <a class="el" href="_permute_8cpp_source.html#l00121">armnnUtils::Permute()</a>, <a class="el" href="_tensor_8cpp_source.html#l00275">TensorInfo::SetQuantizationOffset()</a>, and <a class="el" href="_tensor_8cpp_source.html#l00259">TensorInfo::SetQuantizationScale()</a>.</p>
2373<div class="fragment"><div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160;{</div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160; <span class="keyword">using</span> <a class="code" href="_inference_test_image_8hpp.html#a65983f8cb907d873f2328bb8307c296aa9d5ed678fe57bcca610140957afab571">B</a> = <a class="code" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType&lt;ArmnnBType&gt;</a>;</div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160;</div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = 3;</div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = 3;</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels = 2;</div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputNum = 1;</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160;</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelHeight = 3;</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelWidth = 3;</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelChannels = inputChannels;</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelDepthMultiplier = 1;</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160;</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = 1;</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = 1;</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputChannels = kernelChannels;</div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputNum = inputNum;</div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160;</div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputTensorInfo =</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a>(inputNum, inputChannels, inputHeight, inputWidth, layout, ArmnnType);</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputTensorInfo =</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a>(outputNum, outputChannels, outputHeight, outputWidth, layout, ArmnnType);</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> kernelDesc({kernelDepthMultiplier, kernelChannels, kernelHeight, kernelWidth},</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; ArmnnType);</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> biasDesc({ outputChannels }, ArmnnBType);</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160;</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; <span class="comment">// Set quantization parameters if the requested type is a quantized type.</span></div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160; <span class="keywordflow">if</span>(armnn::IsQuantizedType&lt;T&gt;())</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; {</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a685739c4eb65a580e075282cfe6787d6">SetQuantizationScale</a>(qScale);</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a63cbc581012c957f9d68d224ddc3e43c">SetQuantizationOffset</a>(qOffset);</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a685739c4eb65a580e075282cfe6787d6">SetQuantizationScale</a>(qScale);</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a63cbc581012c957f9d68d224ddc3e43c">SetQuantizationOffset</a>(qOffset);</div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; kernelDesc.SetQuantizationScale(qScale);</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160; kernelDesc.SetQuantizationOffset(qOffset);</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160; biasDesc.SetQuantizationScale(qScale*qScale);</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160; biasDesc.SetQuantizationOffset(0);</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160; }</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; std::vector&lt;T&gt; inputData = std::vector&lt;T&gt;(</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160; QuantizedVector&lt;T&gt;({</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160; 1.f, 2.f, 1.f,</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160; 2.f, 1.f, 2.f,</div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160; 1.f, 2.f, 1.f,</div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160;</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160; 1.f, 2.f, 1.f,</div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160; 2.f, 1.f, 2.f,</div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160; 1.f, 2.f, 1.f,</div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160; },</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160; inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a047ca888c43bd7fb5702853bf72410d0">GetQuantizationScale</a>(),</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a770b51078da02f44a819e9f95d8058b5">GetQuantizationOffset</a>()));</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160;</div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160; <span class="comment">// at this point if we require it permute the input data</span></div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a> NCHWToNHWC = { 0, 3, 1, 2 };</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160; <span class="keywordflow">if</span> (layout == <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a>)</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160; {</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160; std::vector&lt;T&gt; tmp(inputData.size());</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160; <a class="code" href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a>(inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>(), NCHWToNHWC, inputData.data(), tmp.data(), <span class="keyword">sizeof</span>(T));</div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160; inputData = tmp;</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160; }</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; <span class="keyword">auto</span> input = MakeTensor&lt;T, 4&gt;(inputTensorInfo, inputData);</div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160;</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; std::vector&lt;B&gt; biasV(QuantizedVector&lt;B&gt;({ 0, 2 },</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; biasDesc.GetQuantizationScale(),</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160; biasDesc.GetQuantizationOffset()));</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160;</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160; <span class="keyword">auto</span> bias = MakeTensor&lt;B, 1&gt;(biasDesc, biasV);</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160;</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; std::vector&lt;T&gt; kernelData = std::vector&lt;T&gt;(</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160; QuantizedVector&lt;T&gt;({</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; 1.f, 0.f, 1.f,</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; 0.f, 0.f, 0.f,</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160; -1.f, 0.f, -1.f,</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160;</div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160; 1.f, 0.f, 1.f,</div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160; 0.f, 0.f, 0.f,</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160; -1.f, 0.f, -1.f,</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160; },</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160; kernelDesc.GetQuantizationScale(),</div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; kernelDesc.GetQuantizationOffset()));</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160;</div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160; <span class="keyword">auto</span> kernel = MakeTensor&lt;T, 4&gt;(kernelDesc, kernelData);</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160;</div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160; <span class="comment">// Manually calculated.</span></div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; std::vector&lt;T&gt; outputImage(</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; QuantizedVector&lt;T&gt;({ 0.f, 0.f },</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a047ca888c43bd7fb5702853bf72410d0">GetQuantizationScale</a>(),</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160; outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a770b51078da02f44a819e9f95d8058b5">GetQuantizationOffset</a>())</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160; );</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160;</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160; <span class="comment">// Optionally apply bias to output image.</span></div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160; <span class="keywordflow">if</span>(biasEnabled)</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; {</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160; <a class="code" href="_conv2d_test_impl_8cpp.html#aa1f4ce02e0904dc8cf1b7f42bc34d346">ApplyBias</a>(outputImage, outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a047ca888c43bd7fb5702853bf72410d0">GetQuantizationScale</a>(), outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a770b51078da02f44a819e9f95d8058b5">GetQuantizationOffset</a>(),</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160; biasV, biasDesc.GetQuantizationScale(), biasDesc.GetQuantizationOffset(),</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160; outputWidth, outputHeight);</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160; }</div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160;</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160; <a class="code" href="struct_layer_test_result.html">LayerTestResult&lt;T, 4&gt;</a> ret(outputTensorInfo);</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; <span class="keywordflow">if</span> (layout == <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a>)</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; {</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160; std::vector&lt;T&gt; tmp(outputImage.size());</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; <a class="code" href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a>(outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>(), NCHWToNHWC, outputImage.data(), tmp.data(), <span class="keyword">sizeof</span>(T));</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160; outputImage = tmp;</div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160; }</div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160;</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; ret.outputExpected = MakeTensor&lt;T, 4&gt;(outputTensorInfo, outputImage);</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160;</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160; std::unique_ptr&lt;armnn::ITensorHandle&gt; inputHandle = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">CreateTensorHandle</a>(inputTensorInfo);</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160; std::unique_ptr&lt;armnn::ITensorHandle&gt; outputHandle = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">CreateTensorHandle</a>(outputTensorInfo);</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160; <a class="code" href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html">armnn::DepthwiseConvolution2dQueueDescriptor</a> data;</div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160; <a class="code" href="structarmnn_1_1_workload_info.html">armnn::WorkloadInfo</a> <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>;</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160; <a class="code" href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a> weightsTensor(kernelDesc);</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160; <a class="code" href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a> biasTensor(biasDesc);</div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160;</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a>(&amp;weightsTensor, &amp;kernel[0][0][0][0]);</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a>(&amp;biasTensor, &amp;bias[0]);</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160;</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160; AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160; AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160;</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; data.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html#a3369b66d9316a773a41711e3f590c041">m_Weight</a> = &amp;weightsTensor;</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; data.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html#ab3437cee6b0687812104fc1b37cbe8b3">m_Bias</a> = &amp;biasTensor; <span class="comment">// Still set this whether or not bias is enabled.</span></div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#afe6a3377c4531315354def9023c8fdda">m_StrideX</a> = 1;</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#ac1fe174bbadfb39a2b636940c2e647c8">m_StrideY</a> = 1;</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#ac18546ebbebbb32fe0a03baa9bf2c600">m_PadLeft</a> = 0;</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a002bc30e590d78cbb4f4d12171055ca7">m_PadRight</a> = 0;</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a56b51f56cef50cdfa554258eecdab046">m_PadTop</a> = 0;</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aa9e49717ebdb741e8c767741647fc618">m_PadBottom</a> = 0;</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aea202e14d8874cefd9a0f778022b7e25">m_BiasEnabled</a> = biasEnabled;</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a> = layout;</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160;</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160; std::unique_ptr&lt;armnn::IWorkload&gt; workload = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#accb9759dfd2880efe0f8d2705ddee448">CreateDepthwiseConvolution2d</a>(data, info);</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160; inputHandle-&gt;Allocate();</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160; outputHandle-&gt;Allocate();</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160;</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a>(inputHandle.get(), &amp;input[0][0][0][0]);</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160;</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; ExecuteWorkload(*workload, memoryManager);</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160;</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a>(&amp;ret.output[0][0][0][0], outputHandle.get());</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160;</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_i_workload_factory_html_accb9759dfd2880efe0f8d2705ddee448"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.html#accb9759dfd2880efe0f8d2705ddee448">armnn::IWorkloadFactory::CreateDepthwiseConvolution2d</a></div><div class="ttdeci">virtual std::unique_ptr&lt; IWorkload &gt; CreateDepthwiseConvolution2d(const DepthwiseConvolution2dQueueDescriptor &amp;descriptor, const WorkloadInfo &amp;info) const</div><div class="ttdef"><b>Definition:</b> <a href="_workload_factory_8cpp_source.html#l01160">WorkloadFactory.cpp:1160</a></div></div>
2374<div class="ttc" id="_tensor_copy_utils_8cpp_html_afaaca8c3f3a467d124bba44067d2afa8"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a></div><div class="ttdeci">void AllocateAndCopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00019">TensorCopyUtils.cpp:19</a></div></div>
2375<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_afe6a3377c4531315354def9023c8fdda"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#afe6a3377c4531315354def9023c8fdda">armnn::DepthwiseConvolution2dDescriptor::m_StrideX</a></div><div class="ttdeci">uint32_t m_StrideX</div><div class="ttdoc">Stride value when proceeding through input for the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00482">Descriptors.hpp:482</a></div></div>
2376<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_aa9e49717ebdb741e8c767741647fc618"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aa9e49717ebdb741e8c767741647fc618">armnn::DepthwiseConvolution2dDescriptor::m_PadBottom</a></div><div class="ttdeci">uint32_t m_PadBottom</div><div class="ttdoc">Padding bottom value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00480">Descriptors.hpp:480</a></div></div>
2377<div class="ttc" id="_conv2d_test_impl_8cpp_html_aa1f4ce02e0904dc8cf1b7f42bc34d346"><div class="ttname"><a href="_conv2d_test_impl_8cpp.html#aa1f4ce02e0904dc8cf1b7f42bc34d346">ApplyBias</a></div><div class="ttdeci">void ApplyBias(std::vector&lt; T &gt; &amp;v, float vScale, int32_t vOffset, const std::vector&lt; B &gt; &amp;bias, float bScale, int32_t bOffset, uint32_t w, uint32_t h)</div><div class="ttdef"><b>Definition:</b> <a href="_conv2d_test_impl_8cpp_source.html#l00169">Conv2dTestImpl.cpp:169</a></div></div>
2378<div class="ttc" id="classarmnn_1_1_tensor_info_html_a770b51078da02f44a819e9f95d8058b5"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a770b51078da02f44a819e9f95d8058b5">armnn::TensorInfo::GetQuantizationOffset</a></div><div class="ttdeci">int32_t GetQuantizationOffset() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00264">Tensor.cpp:264</a></div></div>
2379<div class="ttc" id="namespacearmnn_utils_html_af3c74017185773dd61d8ca6662d65d43"><div class="ttname"><a href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a></div><div class="ttdeci">void Permute(const armnn::TensorShape &amp;dstShape, const armnn::PermutationVector &amp;mappings, const void *src, void *dst, size_t dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="_permute_8cpp_source.html#l00121">Permute.cpp:121</a></div></div>
2380<div class="ttc" id="_tensor_copy_utils_8cpp_html_ae15f1a3c55d2db87683577de9fa4437c"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a></div><div class="ttdeci">void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00009">TensorCopyUtils.cpp:9</a></div></div>
2381<div class="ttc" id="classarmnn_1_1_permutation_vector_html"><div class="ttname"><a href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a></div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00170">Types.hpp:170</a></div></div>
2382<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_ac18546ebbebbb32fe0a03baa9bf2c600"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#ac18546ebbebbb32fe0a03baa9bf2c600">armnn::DepthwiseConvolution2dDescriptor::m_PadLeft</a></div><div class="ttdeci">uint32_t m_PadLeft</div><div class="ttdoc">Padding left value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00474">Descriptors.hpp:474</a></div></div>
2383<div class="ttc" id="namespacearmnn_utils_html_acee63cd08da47910fc166a1990988fa8"><div class="ttname"><a href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00038">TensorUtils.cpp:38</a></div></div>
2384<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
2385<div class="ttc" id="structarmnn_1_1_queue_descriptor_with_parameters_html_aad91b9bbf7aa365d304febe79a3d1333"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">armnn::QueueDescriptorWithParameters::m_Parameters</a></div><div class="ttdeci">LayerDescriptor m_Parameters</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00049">WorkloadData.hpp:49</a></div></div>
2386<div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
2387<div class="ttc" id="classarmnn_1_1_i_workload_factory_html_a15c140be4ddceffee16436f009d3ed94"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">armnn::IWorkloadFactory::CreateTensorHandle</a></div><div class="ttdeci">virtual std::unique_ptr&lt; ITensorHandle &gt; CreateTensorHandle(const TensorInfo &amp;tensorInfo, const bool IsMemoryManaged=true) const =0</div></div>
2388<div class="ttc" id="struct_layer_test_result_html"><div class="ttname"><a href="struct_layer_test_result.html">LayerTestResult</a></div><div class="ttdef"><b>Definition:</b> <a href="_layer_test_result_8hpp_source.html#l00029">LayerTestResult.hpp:29</a></div></div>
2389<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_queue_descriptor_html_ab3437cee6b0687812104fc1b37cbe8b3"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html#ab3437cee6b0687812104fc1b37cbe8b3">armnn::DepthwiseConvolution2dQueueDescriptor::m_Bias</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_Bias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00192">WorkloadData.hpp:192</a></div></div>
2390<div class="ttc" id="_tensor_copy_utils_8cpp_html_a99b626c58a926dc7d6df78d22ec186c8"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a></div><div class="ttdeci">void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00014">TensorCopyUtils.cpp:14</a></div></div>
2391<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">armnn::DepthwiseConvolution2dDescriptor::m_DataLayout</a></div><div class="ttdeci">DataLayout m_DataLayout</div><div class="ttdoc">The data layout to be used (NCHW, NHWC). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00492">Descriptors.hpp:492</a></div></div>
2392<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_a56b51f56cef50cdfa554258eecdab046"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a56b51f56cef50cdfa554258eecdab046">armnn::DepthwiseConvolution2dDescriptor::m_PadTop</a></div><div class="ttdeci">uint32_t m_PadTop</div><div class="ttdoc">Padding top value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00478">Descriptors.hpp:478</a></div></div>
2393<div class="ttc" id="structarmnn_1_1_workload_info_html"><div class="ttname"><a href="structarmnn_1_1_workload_info.html">armnn::WorkloadInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_workload_info_8hpp_source.html#l00016">WorkloadInfo.hpp:16</a></div></div>
2394<div class="ttc" id="namespacearmnn_html_a0743ed5e860c316a20b68ca96301b411"><div class="ttname"><a href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a></div><div class="ttdeci">typename ResolveTypeImpl&lt; DT &gt;::Type ResolveType</div><div class="ttdef"><b>Definition:</b> <a href="_resolve_type_8hpp_source.html#l00066">ResolveType.hpp:66</a></div></div>
2395<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_queue_descriptor_html_a3369b66d9316a773a41711e3f590c041"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html#a3369b66d9316a773a41711e3f590c041">armnn::DepthwiseConvolution2dQueueDescriptor::m_Weight</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_Weight</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00191">WorkloadData.hpp:191</a></div></div>
2396<div class="ttc" id="_inference_test_image_8hpp_html_a65983f8cb907d873f2328bb8307c296aa9d5ed678fe57bcca610140957afab571"><div class="ttname"><a href="_inference_test_image_8hpp.html#a65983f8cb907d873f2328bb8307c296aa9d5ed678fe57bcca610140957afab571">ImageChannel::B</a></div></div>
2397<div class="ttc" id="classarmnn_1_1_tensor_info_html_a685739c4eb65a580e075282cfe6787d6"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a685739c4eb65a580e075282cfe6787d6">armnn::TensorInfo::SetQuantizationScale</a></div><div class="ttdeci">void SetQuantizationScale(float scale)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00259">Tensor.cpp:259</a></div></div>
2398<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_aea202e14d8874cefd9a0f778022b7e25"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aea202e14d8874cefd9a0f778022b7e25">armnn::DepthwiseConvolution2dDescriptor::m_BiasEnabled</a></div><div class="ttdeci">bool m_BiasEnabled</div><div class="ttdoc">Enable/disable bias. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00490">Descriptors.hpp:490</a></div></div>
2399<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_queue_descriptor_html"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html">armnn::DepthwiseConvolution2dQueueDescriptor</a></div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00183">WorkloadData.hpp:183</a></div></div>
2400<div class="ttc" id="classarmnn_1_1_tensor_info_html_a63cbc581012c957f9d68d224ddc3e43c"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a63cbc581012c957f9d68d224ddc3e43c">armnn::TensorInfo::SetQuantizationOffset</a></div><div class="ttdeci">void SetQuantizationOffset(int32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00275">Tensor.cpp:275</a></div></div>
2401<div class="ttc" id="classarmnn_1_1_scoped_cpu_tensor_handle_html"><div class="ttname"><a href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a></div><div class="ttdef"><b>Definition:</b> <a href="_cpu_tensor_handle_8hpp_source.html#l00106">CpuTensorHandle.hpp:106</a></div></div>
2402<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">armnn::TensorInfo::GetShape</a></div><div class="ttdeci">const TensorShape &amp; GetShape() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00088">Tensor.hpp:88</a></div></div>
2403<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_ac1fe174bbadfb39a2b636940c2e647c8"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#ac1fe174bbadfb39a2b636940c2e647c8">armnn::DepthwiseConvolution2dDescriptor::m_StrideY</a></div><div class="ttdeci">uint32_t m_StrideY</div><div class="ttdoc">Stride value when proceeding through input for the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00484">Descriptors.hpp:484</a></div></div>
2404<div class="ttc" id="classarmnn_1_1_tensor_info_html_a047ca888c43bd7fb5702853bf72410d0"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a047ca888c43bd7fb5702853bf72410d0">armnn::TensorInfo::GetQuantizationScale</a></div><div class="ttdeci">float GetQuantizationScale() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00247">Tensor.cpp:247</a></div></div>
2405<div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a></div></div>
2406<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_a002bc30e590d78cbb4f4d12171055ca7"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a002bc30e590d78cbb4f4d12171055ca7">armnn::DepthwiseConvolution2dDescriptor::m_PadRight</a></div><div class="ttdeci">uint32_t m_PadRight</div><div class="ttdoc">Padding right value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00476">Descriptors.hpp:476</a></div></div>
2407</div><!-- fragment -->
2408</div>
2409</div>
2410<a id="ae797be34b659db2afe183f0c762fb9b7"></a>
2411<h2 class="memtitle"><span class="permalink"><a href="#ae797be34b659db2afe183f0c762fb9b7">&#9670;&nbsp;</a></span>DepthwiseConvolution2dDepthMul1Uint8Test()</h2>
2412
2413<div class="memitem">
2414<div class="memproto">
2415 <table class="memname">
2416 <tr>
2417 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;uint8_t, 4&gt; DepthwiseConvolution2dDepthMul1Uint8Test </td>
2418 <td>(</td>
2419 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
2420 <td class="paramname"><em>workloadFactory</em>, </td>
2421 </tr>
2422 <tr>
2423 <td class="paramkey"></td>
2424 <td></td>
2425 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
2426 <td class="paramname"><em>memoryManager</em>, </td>
2427 </tr>
2428 <tr>
2429 <td class="paramkey"></td>
2430 <td></td>
2431 <td class="paramtype">bool&#160;</td>
2432 <td class="paramname"><em>biasEnabled</em>, </td>
2433 </tr>
2434 <tr>
2435 <td class="paramkey"></td>
2436 <td></td>
2437 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
2438 <td class="paramname"><em>layout</em>&#160;</td>
2439 </tr>
2440 <tr>
2441 <td></td>
2442 <td>)</td>
2443 <td></td><td></td>
2444 </tr>
2445 </table>
2446</div><div class="memdoc">
2447
2448<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l03226">3226</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
2449<div class="fragment"><div class="line"><a name="l03231"></a><span class="lineno"> 3231</span>&#160;{</div><div class="line"><a name="l03232"></a><span class="lineno"> 3232</span>&#160; <span class="keywordflow">return</span> DepthwiseConvolution2dDepthMul1TestImpl&lt;armnn::DataType::QAsymmU8, armnn::DataType::Signed32&gt;(</div><div class="line"><a name="l03233"></a><span class="lineno"> 3233</span>&#160; workloadFactory, memoryManager, 0.5f, 50, biasEnabled, layout);</div><div class="line"><a name="l03234"></a><span class="lineno"> 3234</span>&#160;}</div></div><!-- fragment -->
2450</div>
2451</div>
2452<a id="ab020b4a99bf905b61a1c5e03332b63a6"></a>
2453<h2 class="memtitle"><span class="permalink"><a href="#ab020b4a99bf905b61a1c5e03332b63a6">&#9670;&nbsp;</a></span>DepthwiseConvolution2dDepthMul64Test()</h2>
2454
2455<div class="memitem">
2456<div class="memproto">
2457 <table class="memname">
2458 <tr>
2459 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;float, 4&gt; DepthwiseConvolution2dDepthMul64Test </td>
2460 <td>(</td>
2461 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
2462 <td class="paramname"><em>workloadFactory</em>, </td>
2463 </tr>
2464 <tr>
2465 <td class="paramkey"></td>
2466 <td></td>
2467 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
2468 <td class="paramname"><em>memoryManager</em>&#160;</td>
2469 </tr>
2470 <tr>
2471 <td></td>
2472 <td>)</td>
2473 <td></td><td></td>
2474 </tr>
2475 </table>
2476</div><div class="memdoc">
2477
2478<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l03174">3174</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
2479
2480<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::Float32</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::NCHW</a>.</p>
2481<div class="fragment"><div class="line"><a name="l03177"></a><span class="lineno"> 3177</span>&#160;{</div><div class="line"><a name="l03178"></a><span class="lineno"> 3178</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputTensorInfo({ 1, 1, 2, 2 }, <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>);</div><div class="line"><a name="l03179"></a><span class="lineno"> 3179</span>&#160; <span class="keyword">auto</span> input = MakeTensor&lt;float, 4&gt;(inputTensorInfo, { 1.f, 2.f, 3.f, 4.f });</div><div class="line"><a name="l03180"></a><span class="lineno"> 3180</span>&#160;</div><div class="line"><a name="l03181"></a><span class="lineno"> 3181</span>&#160; std::vector&lt;float&gt; kernelData;</div><div class="line"><a name="l03182"></a><span class="lineno"> 3182</span>&#160; std::vector&lt;float&gt; singleDepthKernel{ 1.f, -1.f, -1.f, 1.f };</div><div class="line"><a name="l03183"></a><span class="lineno"> 3183</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; 64; ++i)</div><div class="line"><a name="l03184"></a><span class="lineno"> 3184</span>&#160; {</div><div class="line"><a name="l03185"></a><span class="lineno"> 3185</span>&#160; kernelData.insert(kernelData.end(), singleDepthKernel.begin(), singleDepthKernel.end());</div><div class="line"><a name="l03186"></a><span class="lineno"> 3186</span>&#160; }</div><div class="line"><a name="l03187"></a><span class="lineno"> 3187</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> kernelTensorInfo({ 64, 1, 2, 2 }, <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>);</div><div class="line"><a name="l03188"></a><span class="lineno"> 3188</span>&#160; <span class="keyword">auto</span> kernel = MakeTensor&lt;float, 4&gt;(kernelTensorInfo, kernelData);</div><div class="line"><a name="l03189"></a><span class="lineno"> 3189</span>&#160;</div><div class="line"><a name="l03190"></a><span class="lineno"> 3190</span>&#160; std::vector&lt;float&gt; expectedOutputData(64, 0.f);</div><div class="line"><a name="l03191"></a><span class="lineno"> 3191</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputTensorInfo({ 1, 64, 1, 1 }, <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>);</div><div class="line"><a name="l03192"></a><span class="lineno"> 3192</span>&#160; <span class="keyword">auto</span> expectedOutput = MakeTensor&lt;float, 4&gt;(outputTensorInfo, expectedOutputData);</div><div class="line"><a name="l03193"></a><span class="lineno"> 3193</span>&#160;</div><div class="line"><a name="l03194"></a><span class="lineno"> 3194</span>&#160; <span class="keywordflow">return</span> DepthwiseConvolution2dTestImpl&lt;armnn::DataType::Float32, armnn::DataType::Float32&gt;(</div><div class="line"><a name="l03195"></a><span class="lineno"> 3195</span>&#160; workloadFactory,</div><div class="line"><a name="l03196"></a><span class="lineno"> 3196</span>&#160; memoryManager,</div><div class="line"><a name="l03197"></a><span class="lineno"> 3197</span>&#160; input,</div><div class="line"><a name="l03198"></a><span class="lineno"> 3198</span>&#160; kernel,</div><div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>&#160; boost::multi_array&lt;float, 1&gt;(),</div><div class="line"><a name="l03200"></a><span class="lineno"> 3200</span>&#160; expectedOutput,</div><div class="line"><a name="l03201"></a><span class="lineno"> 3201</span>&#160; 0.f,</div><div class="line"><a name="l03202"></a><span class="lineno"> 3202</span>&#160; 0,</div><div class="line"><a name="l03203"></a><span class="lineno"> 3203</span>&#160; <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a>);</div><div class="line"><a name="l03204"></a><span class="lineno"> 3204</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></div></div>
2482<div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
2483<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
2484</div><!-- fragment -->
2485</div>
2486</div>
2487<a id="a0cccb5cffee89004bc8d9fb309ed6636"></a>
2488<h2 class="memtitle"><span class="permalink"><a href="#a0cccb5cffee89004bc8d9fb309ed6636">&#9670;&nbsp;</a></span>DepthwiseConvolution2dDepthNhwcTest()</h2>
2489
2490<div class="memitem">
2491<div class="memproto">
2492 <table class="memname">
2493 <tr>
2494 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;float, 4&gt; DepthwiseConvolution2dDepthNhwcTest </td>
2495 <td>(</td>
2496 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
2497 <td class="paramname"><em>workloadFactory</em>, </td>
2498 </tr>
2499 <tr>
2500 <td class="paramkey"></td>
2501 <td></td>
2502 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
2503 <td class="paramname"><em>memoryManager</em>, </td>
2504 </tr>
2505 <tr>
2506 <td class="paramkey"></td>
2507 <td></td>
2508 <td class="paramtype">bool&#160;</td>
2509 <td class="paramname"><em>biasEnabled</em>&#160;</td>
2510 </tr>
2511 <tr>
2512 <td></td>
2513 <td>)</td>
2514 <td></td><td></td>
2515 </tr>
2516 </table>
2517</div><div class="memdoc">
2518
2519<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l03155">3155</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
2520<div class="fragment"><div class="line"><a name="l03159"></a><span class="lineno"> 3159</span>&#160;{</div><div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>&#160; <span class="keywordflow">return</span> DepthwiseConvolution2dNhwcTestCommon&lt;armnn::DataType::Float32, armnn::DataType::Float32&gt;(</div><div class="line"><a name="l03161"></a><span class="lineno"> 3161</span>&#160; workloadFactory, memoryManager, 0.0f, 0, biasEnabled);</div><div class="line"><a name="l03162"></a><span class="lineno"> 3162</span>&#160;}</div></div><!-- fragment -->
2521</div>
2522</div>
2523<a id="a2ae97c2dd6621f4972c571cf1ec2a005"></a>
2524<h2 class="memtitle"><span class="permalink"><a href="#a2ae97c2dd6621f4972c571cf1ec2a005">&#9670;&nbsp;</a></span>DepthwiseConvolution2dInt16Test()</h2>
2525
2526<div class="memitem">
2527<div class="memproto">
2528 <table class="memname">
2529 <tr>
2530 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;int16_t, 4&gt; DepthwiseConvolution2dInt16Test </td>
2531 <td>(</td>
2532 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
2533 <td class="paramname"><em>workloadFactory</em>, </td>
2534 </tr>
2535 <tr>
2536 <td class="paramkey"></td>
2537 <td></td>
2538 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
2539 <td class="paramname"><em>memoryManager</em>, </td>
2540 </tr>
2541 <tr>
2542 <td class="paramkey"></td>
2543 <td></td>
2544 <td class="paramtype">bool&#160;</td>
2545 <td class="paramname"><em>biasEnabled</em>, </td>
2546 </tr>
2547 <tr>
2548 <td class="paramkey"></td>
2549 <td></td>
2550 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
2551 <td class="paramname"><em>layout</em>&#160;</td>
2552 </tr>
2553 <tr>
2554 <td></td>
2555 <td>)</td>
2556 <td></td><td></td>
2557 </tr>
2558 </table>
2559</div><div class="memdoc">
2560
2561<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l03248">3248</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
2562<div class="fragment"><div class="line"><a name="l03253"></a><span class="lineno"> 3253</span>&#160;{</div><div class="line"><a name="l03254"></a><span class="lineno"> 3254</span>&#160; <span class="keywordflow">return</span> DepthwiseConvolution2dTestImpl&lt;armnn::DataType::QSymmS16, armnn::DataType::Signed32&gt;(</div><div class="line"><a name="l03255"></a><span class="lineno"> 3255</span>&#160; workloadFactory, memoryManager, 0.5f, 50, biasEnabled, layout);</div><div class="line"><a name="l03256"></a><span class="lineno"> 3256</span>&#160;}</div></div><!-- fragment -->
2563</div>
2564</div>
2565<a id="aaed50a372a6b59b20e38469856a3ce6b"></a>
2566<h2 class="memtitle"><span class="permalink"><a href="#aaed50a372a6b59b20e38469856a3ce6b">&#9670;&nbsp;</a></span>DepthwiseConvolution2dMult2Test()</h2>
2567
2568<div class="memitem">
2569<div class="memproto">
2570 <table class="memname">
2571 <tr>
2572 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T, 4&gt; DepthwiseConvolution2dMult2Test </td>
2573 <td>(</td>
2574 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
2575 <td class="paramname"><em>workloadFactory</em>, </td>
2576 </tr>
2577 <tr>
2578 <td class="paramkey"></td>
2579 <td></td>
2580 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
2581 <td class="paramname"><em>memoryManager</em>, </td>
2582 </tr>
2583 <tr>
2584 <td class="paramkey"></td>
2585 <td></td>
2586 <td class="paramtype">bool&#160;</td>
2587 <td class="paramname"><em>biasEnabled</em>, </td>
2588 </tr>
2589 <tr>
2590 <td class="paramkey"></td>
2591 <td></td>
2592 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
2593 <td class="paramname"><em>layout</em>&#160;</td>
2594 </tr>
2595 <tr>
2596 <td></td>
2597 <td>)</td>
2598 <td></td><td></td>
2599 </tr>
2600 </table>
2601</div><div class="memdoc">
2602
2603<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l02600">2600</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
2604<div class="fragment"><div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>&#160;{</div><div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputTensorInfo({1, 2, 3, 3}, ArmnnType);</div><div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>&#160; std::vector&lt;float&gt; inputNoQuantizedValues =</div><div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>&#160; {</div><div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>&#160; 10.0, 10.0, 10.0,</div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>&#160; 10.0, 10.0, 10.0,</div><div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>&#160; 10.0, 10.0, 10.0,</div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>&#160;</div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>&#160; 21.0, 22.0, 23.0,</div><div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>&#160; 24.0, 25.0, 26.0,</div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>&#160; 27.0, 28.0, 29.0</div><div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>&#160; };</div><div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>&#160;</div><div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> kernelTensorInfo({ 2, 2, 2, 2}, ArmnnType);</div><div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>&#160;</div><div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>&#160; std::vector&lt;float&gt; kernelNoQuantizedValues =</div><div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>&#160; {</div><div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>&#160; 0.25f, 0.25f,</div><div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>&#160; 0.25f, 0.25f,</div><div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>&#160;</div><div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>&#160; 0.2f , 0.0f,</div><div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>&#160; 0.0f , 0.0f,</div><div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>&#160;</div><div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>&#160; 0.0f , 0.0f,</div><div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>&#160; 0.0f , 0.1f,</div><div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>&#160;</div><div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>&#160; 0.0f , 0.3f,</div><div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>&#160; 0.0f , 0.0f</div><div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>&#160;</div><div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>&#160; };</div><div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>&#160;</div><div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputTensorInfo({ 1, 4, 2, 2}, ArmnnType);</div><div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>&#160; std::vector&lt;float&gt; outputExpectedNoQuantizedValues =</div><div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>&#160; {</div><div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>&#160; 10.f, 10.f,</div><div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>&#160; 10.f, 10.f,</div><div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>&#160;</div><div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>&#160; 1.f, 1.f,</div><div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>&#160; 1.f, 1.f,</div><div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>&#160;</div><div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>&#160; 4.2000003f, 4.4f,</div><div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>&#160; 4.8f, 5.f,</div><div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>&#160;</div><div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>&#160; 6.6000004f, 6.9f,</div><div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>&#160; 7.5000005f, 7.8f</div><div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>&#160; };</div><div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>&#160;</div><div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>&#160;</div><div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>&#160; <span class="keywordflow">return</span> DepthwiseConvolution2d3x3DilationTestCommon&lt;ArmnnType, ArmnnBType&gt;(</div><div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>&#160; workloadFactory,</div><div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>&#160; memoryManager,</div><div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>&#160; inputNoQuantizedValues,</div><div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>&#160; inputTensorInfo,</div><div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>&#160; kernelNoQuantizedValues,</div><div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>&#160; kernelTensorInfo,</div><div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>&#160; outputExpectedNoQuantizedValues,</div><div class="line"><a name="l02661"></a><span class="lineno"> 2661</span>&#160; outputTensorInfo,</div><div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>&#160; 1,</div><div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>&#160; 1,</div><div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>&#160; layout,</div><div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>&#160; biasEnabled);</div><div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
2605</div><!-- fragment -->
2606</div>
2607</div>
2608<a id="a3097119efa3acd563c309feec628b233"></a>
2609<h2 class="memtitle"><span class="permalink"><a href="#a3097119efa3acd563c309feec628b233">&#9670;&nbsp;</a></span>DepthwiseConvolution2dMult2Test< armnn::DataType::Float32, armnn::DataType::Float32 >()</h2>
2610
2611<div class="memitem">
2612<div class="memproto">
2613 <table class="memname">
2614 <tr>
2615 <td class="memname">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;<a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>&gt;, 4&gt; <a class="el" href="_conv2d_test_impl_8hpp.html#aaed50a372a6b59b20e38469856a3ce6b">DepthwiseConvolution2dMult2Test</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a> &gt; </td>
2616 <td>(</td>
2617 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
2618 <td class="paramname"><em>workloadFactory</em>, </td>
2619 </tr>
2620 <tr>
2621 <td class="paramkey"></td>
2622 <td></td>
2623 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
2624 <td class="paramname"><em>memoryManager</em>, </td>
2625 </tr>
2626 <tr>
2627 <td class="paramkey"></td>
2628 <td></td>
2629 <td class="paramtype">bool&#160;</td>
2630 <td class="paramname"><em>biasEnabled</em>, </td>
2631 </tr>
2632 <tr>
2633 <td class="paramkey"></td>
2634 <td></td>
2635 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
2636 <td class="paramname"><em>layout</em>&#160;</td>
2637 </tr>
2638 <tr>
2639 <td></td>
2640 <td>)</td>
2641 <td></td><td></td>
2642 </tr>
2643 </table>
2644</div><div class="memdoc">
2645
2646</div>
2647</div>
2648<a id="a0da6534b3a5d2f923dcd73553950129a"></a>
2649<h2 class="memtitle"><span class="permalink"><a href="#a0da6534b3a5d2f923dcd73553950129a">&#9670;&nbsp;</a></span>DepthwiseConvolution2dMult4Test()</h2>
2650
2651<div class="memitem">
2652<div class="memproto">
2653 <table class="memname">
2654 <tr>
2655 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T, 4&gt; DepthwiseConvolution2dMult4Test </td>
2656 <td>(</td>
2657 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
2658 <td class="paramname"><em>workloadFactory</em>, </td>
2659 </tr>
2660 <tr>
2661 <td class="paramkey"></td>
2662 <td></td>
2663 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
2664 <td class="paramname"><em>memoryManager</em>, </td>
2665 </tr>
2666 <tr>
2667 <td class="paramkey"></td>
2668 <td></td>
2669 <td class="paramtype">bool&#160;</td>
2670 <td class="paramname"><em>biasEnabled</em>, </td>
2671 </tr>
2672 <tr>
2673 <td class="paramkey"></td>
2674 <td></td>
2675 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
2676 <td class="paramname"><em>layout</em>&#160;</td>
2677 </tr>
2678 <tr>
2679 <td></td>
2680 <td>)</td>
2681 <td></td><td></td>
2682 </tr>
2683 </table>
2684</div><div class="memdoc">
2685
2686<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l02508">2508</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
2687<div class="fragment"><div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>&#160;{</div><div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputTensorInfo({1, 2, 3, 3}, ArmnnType);</div><div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>&#160; std::vector&lt;float&gt; inputNoQuantizedValues =</div><div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>&#160; {</div><div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>&#160; 10.0, 10.0, 10.0,</div><div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>&#160; 10.0, 10.0, 10.0,</div><div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>&#160; 10.0, 10.0, 10.0,</div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>&#160;</div><div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>&#160; 21.0, 22.0, 23.0,</div><div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>&#160; 24.0, 25.0, 26.0,</div><div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>&#160; 27.0, 28.0, 29.0</div><div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>&#160; };</div><div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>&#160;</div><div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> kernelTensorInfo({ 4, 2, 2, 2}, ArmnnType);</div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>&#160;</div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>&#160; std::vector&lt;float&gt; kernelNoQuantizedValues =</div><div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>&#160; {</div><div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>&#160; 0.25f, 0.25f,</div><div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>&#160; 0.25f, 0.25f,</div><div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>&#160;</div><div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>&#160; 0.25f, 0.25f,</div><div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>&#160; 0.25f, 0.25f,</div><div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>&#160;</div><div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>&#160; 0.0f , 0.0f,</div><div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>&#160; 0.0f , 0.1f,</div><div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>&#160;</div><div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>&#160; 0.0f , 0.0f,</div><div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>&#160; 0.0f , 0.1f,</div><div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>&#160;</div><div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>&#160; 0.2f , 0.0f,</div><div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>&#160; 0.0f , 0.0f,</div><div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>&#160;</div><div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>&#160; 0.2f , 0.0f,</div><div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>&#160; 0.0f , 0.0f,</div><div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>&#160;</div><div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>&#160; 0.0f , 0.3f,</div><div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>&#160; 0.0f , 0.0f,</div><div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>&#160;</div><div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>&#160; 0.0f , 0.3f,</div><div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>&#160; 0.0f , 0.0f</div><div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>&#160; };</div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>&#160;</div><div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputTensorInfo({ 1, 8, 2, 2}, ArmnnType);</div><div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>&#160; std::vector&lt;float&gt; outputExpectedNoQuantizedValues =</div><div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>&#160; {</div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>&#160; 10.f, 10.f,</div><div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>&#160; 10.f, 10.f,</div><div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>&#160;</div><div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>&#160; 1.f, 1.f,</div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>&#160; 1.f, 1.f,</div><div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>&#160;</div><div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>&#160; 2.f, 2.f,</div><div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>&#160; 2.f, 2.f,</div><div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>&#160;</div><div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>&#160; 3.f, 3.f,</div><div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>&#160; 3.f, 3.f,</div><div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>&#160;</div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>&#160; 23.f, 24.f,</div><div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>&#160; 26.f, 27.f,</div><div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>&#160;</div><div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>&#160; 2.5f, 2.6000001f,</div><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>&#160; 2.8f, 2.9f,</div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>&#160;</div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>&#160; 4.2000003f, 4.4f,</div><div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>&#160; 4.8f, 5.f,</div><div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>&#160;</div><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>&#160; 6.6000004f, 6.9f,</div><div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>&#160; 7.5000005f, 7.8f</div><div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>&#160; };</div><div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>&#160;</div><div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>&#160;</div><div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>&#160; <span class="keywordflow">return</span> DepthwiseConvolution2d3x3DilationTestCommon&lt;ArmnnType, ArmnnBType&gt;(</div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>&#160; workloadFactory,</div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>&#160; memoryManager,</div><div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>&#160; inputNoQuantizedValues,</div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>&#160; inputTensorInfo,</div><div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>&#160; kernelNoQuantizedValues,</div><div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>&#160; kernelTensorInfo,</div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>&#160; outputExpectedNoQuantizedValues,</div><div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>&#160; outputTensorInfo,</div><div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>&#160; 1,</div><div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>&#160; 1,</div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>&#160; layout,</div><div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>&#160; biasEnabled);</div><div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
2688</div><!-- fragment -->
2689</div>
2690</div>
2691<a id="a52590a78e77f52f9be313967c35b870b"></a>
2692<h2 class="memtitle"><span class="permalink"><a href="#a52590a78e77f52f9be313967c35b870b">&#9670;&nbsp;</a></span>DepthwiseConvolution2dMult4Test< armnn::DataType::Float32, armnn::DataType::Float32 >()</h2>
2693
2694<div class="memitem">
2695<div class="memproto">
2696 <table class="memname">
2697 <tr>
2698 <td class="memname">template <a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;<a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>&gt;, 4&gt; <a class="el" href="_conv2d_test_impl_8hpp.html#a0da6534b3a5d2f923dcd73553950129a">DepthwiseConvolution2dMult4Test</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a> &gt; </td>
2699 <td>(</td>
2700 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
2701 <td class="paramname"><em>workloadFactory</em>, </td>
2702 </tr>
2703 <tr>
2704 <td class="paramkey"></td>
2705 <td></td>
2706 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
2707 <td class="paramname"><em>memoryManager</em>, </td>
2708 </tr>
2709 <tr>
2710 <td class="paramkey"></td>
2711 <td></td>
2712 <td class="paramtype">bool&#160;</td>
2713 <td class="paramname"><em>biasEnabled</em>, </td>
2714 </tr>
2715 <tr>
2716 <td class="paramkey"></td>
2717 <td></td>
2718 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
2719 <td class="paramname"><em>layout</em>&#160;</td>
2720 </tr>
2721 <tr>
2722 <td></td>
2723 <td>)</td>
2724 <td></td><td></td>
2725 </tr>
2726 </table>
2727</div><div class="memdoc">
2728
2729</div>
2730</div>
2731<a id="a6271caa80dbf6fc82f97081d3d99d987"></a>
2732<h2 class="memtitle"><span class="permalink"><a href="#a6271caa80dbf6fc82f97081d3d99d987">&#9670;&nbsp;</a></span>DepthwiseConvolution2dNhwcTestCommon()</h2>
2733
2734<div class="memitem">
2735<div class="memproto">
2736 <table class="memname">
2737 <tr>
2738 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T, 4&gt; DepthwiseConvolution2dNhwcTestCommon </td>
2739 <td>(</td>
2740 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
2741 <td class="paramname"><em>workloadFactory</em>, </td>
2742 </tr>
2743 <tr>
2744 <td class="paramkey"></td>
2745 <td></td>
2746 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
2747 <td class="paramname"><em>memoryManager</em>, </td>
2748 </tr>
2749 <tr>
2750 <td class="paramkey"></td>
2751 <td></td>
2752 <td class="paramtype">float&#160;</td>
2753 <td class="paramname"><em>qScale</em>, </td>
2754 </tr>
2755 <tr>
2756 <td class="paramkey"></td>
2757 <td></td>
2758 <td class="paramtype">int32_t&#160;</td>
2759 <td class="paramname"><em>qOffset</em>, </td>
2760 </tr>
2761 <tr>
2762 <td class="paramkey"></td>
2763 <td></td>
2764 <td class="paramtype">bool&#160;</td>
2765 <td class="paramname"><em>biasEnabled</em>&#160;</td>
2766 </tr>
2767 <tr>
2768 <td></td>
2769 <td>)</td>
2770 <td></td><td></td>
2771 </tr>
2772 </table>
2773</div><div class="memdoc">
2774
2775<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l02131">2131</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
2776
2777<p class="reference">References <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::NHWC</a>.</p>
2778<div class="fragment"><div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>&#160;{</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160; <span class="keyword">auto</span> layout = <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a>;</div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160;</div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputTensorInfo({ 1, 2, 5, 5}, ArmnnType);</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160; <span class="keyword">auto</span> input = MakeTensor&lt;T, 4&gt;(inputTensorInfo, std::vector&lt;T&gt;(</div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160; QuantizedVector&lt;T&gt;({</div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160; 0, 1, 2, 3, 4,</div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>&#160; 5, 6, 7, 8, 9,</div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160; 10, 11, 12, 13, 14,</div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160; 15, 16, 17, 18, 19,</div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160; 20, 21, 22, 23, 24,</div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160;</div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160; 25, 26, 27, 28, 29,</div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160; 30, 31, 32, 33, 34,</div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160; 35, 36, 37, 38, 39,</div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160; 40, 41, 42, 43, 44,</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160; 45, 46, 47, 48, 49</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160; },</div><div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160; inputTensorInfo.GetQuantizationScale(),</div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160; inputTensorInfo.GetQuantizationOffset())));</div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160;</div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> kernelTensorInfo({ 1, 2, 4, 4 }, ArmnnType);</div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160; <span class="keyword">auto</span> kernel = MakeTensor&lt;T, 4&gt;(kernelTensorInfo, std::vector&lt;T&gt;(</div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160; QuantizedVector&lt;T&gt;({</div><div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160; 32, 31, 30, 29,</div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160; 28, 27, 26, 25,</div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>&#160; 24, 23, 22, 21,</div><div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160; 20, 19, 18, 17,</div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160;</div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160; 16, 15, 14, 13,</div><div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160; 12, 11, 10, 9,</div><div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160; 8, 7, 6, 5,</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160; 4, 3, 2, 1</div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160; },</div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160; kernelTensorInfo.GetQuantizationScale(),</div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160; kernelTensorInfo.GetQuantizationOffset())));</div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160;</div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputTensorInfo({ 1, 2, 5, 5}, ArmnnType);</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160; boost::multi_array&lt;T, 4&gt; expectedOutput = MakeTensor&lt;T, 4&gt;(outputTensorInfo, std::vector&lt;T&gt;(</div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160; QuantizedVector&lt;T&gt;({</div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160; 1062, 1580, 1850, 1530, 1117,</div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160; 2140, 3108, 3500, 2842, 2042,</div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160; 3580, 5068, 5460, 4342, 3062,</div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160; 3618, 5072, 5390, 4248, 2971,</div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160; 3074, 4282, 4510, 3533, 2457,</div><div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160;</div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160; 1550, 2284, 2362, 1955, 1428,</div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160; 2910, 4206, 4342, 3528, 2536,</div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160; 3390, 4886, 5022, 4068, 2916,</div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160; 3566, 5056, 5182, 4133, 2922,</div><div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160; 3100, 4352, 4452, 3517, 2465</div><div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>&#160; },</div><div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>&#160; outputTensorInfo.GetQuantizationScale(),</div><div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>&#160; outputTensorInfo.GetQuantizationOffset())));</div><div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>&#160;</div><div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>&#160; <span class="keywordflow">return</span> DepthwiseConvolution2dTestImpl&lt;ArmnnType, ArmnnBType&gt;(</div><div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>&#160; workloadFactory,</div><div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>&#160; memoryManager,</div><div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>&#160; input,</div><div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>&#160; kernel,</div><div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>&#160; GetBias2&lt;ArmnnBType&gt;(biasEnabled, qScale * qScale),</div><div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>&#160; expectedOutput,</div><div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>&#160; qScale,</div><div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>&#160; qOffset,</div><div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>&#160; layout,</div><div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>&#160; 1, <span class="comment">// Padding left.</span></div><div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>&#160; 1, <span class="comment">// Padding top.</span></div><div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>&#160; 2, <span class="comment">// Padding right.</span></div><div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>&#160; 2, <span class="comment">// Padding bottom.</span></div><div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>&#160; 1, <span class="comment">// strideX</span></div><div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>&#160; 1); <span class="comment">// strideY</span></div><div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
2779<div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a></div></div>
2780</div><!-- fragment -->
2781</div>
2782</div>
2783<a id="a8a51827c480f827c1e29f9347d7433c3"></a>
2784<h2 class="memtitle"><span class="permalink"><a href="#a8a51827c480f827c1e29f9347d7433c3">&#9670;&nbsp;</a></span>DepthwiseConvolution2dPerAxisQuantTest()</h2>
2785
2786<div class="memitem">
2787<div class="memproto">
2788 <table class="memname">
2789 <tr>
2790 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;uint8_t, 4&gt; DepthwiseConvolution2dPerAxisQuantTest </td>
2791 <td>(</td>
2792 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
2793 <td class="paramname"><em>workloadFactory</em>, </td>
2794 </tr>
2795 <tr>
2796 <td class="paramkey"></td>
2797 <td></td>
2798 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
2799 <td class="paramname"><em>memoryManager</em>, </td>
2800 </tr>
2801 <tr>
2802 <td class="paramkey"></td>
2803 <td></td>
2804 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
2805 <td class="paramname"><em>layout</em>&#160;</td>
2806 </tr>
2807 <tr>
2808 <td></td>
2809 <td>)</td>
2810 <td></td><td></td>
2811 </tr>
2812 </table>
2813</div><div class="memdoc">
2814
2815<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l03268">3268</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
2816
2817<p class="reference">References <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00019">AllocateAndCopyDataToITensorHandle()</a>, <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00014">CopyDataFromITensorHandle()</a>, <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00009">CopyDataToITensorHandle()</a>, <a class="el" href="_workload_factory_8cpp_source.html#l01160">IWorkloadFactory::CreateDepthwiseConvolution2d()</a>, <a class="el" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">IWorkloadFactory::CreateTensorHandle()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00490">DepthwiseConvolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00492">DepthwiseConvolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00486">DepthwiseConvolution2dDescriptor::m_DilationX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00488">DepthwiseConvolution2dDescriptor::m_DilationY</a>, <a class="el" href="_descriptors_8hpp_source.html#l00480">DepthwiseConvolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00474">DepthwiseConvolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00476">DepthwiseConvolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00478">DepthwiseConvolution2dDescriptor::m_PadTop</a>, <a class="el" href="_workload_data_8hpp_source.html#l00049">QueueDescriptorWithParameters&lt; LayerDescriptor &gt;::m_Parameters</a>, <a class="el" href="_descriptors_8hpp_source.html#l00482">DepthwiseConvolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00484">DepthwiseConvolution2dDescriptor::m_StrideY</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::NCHW</a>, <a class="el" href="_layer_test_result_8hpp_source.html#l00040">LayerTestResult&lt; T, n &gt;::output</a>, <a class="el" href="_layer_test_result_8hpp_source.html#l00041">LayerTestResult&lt; T, n &gt;::outputExpected</a>, and <a class="el" href="_data_layout_utils_8hpp_source.html#l00026">PermuteTensorNhwcToNchw()</a>.</p>
2818<div class="fragment"><div class="line"><a name="l03272"></a><span class="lineno"> 3272</span>&#160;{</div><div class="line"><a name="l03273"></a><span class="lineno"> 3273</span>&#160; <span class="keyword">using namespace </span><a class="code" href="namespacearmnn.html">armnn</a>;</div><div class="line"><a name="l03274"></a><span class="lineno"> 3274</span>&#160;</div><div class="line"><a name="l03275"></a><span class="lineno"> 3275</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> inputType = <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a>;</div><div class="line"><a name="l03276"></a><span class="lineno"> 3276</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> kernelType = <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">DataType::QSymmS8</a>;</div><div class="line"><a name="l03277"></a><span class="lineno"> 3277</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> biasType = <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">DataType::Signed32</a>;</div><div class="line"><a name="l03278"></a><span class="lineno"> 3278</span>&#160;</div><div class="line"><a name="l03279"></a><span class="lineno"> 3279</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> inputInfo ({ 1, 3, 3, 2 }, inputType, 0.5f, 128); <span class="comment">// N H W C</span></div><div class="line"><a name="l03280"></a><span class="lineno"> 3280</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> outputInfo({ 1, 2, 2, 4 }, inputType, 1.0f, 128); <span class="comment">// N H W C</span></div><div class="line"><a name="l03281"></a><span class="lineno"> 3281</span>&#160;</div><div class="line"><a name="l03282"></a><span class="lineno"> 3282</span>&#160; <span class="keyword">const</span> std::vector&lt;float&gt; quantScales{ 1.0f, 0.5f, 1.0f, 0.5f };</div><div class="line"><a name="l03283"></a><span class="lineno"> 3283</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> quantDimension = 0;</div><div class="line"><a name="l03284"></a><span class="lineno"> 3284</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> kernelInfo({ 2, 2, 2, 2 }, kernelType, quantScales, quantDimension); <span class="comment">// M I H W</span></div><div class="line"><a name="l03285"></a><span class="lineno"> 3285</span>&#160;</div><div class="line"><a name="l03286"></a><span class="lineno"> 3286</span>&#160; <span class="keyword">const</span> std::vector&lt;float&gt; biasQuantScales{ 0.5f, 0.25f, 0.5f, 0.25f };</div><div class="line"><a name="l03287"></a><span class="lineno"> 3287</span>&#160; constexpr <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> biasQuantDimension = 0;</div><div class="line"><a name="l03288"></a><span class="lineno"> 3288</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> biasInfo({ 4 }, biasType, biasQuantScales, biasQuantDimension);</div><div class="line"><a name="l03289"></a><span class="lineno"> 3289</span>&#160;</div><div class="line"><a name="l03290"></a><span class="lineno"> 3290</span>&#160; std::vector&lt;uint8_t&gt; inputData =</div><div class="line"><a name="l03291"></a><span class="lineno"> 3291</span>&#160; {</div><div class="line"><a name="l03292"></a><span class="lineno"> 3292</span>&#160; 129, 130,</div><div class="line"><a name="l03293"></a><span class="lineno"> 3293</span>&#160; 129, 130,</div><div class="line"><a name="l03294"></a><span class="lineno"> 3294</span>&#160; 129, 130,</div><div class="line"><a name="l03295"></a><span class="lineno"> 3295</span>&#160; 129, 130,</div><div class="line"><a name="l03296"></a><span class="lineno"> 3296</span>&#160; 129, 130,</div><div class="line"><a name="l03297"></a><span class="lineno"> 3297</span>&#160; 129, 130,</div><div class="line"><a name="l03298"></a><span class="lineno"> 3298</span>&#160; 129, 130,</div><div class="line"><a name="l03299"></a><span class="lineno"> 3299</span>&#160; 129, 130,</div><div class="line"><a name="l03300"></a><span class="lineno"> 3300</span>&#160; 129, 130</div><div class="line"><a name="l03301"></a><span class="lineno"> 3301</span>&#160; };</div><div class="line"><a name="l03302"></a><span class="lineno"> 3302</span>&#160;</div><div class="line"><a name="l03303"></a><span class="lineno"> 3303</span>&#160; std::vector&lt;int8_t&gt; kernelData =</div><div class="line"><a name="l03304"></a><span class="lineno"> 3304</span>&#160; {</div><div class="line"><a name="l03305"></a><span class="lineno"> 3305</span>&#160; 1, 1, 1, 1,</div><div class="line"><a name="l03306"></a><span class="lineno"> 3306</span>&#160; 1, 1, 1, 1,</div><div class="line"><a name="l03307"></a><span class="lineno"> 3307</span>&#160; 1, 1, 1, 1,</div><div class="line"><a name="l03308"></a><span class="lineno"> 3308</span>&#160; 1, 1, 1, 1</div><div class="line"><a name="l03309"></a><span class="lineno"> 3309</span>&#160; };</div><div class="line"><a name="l03310"></a><span class="lineno"> 3310</span>&#160;</div><div class="line"><a name="l03311"></a><span class="lineno"> 3311</span>&#160; std::vector&lt;int32_t&gt; biasData =</div><div class="line"><a name="l03312"></a><span class="lineno"> 3312</span>&#160; {</div><div class="line"><a name="l03313"></a><span class="lineno"> 3313</span>&#160; 4, 4, 4, 4</div><div class="line"><a name="l03314"></a><span class="lineno"> 3314</span>&#160; };</div><div class="line"><a name="l03315"></a><span class="lineno"> 3315</span>&#160;</div><div class="line"><a name="l03316"></a><span class="lineno"> 3316</span>&#160; std::vector&lt;uint8_t&gt; expectedOutputData =</div><div class="line"><a name="l03317"></a><span class="lineno"> 3317</span>&#160; {</div><div class="line"><a name="l03318"></a><span class="lineno"> 3318</span>&#160; 132, 130, 134, 131,</div><div class="line"><a name="l03319"></a><span class="lineno"> 3319</span>&#160; 132, 130, 134, 131,</div><div class="line"><a name="l03320"></a><span class="lineno"> 3320</span>&#160; 132, 130, 134, 131,</div><div class="line"><a name="l03321"></a><span class="lineno"> 3321</span>&#160; 132, 130, 134, 131</div><div class="line"><a name="l03322"></a><span class="lineno"> 3322</span>&#160; };</div><div class="line"><a name="l03323"></a><span class="lineno"> 3323</span>&#160;</div><div class="line"><a name="l03324"></a><span class="lineno"> 3324</span>&#160; <span class="keywordflow">if</span> (layout == <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">DataLayout::NCHW</a>)</div><div class="line"><a name="l03325"></a><span class="lineno"> 3325</span>&#160; {</div><div class="line"><a name="l03326"></a><span class="lineno"> 3326</span>&#160; <a class="code" href="_data_layout_utils_8hpp.html#a1452f049aef30409b3b649af2be7ff82">PermuteTensorNhwcToNchw</a>(inputInfo, inputData);</div><div class="line"><a name="l03327"></a><span class="lineno"> 3327</span>&#160; <a class="code" href="_data_layout_utils_8hpp.html#a1452f049aef30409b3b649af2be7ff82">PermuteTensorNhwcToNchw</a>(outputInfo, expectedOutputData);</div><div class="line"><a name="l03328"></a><span class="lineno"> 3328</span>&#160; }</div><div class="line"><a name="l03329"></a><span class="lineno"> 3329</span>&#160;</div><div class="line"><a name="l03330"></a><span class="lineno"> 3330</span>&#160; <a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html">DepthwiseConvolution2dDescriptor</a> descriptor;</div><div class="line"><a name="l03331"></a><span class="lineno"> 3331</span>&#160; descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#afe6a3377c4531315354def9023c8fdda">m_StrideX</a> = 1;</div><div class="line"><a name="l03332"></a><span class="lineno"> 3332</span>&#160; descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#ac1fe174bbadfb39a2b636940c2e647c8">m_StrideY</a> = 1;</div><div class="line"><a name="l03333"></a><span class="lineno"> 3333</span>&#160; descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#ac18546ebbebbb32fe0a03baa9bf2c600">m_PadLeft</a> = 0;</div><div class="line"><a name="l03334"></a><span class="lineno"> 3334</span>&#160; descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a002bc30e590d78cbb4f4d12171055ca7">m_PadRight</a> = 0;</div><div class="line"><a name="l03335"></a><span class="lineno"> 3335</span>&#160; descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a56b51f56cef50cdfa554258eecdab046">m_PadTop</a> = 0;</div><div class="line"><a name="l03336"></a><span class="lineno"> 3336</span>&#160; descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aa9e49717ebdb741e8c767741647fc618">m_PadBottom</a> = 0;</div><div class="line"><a name="l03337"></a><span class="lineno"> 3337</span>&#160; descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aa3c6a77a963a98ccb8ea7b8fd008a8c1">m_DilationX</a> = 1;</div><div class="line"><a name="l03338"></a><span class="lineno"> 3338</span>&#160; descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a302b688d88dd73cde0fb1faef6679907">m_DilationY</a> = 1;</div><div class="line"><a name="l03339"></a><span class="lineno"> 3339</span>&#160; descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aea202e14d8874cefd9a0f778022b7e25">m_BiasEnabled</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l03340"></a><span class="lineno"> 3340</span>&#160; descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a> = layout;</div><div class="line"><a name="l03341"></a><span class="lineno"> 3341</span>&#160;</div><div class="line"><a name="l03342"></a><span class="lineno"> 3342</span>&#160; std::unique_ptr&lt;ITensorHandle&gt; inputHandle = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">CreateTensorHandle</a>(inputInfo);</div><div class="line"><a name="l03343"></a><span class="lineno"> 3343</span>&#160; std::unique_ptr&lt;ITensorHandle&gt; outputHandle = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">CreateTensorHandle</a>(outputInfo);</div><div class="line"><a name="l03344"></a><span class="lineno"> 3344</span>&#160;</div><div class="line"><a name="l03345"></a><span class="lineno"> 3345</span>&#160; <a class="code" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> workloadInfo;</div><div class="line"><a name="l03346"></a><span class="lineno"> 3346</span>&#160; <a class="code" href="classarmnn_1_1_scoped_cpu_tensor_handle.html">ScopedCpuTensorHandle</a> weightTensor(kernelInfo);</div><div class="line"><a name="l03347"></a><span class="lineno"> 3347</span>&#160; <a class="code" href="classarmnn_1_1_scoped_cpu_tensor_handle.html">ScopedCpuTensorHandle</a> biasTensor(biasInfo);</div><div class="line"><a name="l03348"></a><span class="lineno"> 3348</span>&#160;</div><div class="line"><a name="l03349"></a><span class="lineno"> 3349</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a>(&amp;weightTensor, kernelData.data());</div><div class="line"><a name="l03350"></a><span class="lineno"> 3350</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a>(&amp;biasTensor, biasData.data());</div><div class="line"><a name="l03351"></a><span class="lineno"> 3351</span>&#160;</div><div class="line"><a name="l03352"></a><span class="lineno"> 3352</span>&#160; <a class="code" href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html">DepthwiseConvolution2dQueueDescriptor</a> queueDescriptor;</div><div class="line"><a name="l03353"></a><span class="lineno"> 3353</span>&#160; queueDescriptor.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a> = descriptor;</div><div class="line"><a name="l03354"></a><span class="lineno"> 3354</span>&#160; queueDescriptor.m_Weight = &amp;weightTensor;</div><div class="line"><a name="l03355"></a><span class="lineno"> 3355</span>&#160; queueDescriptor.m_Bias = &amp;biasTensor;</div><div class="line"><a name="l03356"></a><span class="lineno"> 3356</span>&#160;</div><div class="line"><a name="l03357"></a><span class="lineno"> 3357</span>&#160; AddInputToWorkload(queueDescriptor, workloadInfo, inputInfo, inputHandle.get());</div><div class="line"><a name="l03358"></a><span class="lineno"> 3358</span>&#160; AddOutputToWorkload(queueDescriptor, workloadInfo, outputInfo, outputHandle.get());</div><div class="line"><a name="l03359"></a><span class="lineno"> 3359</span>&#160;</div><div class="line"><a name="l03360"></a><span class="lineno"> 3360</span>&#160; std::unique_ptr&lt;IWorkload&gt; workload = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#accb9759dfd2880efe0f8d2705ddee448">CreateDepthwiseConvolution2d</a>(queueDescriptor, workloadInfo);</div><div class="line"><a name="l03361"></a><span class="lineno"> 3361</span>&#160; inputHandle-&gt;Allocate();</div><div class="line"><a name="l03362"></a><span class="lineno"> 3362</span>&#160; outputHandle-&gt;Allocate();</div><div class="line"><a name="l03363"></a><span class="lineno"> 3363</span>&#160;</div><div class="line"><a name="l03364"></a><span class="lineno"> 3364</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a>(inputHandle.get(), inputData.data());</div><div class="line"><a name="l03365"></a><span class="lineno"> 3365</span>&#160;</div><div class="line"><a name="l03366"></a><span class="lineno"> 3366</span>&#160; ExecuteWorkload(*workload, memoryManager);</div><div class="line"><a name="l03367"></a><span class="lineno"> 3367</span>&#160;</div><div class="line"><a name="l03368"></a><span class="lineno"> 3368</span>&#160; <a class="code" href="struct_layer_test_result.html">LayerTestResult&lt;uint8_t, 4&gt;</a> ret(outputInfo);</div><div class="line"><a name="l03369"></a><span class="lineno"> 3369</span>&#160;</div><div class="line"><a name="l03370"></a><span class="lineno"> 3370</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a>(ret.output.origin(), outputHandle.get());</div><div class="line"><a name="l03371"></a><span class="lineno"> 3371</span>&#160; ret.outputExpected = MakeTensor&lt;uint8_t, 4&gt;(outputInfo, expectedOutputData);</div><div class="line"><a name="l03372"></a><span class="lineno"> 3372</span>&#160;</div><div class="line"><a name="l03373"></a><span class="lineno"> 3373</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l03374"></a><span class="lineno"> 3374</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_i_workload_factory_html_accb9759dfd2880efe0f8d2705ddee448"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.html#accb9759dfd2880efe0f8d2705ddee448">armnn::IWorkloadFactory::CreateDepthwiseConvolution2d</a></div><div class="ttdeci">virtual std::unique_ptr&lt; IWorkload &gt; CreateDepthwiseConvolution2d(const DepthwiseConvolution2dQueueDescriptor &amp;descriptor, const WorkloadInfo &amp;info) const</div><div class="ttdef"><b>Definition:</b> <a href="_workload_factory_8cpp_source.html#l01160">WorkloadFactory.cpp:1160</a></div></div>
2819<div class="ttc" id="_tensor_copy_utils_8cpp_html_afaaca8c3f3a467d124bba44067d2afa8"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a></div><div class="ttdeci">void AllocateAndCopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00019">TensorCopyUtils.cpp:19</a></div></div>
2820<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_afe6a3377c4531315354def9023c8fdda"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#afe6a3377c4531315354def9023c8fdda">armnn::DepthwiseConvolution2dDescriptor::m_StrideX</a></div><div class="ttdeci">uint32_t m_StrideX</div><div class="ttdoc">Stride value when proceeding through input for the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00482">Descriptors.hpp:482</a></div></div>
2821<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_aa9e49717ebdb741e8c767741647fc618"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aa9e49717ebdb741e8c767741647fc618">armnn::DepthwiseConvolution2dDescriptor::m_PadBottom</a></div><div class="ttdeci">uint32_t m_PadBottom</div><div class="ttdoc">Padding bottom value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00480">Descriptors.hpp:480</a></div></div>
2822<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">armnn::DataType::QSymmS8</a></div></div>
2823<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_aa3c6a77a963a98ccb8ea7b8fd008a8c1"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aa3c6a77a963a98ccb8ea7b8fd008a8c1">armnn::DepthwiseConvolution2dDescriptor::m_DilationX</a></div><div class="ttdeci">uint32_t m_DilationX</div><div class="ttdoc">Dilation factor value for width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00486">Descriptors.hpp:486</a></div></div>
2824<div class="ttc" id="_tensor_copy_utils_8cpp_html_ae15f1a3c55d2db87683577de9fa4437c"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a></div><div class="ttdeci">void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00009">TensorCopyUtils.cpp:9</a></div></div>
2825<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a></div></div>
2826<div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></div></div>
2827<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_ac18546ebbebbb32fe0a03baa9bf2c600"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#ac18546ebbebbb32fe0a03baa9bf2c600">armnn::DepthwiseConvolution2dDescriptor::m_PadLeft</a></div><div class="ttdeci">uint32_t m_PadLeft</div><div class="ttdoc">Padding left value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00474">Descriptors.hpp:474</a></div></div>
2828<div class="ttc" id="structarmnn_1_1_queue_descriptor_with_parameters_html_aad91b9bbf7aa365d304febe79a3d1333"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">armnn::QueueDescriptorWithParameters::m_Parameters</a></div><div class="ttdeci">LayerDescriptor m_Parameters</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00049">WorkloadData.hpp:49</a></div></div>
2829<div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
2830<div class="ttc" id="classarmnn_1_1_i_workload_factory_html_a15c140be4ddceffee16436f009d3ed94"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">armnn::IWorkloadFactory::CreateTensorHandle</a></div><div class="ttdeci">virtual std::unique_ptr&lt; ITensorHandle &gt; CreateTensorHandle(const TensorInfo &amp;tensorInfo, const bool IsMemoryManaged=true) const =0</div></div>
2831<div class="ttc" id="struct_layer_test_result_html"><div class="ttname"><a href="struct_layer_test_result.html">LayerTestResult</a></div><div class="ttdef"><b>Definition:</b> <a href="_layer_test_result_8hpp_source.html#l00029">LayerTestResult.hpp:29</a></div></div>
2832<div class="ttc" id="_tensor_copy_utils_8cpp_html_a99b626c58a926dc7d6df78d22ec186c8"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a></div><div class="ttdeci">void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00014">TensorCopyUtils.cpp:14</a></div></div>
2833<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">armnn::DepthwiseConvolution2dDescriptor::m_DataLayout</a></div><div class="ttdeci">DataLayout m_DataLayout</div><div class="ttdoc">The data layout to be used (NCHW, NHWC). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00492">Descriptors.hpp:492</a></div></div>
2834<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_a56b51f56cef50cdfa554258eecdab046"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a56b51f56cef50cdfa554258eecdab046">armnn::DepthwiseConvolution2dDescriptor::m_PadTop</a></div><div class="ttdeci">uint32_t m_PadTop</div><div class="ttdoc">Padding top value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00478">Descriptors.hpp:478</a></div></div>
2835<div class="ttc" id="structarmnn_1_1_workload_info_html"><div class="ttname"><a href="structarmnn_1_1_workload_info.html">armnn::WorkloadInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_workload_info_8hpp_source.html#l00016">WorkloadInfo.hpp:16</a></div></div>
2836<div class="ttc" id="_data_layout_utils_8hpp_html_a1452f049aef30409b3b649af2be7ff82"><div class="ttname"><a href="_data_layout_utils_8hpp.html#a1452f049aef30409b3b649af2be7ff82">PermuteTensorNhwcToNchw</a></div><div class="ttdeci">void PermuteTensorNhwcToNchw(armnn::TensorInfo &amp;tensorInfo, std::vector&lt; T &gt; &amp;tensorData)</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_utils_8hpp_source.html#l00026">DataLayoutUtils.hpp:26</a></div></div>
2837<div class="ttc" id="namespacearmnn_html"><div class="ttname"><a href="namespacearmnn.html">armnn</a></div><div class="ttdef"><b>Definition:</b> <a href="_backend_helper_8hpp_source.html#l00011">BackendHelper.hpp:11</a></div></div>
2838<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a></div></div>
2839<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_aea202e14d8874cefd9a0f778022b7e25"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aea202e14d8874cefd9a0f778022b7e25">armnn::DepthwiseConvolution2dDescriptor::m_BiasEnabled</a></div><div class="ttdeci">bool m_BiasEnabled</div><div class="ttdoc">Enable/disable bias. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00490">Descriptors.hpp:490</a></div></div>
2840<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_queue_descriptor_html"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html">armnn::DepthwiseConvolution2dQueueDescriptor</a></div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00183">WorkloadData.hpp:183</a></div></div>
2841<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00032">Types.hpp:32</a></div></div>
2842<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html">armnn::DepthwiseConvolution2dDescriptor</a></div><div class="ttdoc">A DepthwiseConvolution2dDescriptor for the DepthwiseConvolution2dLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00444">Descriptors.hpp:444</a></div></div>
2843<div class="ttc" id="classarmnn_1_1_scoped_cpu_tensor_handle_html"><div class="ttname"><a href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a></div><div class="ttdef"><b>Definition:</b> <a href="_cpu_tensor_handle_8hpp_source.html#l00106">CpuTensorHandle.hpp:106</a></div></div>
2844<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_ac1fe174bbadfb39a2b636940c2e647c8"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#ac1fe174bbadfb39a2b636940c2e647c8">armnn::DepthwiseConvolution2dDescriptor::m_StrideY</a></div><div class="ttdeci">uint32_t m_StrideY</div><div class="ttdoc">Stride value when proceeding through input for the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00484">Descriptors.hpp:484</a></div></div>
2845<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_a302b688d88dd73cde0fb1faef6679907"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a302b688d88dd73cde0fb1faef6679907">armnn::DepthwiseConvolution2dDescriptor::m_DilationY</a></div><div class="ttdeci">uint32_t m_DilationY</div><div class="ttdoc">Dilation factor value for height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00488">Descriptors.hpp:488</a></div></div>
2846<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_a002bc30e590d78cbb4f4d12171055ca7"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a002bc30e590d78cbb4f4d12171055ca7">armnn::DepthwiseConvolution2dDescriptor::m_PadRight</a></div><div class="ttdeci">uint32_t m_PadRight</div><div class="ttdoc">Padding right value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00476">Descriptors.hpp:476</a></div></div>
2847</div><!-- fragment -->
2848</div>
2849</div>
2850<a id="a11fbd94028ab646528b42d0c8c55eee1"></a>
2851<h2 class="memtitle"><span class="permalink"><a href="#a11fbd94028ab646528b42d0c8c55eee1">&#9670;&nbsp;</a></span>DepthwiseConvolution2dTest()</h2>
2852
2853<div class="memitem">
2854<div class="memproto">
2855 <table class="memname">
2856 <tr>
2857 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;float, 4&gt; DepthwiseConvolution2dTest </td>
2858 <td>(</td>
2859 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
2860 <td class="paramname"><em>workloadFactory</em>, </td>
2861 </tr>
2862 <tr>
2863 <td class="paramkey"></td>
2864 <td></td>
2865 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
2866 <td class="paramname"><em>memoryManager</em>, </td>
2867 </tr>
2868 <tr>
2869 <td class="paramkey"></td>
2870 <td></td>
2871 <td class="paramtype">bool&#160;</td>
2872 <td class="paramname"><em>biasEnabled</em>, </td>
2873 </tr>
2874 <tr>
2875 <td class="paramkey"></td>
2876 <td></td>
2877 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
2878 <td class="paramname"><em>layout</em>&#160;</td>
2879 </tr>
2880 <tr>
2881 <td></td>
2882 <td>)</td>
2883 <td></td><td></td>
2884 </tr>
2885 </table>
2886</div><div class="memdoc">
2887
2888<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l03145">3145</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
2889<div class="fragment"><div class="line"><a name="l03150"></a><span class="lineno"> 3150</span>&#160;{</div><div class="line"><a name="l03151"></a><span class="lineno"> 3151</span>&#160; <span class="keywordflow">return</span> DepthwiseConvolution2dTestImpl&lt;armnn::DataType::Float32, armnn::DataType::Float32&gt;(</div><div class="line"><a name="l03152"></a><span class="lineno"> 3152</span>&#160; workloadFactory, memoryManager, 0.0f, 0, biasEnabled, layout);</div><div class="line"><a name="l03153"></a><span class="lineno"> 3153</span>&#160;}</div></div><!-- fragment -->
2890</div>
2891</div>
2892<a id="ae3cc54b77789d10caeb5a438a0821ba0"></a>
2893<h2 class="memtitle"><span class="permalink"><a href="#ae3cc54b77789d10caeb5a438a0821ba0">&#9670;&nbsp;</a></span>DepthwiseConvolution2dTestImpl() <span class="overload">[1/2]</span></h2>
2894
2895<div class="memitem">
2896<div class="memproto">
2897 <table class="memname">
2898 <tr>
2899 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T, 4&gt; DepthwiseConvolution2dTestImpl </td>
2900 <td>(</td>
2901 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
2902 <td class="paramname"><em>workloadFactory</em>, </td>
2903 </tr>
2904 <tr>
2905 <td class="paramkey"></td>
2906 <td></td>
2907 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
2908 <td class="paramname"><em>memoryManager</em>, </td>
2909 </tr>
2910 <tr>
2911 <td class="paramkey"></td>
2912 <td></td>
2913 <td class="paramtype">float&#160;</td>
2914 <td class="paramname"><em>qScale</em>, </td>
2915 </tr>
2916 <tr>
2917 <td class="paramkey"></td>
2918 <td></td>
2919 <td class="paramtype">int32_t&#160;</td>
2920 <td class="paramname"><em>qOffset</em>, </td>
2921 </tr>
2922 <tr>
2923 <td class="paramkey"></td>
2924 <td></td>
2925 <td class="paramtype">bool&#160;</td>
2926 <td class="paramname"><em>biasEnabled</em>, </td>
2927 </tr>
2928 <tr>
2929 <td class="paramkey"></td>
2930 <td></td>
2931 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
2932 <td class="paramname"><em>layout</em>&#160;</td>
2933 </tr>
2934 <tr>
2935 <td></td>
2936 <td>)</td>
2937 <td></td><td></td>
2938 </tr>
2939 </table>
2940</div><div class="memdoc">
2941
2942<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l01671">1671</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
2943
2944<p class="reference">References <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00019">AllocateAndCopyDataToITensorHandle()</a>, <a class="el" href="_conv2d_test_impl_8cpp_source.html#l00169">ApplyBias()</a>, <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00014">CopyDataFromITensorHandle()</a>, <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00009">CopyDataToITensorHandle()</a>, <a class="el" href="_workload_factory_8cpp_source.html#l01160">IWorkloadFactory::CreateDepthwiseConvolution2d()</a>, <a class="el" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">IWorkloadFactory::CreateTensorHandle()</a>, <a class="el" href="_tensor_8cpp_source.html#l00264">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.html#l00247">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00038">armnnUtils::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::info</a>, <a class="el" href="_workload_data_8hpp_source.html#l00192">DepthwiseConvolution2dQueueDescriptor::m_Bias</a>, <a class="el" href="_descriptors_8hpp_source.html#l00490">DepthwiseConvolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00492">DepthwiseConvolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00480">DepthwiseConvolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00474">DepthwiseConvolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00476">DepthwiseConvolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00478">DepthwiseConvolution2dDescriptor::m_PadTop</a>, <a class="el" href="_workload_data_8hpp_source.html#l00049">QueueDescriptorWithParameters&lt; LayerDescriptor &gt;::m_Parameters</a>, <a class="el" href="_descriptors_8hpp_source.html#l00482">DepthwiseConvolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00484">DepthwiseConvolution2dDescriptor::m_StrideY</a>, <a class="el" href="_workload_data_8hpp_source.html#l00191">DepthwiseConvolution2dQueueDescriptor::m_Weight</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::NHWC</a>, <a class="el" href="_permute_8cpp_source.html#l00121">armnnUtils::Permute()</a>, <a class="el" href="_tensor_8cpp_source.html#l00275">TensorInfo::SetQuantizationOffset()</a>, and <a class="el" href="_tensor_8cpp_source.html#l00259">TensorInfo::SetQuantizationScale()</a>.</p>
2945<div class="fragment"><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160;{</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160; <span class="keyword">using</span> <a class="code" href="_inference_test_image_8hpp.html#a65983f8cb907d873f2328bb8307c296aa9d5ed678fe57bcca610140957afab571">B</a> = <a class="code" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType&lt;ArmnnBType&gt;</a>;</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160;</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> depthMultiplier = 2;</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160;</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = 8;</div><div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = 16;</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels = 2;</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputBatchSize = 1;</div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160;</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelHeight = 5;</div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelWidth = 3;</div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160;</div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = inputHeight - kernelHeight + 1 + 2;</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = (inputWidth - kernelWidth + 1)/2;</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputChannels = inputChannels * depthMultiplier;</div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputBatchSize = inputBatchSize;</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160;</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputTensorInfo = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a>(</div><div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160; inputBatchSize, inputChannels, inputHeight, inputWidth, layout, ArmnnType);</div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputTensorInfo = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a>(</div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160; outputBatchSize, outputChannels, outputHeight, outputWidth, layout, ArmnnType);</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> kernelDesc({depthMultiplier, inputChannels, kernelHeight, kernelWidth},</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160; ArmnnType);</div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> biasDesc({outputChannels}, ArmnnBType);</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160;</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; <span class="comment">// Set quantization parameters if the requested type is a quantized type.</span></div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160; <span class="keywordflow">if</span>(armnn::IsQuantizedType&lt;T&gt;())</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; {</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160; inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a685739c4eb65a580e075282cfe6787d6">SetQuantizationScale</a>(qScale);</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160; inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a63cbc581012c957f9d68d224ddc3e43c">SetQuantizationOffset</a>(qOffset);</div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160; outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a685739c4eb65a580e075282cfe6787d6">SetQuantizationScale</a>(qScale);</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160; outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a63cbc581012c957f9d68d224ddc3e43c">SetQuantizationOffset</a>(qOffset);</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160; kernelDesc.SetQuantizationScale(qScale);</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; kernelDesc.SetQuantizationOffset(qOffset);</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; biasDesc.SetQuantizationScale(qScale*qScale);</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; biasDesc.SetQuantizationOffset(0);</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; }</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160;</div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; <span class="comment">// NOTE: originalInputData is in NCHW format</span></div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160; std::vector&lt;T&gt; originalInputData = std::vector&lt;T&gt;(</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160; QuantizedVector&lt;T&gt;({</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160; 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f,</div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160; 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,</div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160; 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f,</div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160; 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f,</div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f,</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f,</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160; 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f,</div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160; 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f,</div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,</div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,</div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160; 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,</div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160; 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160; 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f</div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160; },</div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160; inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a047ca888c43bd7fb5702853bf72410d0">GetQuantizationScale</a>(),</div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160; inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a770b51078da02f44a819e9f95d8058b5">GetQuantizationOffset</a>()));</div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160;</div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160; std::vector&lt;T&gt; inputData = originalInputData;</div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160; <span class="comment">// at this point if we require it permute the input data</span></div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a> NCHWToNHWC = { 0, 3, 1, 2 };</div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160; <span class="keywordflow">if</span> (layout == <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a>)</div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160; {</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160; <a class="code" href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a>(inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>(), NCHWToNHWC,</div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160; originalInputData.data(), inputData.data(), <span class="keyword">sizeof</span>(T));</div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160; }</div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160; <span class="keyword">auto</span> input = MakeTensor&lt;T, 4&gt;(inputTensorInfo, inputData);</div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160;</div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160; std::vector&lt;B&gt; biasV = QuantizedVector&lt;B&gt;({ 0, 2, 1, -1 },</div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160; biasDesc.GetQuantizationScale(),</div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160; biasDesc.GetQuantizationOffset());</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160;</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160; <span class="keyword">auto</span> bias = MakeTensor&lt;B, 1&gt;(biasDesc, biasV);</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160;</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160; std::vector&lt;T&gt; kernelData = std::vector&lt;T&gt;(</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160; QuantizedVector&lt;T&gt;({</div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160; 1, 1, 1,</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160; 1, -1, 1,</div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160; 1, 1, 1,</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160; 1, 1, 1,</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160; 1, 1, 1,</div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160;</div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160; 2, 2, 2,</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160; 2, 2, 2,</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160; 2, 2, 2,</div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160; 2, 2, 2,</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160; 2, 2, 2,</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160;</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; 0, 0, 0,</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160; 0, -1, 0,</div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160; 0, 0, 0,</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160; 0, 0, 0,</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160; 0, 0, 0,</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160;</div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160; 0, 0, 0,</div><div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160; 0, 0, 0,</div><div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160; 0, 1, 0,</div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160; 0, 0, 0,</div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160; 0, 0, 0</div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160; },</div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160; kernelDesc.GetQuantizationScale(),</div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160; kernelDesc.GetQuantizationOffset()));</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160;</div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160; <span class="keyword">auto</span> kernel = MakeTensor&lt;T, 4&gt;(kernelDesc, kernelData);</div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160;</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160; <span class="comment">// Manually calculated.</span></div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160; std::vector&lt;T&gt; originalOutputImage = std::vector&lt;T&gt;(</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160; QuantizedVector&lt;T&gt;({</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160; 3.5f, 3.5f, 3.5f, 3.5f, 3.5f, 3.5f, 3.5f,</div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160; 6.0f, 6.0f, 6.0f, 6.0f, 6.0f, 6.0f, 6.0f,</div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160; 5.0f, 5.0f, 5.0f, 5.0f, 5.0f, 5.0f, 5.0f,</div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160; 6.5f, 6.5f, 6.5f, 6.5f, 6.5f, 6.5f, 6.5f,</div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160; 6.5f, 6.5f, 6.5f, 6.5f, 6.5f, 6.5f, 6.5f,</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160; 5.0f, 5.0f, 5.0f, 5.0f, 5.0f, 5.0f, 5.0f,</div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160;</div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160; -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f,</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160; 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,</div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160; -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f,</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160; -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f,</div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160; -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f,</div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160; -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f,</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160;</div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160; 8.0f, 8.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,</div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160; 10.0f, 10.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160; 10.0f, 10.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,</div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160; 10.0f, 10.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160; 10.0f, 10.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,</div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; 8.0f, 8.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160;</div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160; 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,</div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160; 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160; 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,</div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160; 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160; 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f</div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160; },</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160; outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a047ca888c43bd7fb5702853bf72410d0">GetQuantizationScale</a>(),</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160; outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a770b51078da02f44a819e9f95d8058b5">GetQuantizationOffset</a>()));</div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160;</div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160; <span class="comment">// Optionally apply bias to output image.</span></div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160; <span class="keywordflow">if</span>(biasEnabled)</div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160; {</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160; <a class="code" href="_conv2d_test_impl_8cpp.html#aa1f4ce02e0904dc8cf1b7f42bc34d346">ApplyBias</a>(originalOutputImage,</div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160; outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a047ca888c43bd7fb5702853bf72410d0">GetQuantizationScale</a>(),</div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160; outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a770b51078da02f44a819e9f95d8058b5">GetQuantizationOffset</a>(),</div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160; biasV,</div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160; biasDesc.GetQuantizationScale(),</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160; biasDesc.GetQuantizationOffset(),</div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160; outputWidth,</div><div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160; outputHeight);</div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160; }</div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160;</div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160; <a class="code" href="struct_layer_test_result.html">LayerTestResult&lt;T, 4&gt;</a> ret(outputTensorInfo);</div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160; std::vector&lt;T&gt; outputImage = originalOutputImage;</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160; <span class="keywordflow">if</span> (layout == <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a>)</div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160; {</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160; <a class="code" href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a>(outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>(), NCHWToNHWC,</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160; originalOutputImage.data(), outputImage.data(), <span class="keyword">sizeof</span>(T));</div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160; }</div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160;</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160; ret.outputExpected = MakeTensor&lt;T, 4&gt;(outputTensorInfo, outputImage);</div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160;</div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160; std::unique_ptr&lt;armnn::ITensorHandle&gt; inputHandle = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">CreateTensorHandle</a>(inputTensorInfo);</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160; std::unique_ptr&lt;armnn::ITensorHandle&gt; outputHandle = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">CreateTensorHandle</a>(outputTensorInfo);</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160;</div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160; <a class="code" href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html">armnn::DepthwiseConvolution2dQueueDescriptor</a> data;</div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160; <a class="code" href="structarmnn_1_1_workload_info.html">armnn::WorkloadInfo</a> <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>;</div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160; <a class="code" href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a> weightsTensor(kernelDesc);</div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160; <a class="code" href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a> biasTensor(biasDesc);</div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160;</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a>(&amp;weightsTensor, &amp;kernel[0][0][0][0]);</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a>(&amp;biasTensor, &amp;bias[0]);</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160;</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160; AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160; AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160;</div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160; data.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html#a3369b66d9316a773a41711e3f590c041">m_Weight</a> = &amp;weightsTensor;</div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160; data.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html#ab3437cee6b0687812104fc1b37cbe8b3">m_Bias</a> = &amp;biasTensor; <span class="comment">// Still set this whether or not bias is enabled.</span></div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#afe6a3377c4531315354def9023c8fdda">m_StrideX</a> = 2;</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#ac1fe174bbadfb39a2b636940c2e647c8">m_StrideY</a> = 1;</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#ac18546ebbebbb32fe0a03baa9bf2c600">m_PadLeft</a> = 0;</div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a002bc30e590d78cbb4f4d12171055ca7">m_PadRight</a> = 0;</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a56b51f56cef50cdfa554258eecdab046">m_PadTop</a> = 1;</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aa9e49717ebdb741e8c767741647fc618">m_PadBottom</a> = 1;</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aea202e14d8874cefd9a0f778022b7e25">m_BiasEnabled</a> = biasEnabled;</div><div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a> = layout;</div><div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160;</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160; std::unique_ptr&lt;armnn::IWorkload&gt; workload = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#accb9759dfd2880efe0f8d2705ddee448">CreateDepthwiseConvolution2d</a>(data, info);</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160; inputHandle-&gt;Allocate();</div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160; outputHandle-&gt;Allocate();</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160;</div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a>(inputHandle.get(), &amp;input[0][0][0][0]);</div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160;</div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160; ExecuteWorkload(*workload, memoryManager);</div><div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160;</div><div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a>(&amp;ret.output[0][0][0][0], outputHandle.get());</div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160;</div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_i_workload_factory_html_accb9759dfd2880efe0f8d2705ddee448"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.html#accb9759dfd2880efe0f8d2705ddee448">armnn::IWorkloadFactory::CreateDepthwiseConvolution2d</a></div><div class="ttdeci">virtual std::unique_ptr&lt; IWorkload &gt; CreateDepthwiseConvolution2d(const DepthwiseConvolution2dQueueDescriptor &amp;descriptor, const WorkloadInfo &amp;info) const</div><div class="ttdef"><b>Definition:</b> <a href="_workload_factory_8cpp_source.html#l01160">WorkloadFactory.cpp:1160</a></div></div>
2946<div class="ttc" id="_tensor_copy_utils_8cpp_html_afaaca8c3f3a467d124bba44067d2afa8"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a></div><div class="ttdeci">void AllocateAndCopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00019">TensorCopyUtils.cpp:19</a></div></div>
2947<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_afe6a3377c4531315354def9023c8fdda"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#afe6a3377c4531315354def9023c8fdda">armnn::DepthwiseConvolution2dDescriptor::m_StrideX</a></div><div class="ttdeci">uint32_t m_StrideX</div><div class="ttdoc">Stride value when proceeding through input for the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00482">Descriptors.hpp:482</a></div></div>
2948<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_aa9e49717ebdb741e8c767741647fc618"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aa9e49717ebdb741e8c767741647fc618">armnn::DepthwiseConvolution2dDescriptor::m_PadBottom</a></div><div class="ttdeci">uint32_t m_PadBottom</div><div class="ttdoc">Padding bottom value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00480">Descriptors.hpp:480</a></div></div>
2949<div class="ttc" id="_conv2d_test_impl_8cpp_html_aa1f4ce02e0904dc8cf1b7f42bc34d346"><div class="ttname"><a href="_conv2d_test_impl_8cpp.html#aa1f4ce02e0904dc8cf1b7f42bc34d346">ApplyBias</a></div><div class="ttdeci">void ApplyBias(std::vector&lt; T &gt; &amp;v, float vScale, int32_t vOffset, const std::vector&lt; B &gt; &amp;bias, float bScale, int32_t bOffset, uint32_t w, uint32_t h)</div><div class="ttdef"><b>Definition:</b> <a href="_conv2d_test_impl_8cpp_source.html#l00169">Conv2dTestImpl.cpp:169</a></div></div>
2950<div class="ttc" id="classarmnn_1_1_tensor_info_html_a770b51078da02f44a819e9f95d8058b5"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a770b51078da02f44a819e9f95d8058b5">armnn::TensorInfo::GetQuantizationOffset</a></div><div class="ttdeci">int32_t GetQuantizationOffset() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00264">Tensor.cpp:264</a></div></div>
2951<div class="ttc" id="namespacearmnn_utils_html_af3c74017185773dd61d8ca6662d65d43"><div class="ttname"><a href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a></div><div class="ttdeci">void Permute(const armnn::TensorShape &amp;dstShape, const armnn::PermutationVector &amp;mappings, const void *src, void *dst, size_t dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="_permute_8cpp_source.html#l00121">Permute.cpp:121</a></div></div>
2952<div class="ttc" id="_tensor_copy_utils_8cpp_html_ae15f1a3c55d2db87683577de9fa4437c"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a></div><div class="ttdeci">void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00009">TensorCopyUtils.cpp:9</a></div></div>
2953<div class="ttc" id="classarmnn_1_1_permutation_vector_html"><div class="ttname"><a href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a></div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00170">Types.hpp:170</a></div></div>
2954<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_ac18546ebbebbb32fe0a03baa9bf2c600"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#ac18546ebbebbb32fe0a03baa9bf2c600">armnn::DepthwiseConvolution2dDescriptor::m_PadLeft</a></div><div class="ttdeci">uint32_t m_PadLeft</div><div class="ttdoc">Padding left value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00474">Descriptors.hpp:474</a></div></div>
2955<div class="ttc" id="namespacearmnn_utils_html_acee63cd08da47910fc166a1990988fa8"><div class="ttname"><a href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00038">TensorUtils.cpp:38</a></div></div>
2956<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
2957<div class="ttc" id="structarmnn_1_1_queue_descriptor_with_parameters_html_aad91b9bbf7aa365d304febe79a3d1333"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">armnn::QueueDescriptorWithParameters::m_Parameters</a></div><div class="ttdeci">LayerDescriptor m_Parameters</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00049">WorkloadData.hpp:49</a></div></div>
2958<div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
2959<div class="ttc" id="classarmnn_1_1_i_workload_factory_html_a15c140be4ddceffee16436f009d3ed94"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">armnn::IWorkloadFactory::CreateTensorHandle</a></div><div class="ttdeci">virtual std::unique_ptr&lt; ITensorHandle &gt; CreateTensorHandle(const TensorInfo &amp;tensorInfo, const bool IsMemoryManaged=true) const =0</div></div>
2960<div class="ttc" id="struct_layer_test_result_html"><div class="ttname"><a href="struct_layer_test_result.html">LayerTestResult</a></div><div class="ttdef"><b>Definition:</b> <a href="_layer_test_result_8hpp_source.html#l00029">LayerTestResult.hpp:29</a></div></div>
2961<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_queue_descriptor_html_ab3437cee6b0687812104fc1b37cbe8b3"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html#ab3437cee6b0687812104fc1b37cbe8b3">armnn::DepthwiseConvolution2dQueueDescriptor::m_Bias</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_Bias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00192">WorkloadData.hpp:192</a></div></div>
2962<div class="ttc" id="_tensor_copy_utils_8cpp_html_a99b626c58a926dc7d6df78d22ec186c8"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a></div><div class="ttdeci">void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00014">TensorCopyUtils.cpp:14</a></div></div>
2963<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">armnn::DepthwiseConvolution2dDescriptor::m_DataLayout</a></div><div class="ttdeci">DataLayout m_DataLayout</div><div class="ttdoc">The data layout to be used (NCHW, NHWC). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00492">Descriptors.hpp:492</a></div></div>
2964<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_a56b51f56cef50cdfa554258eecdab046"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a56b51f56cef50cdfa554258eecdab046">armnn::DepthwiseConvolution2dDescriptor::m_PadTop</a></div><div class="ttdeci">uint32_t m_PadTop</div><div class="ttdoc">Padding top value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00478">Descriptors.hpp:478</a></div></div>
2965<div class="ttc" id="structarmnn_1_1_workload_info_html"><div class="ttname"><a href="structarmnn_1_1_workload_info.html">armnn::WorkloadInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_workload_info_8hpp_source.html#l00016">WorkloadInfo.hpp:16</a></div></div>
2966<div class="ttc" id="namespacearmnn_html_a0743ed5e860c316a20b68ca96301b411"><div class="ttname"><a href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">armnn::ResolveType</a></div><div class="ttdeci">typename ResolveTypeImpl&lt; DT &gt;::Type ResolveType</div><div class="ttdef"><b>Definition:</b> <a href="_resolve_type_8hpp_source.html#l00066">ResolveType.hpp:66</a></div></div>
2967<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_queue_descriptor_html_a3369b66d9316a773a41711e3f590c041"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html#a3369b66d9316a773a41711e3f590c041">armnn::DepthwiseConvolution2dQueueDescriptor::m_Weight</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_Weight</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00191">WorkloadData.hpp:191</a></div></div>
2968<div class="ttc" id="_inference_test_image_8hpp_html_a65983f8cb907d873f2328bb8307c296aa9d5ed678fe57bcca610140957afab571"><div class="ttname"><a href="_inference_test_image_8hpp.html#a65983f8cb907d873f2328bb8307c296aa9d5ed678fe57bcca610140957afab571">ImageChannel::B</a></div></div>
2969<div class="ttc" id="classarmnn_1_1_tensor_info_html_a685739c4eb65a580e075282cfe6787d6"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a685739c4eb65a580e075282cfe6787d6">armnn::TensorInfo::SetQuantizationScale</a></div><div class="ttdeci">void SetQuantizationScale(float scale)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00259">Tensor.cpp:259</a></div></div>
2970<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_aea202e14d8874cefd9a0f778022b7e25"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aea202e14d8874cefd9a0f778022b7e25">armnn::DepthwiseConvolution2dDescriptor::m_BiasEnabled</a></div><div class="ttdeci">bool m_BiasEnabled</div><div class="ttdoc">Enable/disable bias. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00490">Descriptors.hpp:490</a></div></div>
2971<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_queue_descriptor_html"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html">armnn::DepthwiseConvolution2dQueueDescriptor</a></div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00183">WorkloadData.hpp:183</a></div></div>
2972<div class="ttc" id="classarmnn_1_1_tensor_info_html_a63cbc581012c957f9d68d224ddc3e43c"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a63cbc581012c957f9d68d224ddc3e43c">armnn::TensorInfo::SetQuantizationOffset</a></div><div class="ttdeci">void SetQuantizationOffset(int32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00275">Tensor.cpp:275</a></div></div>
2973<div class="ttc" id="classarmnn_1_1_scoped_cpu_tensor_handle_html"><div class="ttname"><a href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a></div><div class="ttdef"><b>Definition:</b> <a href="_cpu_tensor_handle_8hpp_source.html#l00106">CpuTensorHandle.hpp:106</a></div></div>
2974<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">armnn::TensorInfo::GetShape</a></div><div class="ttdeci">const TensorShape &amp; GetShape() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00088">Tensor.hpp:88</a></div></div>
2975<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_ac1fe174bbadfb39a2b636940c2e647c8"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#ac1fe174bbadfb39a2b636940c2e647c8">armnn::DepthwiseConvolution2dDescriptor::m_StrideY</a></div><div class="ttdeci">uint32_t m_StrideY</div><div class="ttdoc">Stride value when proceeding through input for the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00484">Descriptors.hpp:484</a></div></div>
2976<div class="ttc" id="classarmnn_1_1_tensor_info_html_a047ca888c43bd7fb5702853bf72410d0"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a047ca888c43bd7fb5702853bf72410d0">armnn::TensorInfo::GetQuantizationScale</a></div><div class="ttdeci">float GetQuantizationScale() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00247">Tensor.cpp:247</a></div></div>
2977<div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a></div></div>
2978<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_a002bc30e590d78cbb4f4d12171055ca7"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a002bc30e590d78cbb4f4d12171055ca7">armnn::DepthwiseConvolution2dDescriptor::m_PadRight</a></div><div class="ttdeci">uint32_t m_PadRight</div><div class="ttdoc">Padding right value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00476">Descriptors.hpp:476</a></div></div>
2979</div><!-- fragment -->
2980</div>
2981</div>
2982<a id="a46e9706106f1b08c964d953154c66ad6"></a>
2983<h2 class="memtitle"><span class="permalink"><a href="#a46e9706106f1b08c964d953154c66ad6">&#9670;&nbsp;</a></span>DepthwiseConvolution2dTestImpl() <span class="overload">[2/2]</span></h2>
2984
2985<div class="memitem">
2986<div class="memproto">
2987 <table class="memname">
2988 <tr>
2989 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T, 4&gt; DepthwiseConvolution2dTestImpl </td>
2990 <td>(</td>
2991 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
2992 <td class="paramname"><em>workloadFactory</em>, </td>
2993 </tr>
2994 <tr>
2995 <td class="paramkey"></td>
2996 <td></td>
2997 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
2998 <td class="paramname"><em>memoryManager</em>, </td>
2999 </tr>
3000 <tr>
3001 <td class="paramkey"></td>
3002 <td></td>
3003 <td class="paramtype">const boost::multi_array&lt; T, 4 &gt; &amp;&#160;</td>
3004 <td class="paramname"><em>originalInput</em>, </td>
3005 </tr>
3006 <tr>
3007 <td class="paramkey"></td>
3008 <td></td>
3009 <td class="paramtype">const boost::multi_array&lt; T, 4 &gt; &amp;&#160;</td>
3010 <td class="paramname"><em>originalKernel</em>, </td>
3011 </tr>
3012 <tr>
3013 <td class="paramkey"></td>
3014 <td></td>
3015 <td class="paramtype">const boost::multi_array&lt; B, 1 &gt; &amp;&#160;</td>
3016 <td class="paramname"><em>bias</em>, </td>
3017 </tr>
3018 <tr>
3019 <td class="paramkey"></td>
3020 <td></td>
3021 <td class="paramtype">const boost::multi_array&lt; T, 4 &gt; &amp;&#160;</td>
3022 <td class="paramname"><em>originalOutputExpected</em>, </td>
3023 </tr>
3024 <tr>
3025 <td class="paramkey"></td>
3026 <td></td>
3027 <td class="paramtype">float&#160;</td>
3028 <td class="paramname"><em>qScale</em>, </td>
3029 </tr>
3030 <tr>
3031 <td class="paramkey"></td>
3032 <td></td>
3033 <td class="paramtype">int32_t&#160;</td>
3034 <td class="paramname"><em>qOffset</em>, </td>
3035 </tr>
3036 <tr>
3037 <td class="paramkey"></td>
3038 <td></td>
3039 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
3040 <td class="paramname"><em>layout</em> = <code><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></code>, </td>
3041 </tr>
3042 <tr>
3043 <td class="paramkey"></td>
3044 <td></td>
3045 <td class="paramtype">uint32_t&#160;</td>
3046 <td class="paramname"><em>padLeft</em> = <code>0</code>, </td>
3047 </tr>
3048 <tr>
3049 <td class="paramkey"></td>
3050 <td></td>
3051 <td class="paramtype">uint32_t&#160;</td>
3052 <td class="paramname"><em>padTop</em> = <code>0</code>, </td>
3053 </tr>
3054 <tr>
3055 <td class="paramkey"></td>
3056 <td></td>
3057 <td class="paramtype">uint32_t&#160;</td>
3058 <td class="paramname"><em>padRight</em> = <code>0</code>, </td>
3059 </tr>
3060 <tr>
3061 <td class="paramkey"></td>
3062 <td></td>
3063 <td class="paramtype">uint32_t&#160;</td>
3064 <td class="paramname"><em>padBottom</em> = <code>0</code>, </td>
3065 </tr>
3066 <tr>
3067 <td class="paramkey"></td>
3068 <td></td>
3069 <td class="paramtype">uint32_t&#160;</td>
3070 <td class="paramname"><em>strideX</em> = <code>1</code>, </td>
3071 </tr>
3072 <tr>
3073 <td class="paramkey"></td>
3074 <td></td>
3075 <td class="paramtype">uint32_t&#160;</td>
3076 <td class="paramname"><em>strideY</em> = <code>1</code>, </td>
3077 </tr>
3078 <tr>
3079 <td class="paramkey"></td>
3080 <td></td>
3081 <td class="paramtype">uint32_t&#160;</td>
3082 <td class="paramname"><em>dilationX</em> = <code>1</code>, </td>
3083 </tr>
3084 <tr>
3085 <td class="paramkey"></td>
3086 <td></td>
3087 <td class="paramtype">uint32_t&#160;</td>
3088 <td class="paramname"><em>dilationY</em> = <code>1</code>&#160;</td>
3089 </tr>
3090 <tr>
3091 <td></td>
3092 <td>)</td>
3093 <td></td><td></td>
3094 </tr>
3095 </table>
3096</div><div class="memdoc">
3097
3098<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l01884">1884</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
3099
3100<p class="reference">References <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00019">AllocateAndCopyDataToITensorHandle()</a>, <a class="el" href="_conv2d_test_impl_8cpp_source.html#l00169">ApplyBias()</a>, <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00014">CopyDataFromITensorHandle()</a>, <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00009">CopyDataToITensorHandle()</a>, <a class="el" href="_workload_factory_8cpp_source.html#l01160">IWorkloadFactory::CreateDepthwiseConvolution2d()</a>, <a class="el" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">IWorkloadFactory::CreateTensorHandle()</a>, <a class="el" href="_tensor_8cpp_source.html#l00264">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.html#l00247">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00038">armnnUtils::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::info</a>, <a class="el" href="_workload_data_8hpp_source.html#l00192">DepthwiseConvolution2dQueueDescriptor::m_Bias</a>, <a class="el" href="_descriptors_8hpp_source.html#l00490">DepthwiseConvolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00492">DepthwiseConvolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00486">DepthwiseConvolution2dDescriptor::m_DilationX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00488">DepthwiseConvolution2dDescriptor::m_DilationY</a>, <a class="el" href="_descriptors_8hpp_source.html#l00480">DepthwiseConvolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00474">DepthwiseConvolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00476">DepthwiseConvolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00478">DepthwiseConvolution2dDescriptor::m_PadTop</a>, <a class="el" href="_workload_data_8hpp_source.html#l00049">QueueDescriptorWithParameters&lt; LayerDescriptor &gt;::m_Parameters</a>, <a class="el" href="_descriptors_8hpp_source.html#l00482">DepthwiseConvolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00484">DepthwiseConvolution2dDescriptor::m_StrideY</a>, <a class="el" href="_workload_data_8hpp_source.html#l00191">DepthwiseConvolution2dQueueDescriptor::m_Weight</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::NHWC</a>, <a class="el" href="_layer_test_result_8hpp_source.html#l00040">LayerTestResult&lt; T, n &gt;::output</a>, <a class="el" href="_layer_test_result_8hpp_source.html#l00041">LayerTestResult&lt; T, n &gt;::outputExpected</a>, <a class="el" href="_permute_8cpp_source.html#l00121">armnnUtils::Permute()</a>, <a class="el" href="_tensor_8cpp_source.html#l00275">TensorInfo::SetQuantizationOffset()</a>, and <a class="el" href="_tensor_8cpp_source.html#l00259">TensorInfo::SetQuantizationScale()</a>.</p>
3101<div class="fragment"><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160;{</div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(originalInput.shape()[2]);</div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(originalInput.shape()[3]);</div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(originalInput.shape()[1]);</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputNum = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(originalInput.shape()[0]);</div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160;</div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(originalOutputExpected.shape()[2]);</div><div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(originalOutputExpected.shape()[3]);</div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputChannels = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(originalOutputExpected.shape()[1]);</div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputNum = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(originalOutputExpected.shape()[0]);</div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160;</div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelHeight = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(originalKernel.shape()[2]);</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelWidth = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(originalKernel.shape()[3]);</div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelChannels = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(originalKernel.shape()[1]);</div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelDepthMul = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(originalKernel.shape()[0]);</div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160;</div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160; <span class="keywordtype">bool</span> biasEnabled = bias.size() &gt; 0;</div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160;</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160; <span class="comment">// This function currently assumes 1 batch of input/output (and duplicates this into 2 batches).</span></div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160; BOOST_ASSERT(inputNum == 1);</div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160; BOOST_ASSERT(outputNum == 1);</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160;</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160; <span class="comment">// If a bias is used, its size must equal the number of output channels.</span></div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160; BOOST_ASSERT(!biasEnabled || bias.size() == outputChannels);</div><div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160;</div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160;</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160; <span class="comment">// Note these tensors will use two (identical) batches.</span></div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputTensorInfo =</div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160; <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a>(2*inputNum, inputChannels, inputHeight, inputWidth, layout, ArmnnType);</div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputTensorInfo =</div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160; <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a>(2*outputNum, outputChannels, outputHeight, outputWidth, layout, ArmnnType);</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160;</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160; <span class="comment">// Kernel must be NCHW layout always, independently of the layout of the input and output for depthwise convolution.</span></div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> kernelDesc({kernelDepthMul, kernelChannels, kernelHeight, kernelWidth}, ArmnnType);</div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160;</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> biasDesc({<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(bias.size())}, ArmnnBType);</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160;</div><div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160; <span class="comment">// Set quantization parameters if the requested type is a quantized type.</span></div><div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160; <span class="keywordflow">if</span>(armnn::IsQuantizedType&lt;T&gt;())</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160; {</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160; inputTensorInfo.SetQuantizationScale(qScale);</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160; inputTensorInfo.SetQuantizationOffset(qOffset);</div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160; outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a685739c4eb65a580e075282cfe6787d6">SetQuantizationScale</a>(qScale);</div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160; outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a63cbc581012c957f9d68d224ddc3e43c">SetQuantizationOffset</a>(qOffset);</div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160; kernelDesc.SetQuantizationScale(qScale);</div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160; kernelDesc.SetQuantizationOffset(qOffset);</div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160; biasDesc.SetQuantizationScale(qScale*qScale);</div><div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160; biasDesc.SetQuantizationOffset(0);</div><div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160; }</div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160;</div><div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160; <a class="code" href="struct_layer_test_result.html">LayerTestResult&lt;T, 4&gt;</a> ret(outputTensorInfo);</div><div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160;</div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160; <span class="comment">// Construct input data</span></div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160; std::vector&lt;T&gt; input;</div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160; input.assign(originalInput.data(), originalInput.data() + 1*inputChannels*inputHeight*inputWidth);</div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160; std::vector&lt;T&gt; inputData;</div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160; inputData.insert(inputData.end(), input.begin(), input.end());</div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160; inputData.insert(inputData.end(), input.begin(), input.end());</div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160;</div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160; <span class="comment">// at this point if we require it permute the input data</span></div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a> NCHWToNHWC = { 0, 3, 1, 2 };</div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160; <span class="keywordflow">if</span> (layout == <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a>)</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160; {</div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160; std::vector&lt;T&gt; tmp(inputData.size());</div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160; <a class="code" href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a>(inputTensorInfo.GetShape(), NCHWToNHWC, inputData.data(), tmp.data(), <span class="keyword">sizeof</span>(T));</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160; inputData = tmp;</div><div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160; }</div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160;</div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160; <span class="keyword">auto</span> batchedInput = MakeTensor&lt;T, 4&gt;(inputTensorInfo, inputData);</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160;</div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160; std::vector&lt;T&gt; output;</div><div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160; output.assign(originalOutputExpected.data(),</div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160; originalOutputExpected.data() + outputChannels*outputHeight*outputWidth);</div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160;</div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160; <span class="comment">// Apply bias to output data if it is enabled.</span></div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160; <span class="keywordflow">if</span>(biasEnabled)</div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160; {</div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160; std::vector&lt;T&gt; biasV;</div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160; biasV.assign(bias.data(), bias.data() + outputChannels);</div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160; <a class="code" href="_conv2d_test_impl_8cpp.html#aa1f4ce02e0904dc8cf1b7f42bc34d346">ApplyBias</a>(output, outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a047ca888c43bd7fb5702853bf72410d0">GetQuantizationScale</a>(), outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a770b51078da02f44a819e9f95d8058b5">GetQuantizationOffset</a>(),</div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160; biasV, biasDesc.GetQuantizationScale(), biasDesc.GetQuantizationOffset(),</div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160; outputWidth, outputHeight);</div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160; }</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160;</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160; <span class="comment">// Construct expected output data</span></div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160; std::vector&lt;T&gt; outputData;</div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160; outputData.insert(outputData.end(), output.begin(), output.end());</div><div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160; outputData.insert(outputData.end(), output.begin(), output.end());</div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160;</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160; <span class="comment">// at this point if we require it permute the expected output</span></div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160; <span class="keywordflow">if</span> (layout == <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a>)</div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160; {</div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160; std::vector&lt;T&gt; tmp(outputData.size());</div><div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160; <a class="code" href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a>(outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>(), NCHWToNHWC, outputData.data(), tmp.data(), <span class="keyword">sizeof</span>(T));</div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160; outputData = tmp;</div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160; }</div><div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160; ret.outputExpected = MakeTensor&lt;T, 4&gt;(outputTensorInfo, outputData);</div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160;</div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160; std::unique_ptr&lt;armnn::ITensorHandle&gt; inputHandle = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">CreateTensorHandle</a>(inputTensorInfo);</div><div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>&#160; std::unique_ptr&lt;armnn::ITensorHandle&gt; outputHandle = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">CreateTensorHandle</a>(outputTensorInfo);</div><div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160;</div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160; <a class="code" href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html">armnn::DepthwiseConvolution2dQueueDescriptor</a> data;</div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160; <a class="code" href="structarmnn_1_1_workload_info.html">armnn::WorkloadInfo</a> <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>;</div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160; <a class="code" href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a> weightsTensor(kernelDesc);</div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160; <a class="code" href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a> biasTensor(biasDesc);</div><div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>&#160;</div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160; boost::multi_array&lt;T, 4&gt; kernel = boost::multi_array&lt;T, 4&gt;(originalKernel);</div><div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a>(&amp;weightsTensor, &amp;kernel[0][0][0][0]);</div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160;</div><div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160; <span class="keywordflow">if</span>(biasEnabled)</div><div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160; {</div><div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a>(&amp;biasTensor, &amp;bias[0]);</div><div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160; }</div><div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160;</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160; AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());</div><div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160; AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());</div><div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160;</div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160; data.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html#a3369b66d9316a773a41711e3f590c041">m_Weight</a> = &amp;weightsTensor;</div><div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160; data.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html#ab3437cee6b0687812104fc1b37cbe8b3">m_Bias</a> = &amp;biasTensor; <span class="comment">// Still set this whether or not bias is enabled - can be a source of bugs.</span></div><div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#afe6a3377c4531315354def9023c8fdda">m_StrideX</a> = strideX;</div><div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#ac1fe174bbadfb39a2b636940c2e647c8">m_StrideY</a> = strideY;</div><div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#ac18546ebbebbb32fe0a03baa9bf2c600">m_PadLeft</a> = padLeft;</div><div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a002bc30e590d78cbb4f4d12171055ca7">m_PadRight</a> = padRight;</div><div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a56b51f56cef50cdfa554258eecdab046">m_PadTop</a> = padTop;</div><div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aa9e49717ebdb741e8c767741647fc618">m_PadBottom</a> = padBottom;</div><div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aea202e14d8874cefd9a0f778022b7e25">m_BiasEnabled</a> = biasEnabled;</div><div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a> = layout;</div><div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aa3c6a77a963a98ccb8ea7b8fd008a8c1">m_DilationX</a> = dilationX;</div><div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a302b688d88dd73cde0fb1faef6679907">m_DilationY</a> = dilationY;</div><div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160;</div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160; std::unique_ptr&lt;armnn::IWorkload&gt; workload = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#accb9759dfd2880efe0f8d2705ddee448">CreateDepthwiseConvolution2d</a>(data, info);</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160; inputHandle-&gt;Allocate();</div><div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160; outputHandle-&gt;Allocate();</div><div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160;</div><div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a>(inputHandle.get(), &amp;batchedInput[0][0][0][0]);</div><div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160;</div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160; ExecuteWorkload(*workload, memoryManager);</div><div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160;</div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a>(&amp;ret.output[0][0][0][0], outputHandle.get());</div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160;</div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_i_workload_factory_html_accb9759dfd2880efe0f8d2705ddee448"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.html#accb9759dfd2880efe0f8d2705ddee448">armnn::IWorkloadFactory::CreateDepthwiseConvolution2d</a></div><div class="ttdeci">virtual std::unique_ptr&lt; IWorkload &gt; CreateDepthwiseConvolution2d(const DepthwiseConvolution2dQueueDescriptor &amp;descriptor, const WorkloadInfo &amp;info) const</div><div class="ttdef"><b>Definition:</b> <a href="_workload_factory_8cpp_source.html#l01160">WorkloadFactory.cpp:1160</a></div></div>
3102<div class="ttc" id="_tensor_copy_utils_8cpp_html_afaaca8c3f3a467d124bba44067d2afa8"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a></div><div class="ttdeci">void AllocateAndCopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00019">TensorCopyUtils.cpp:19</a></div></div>
3103<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_afe6a3377c4531315354def9023c8fdda"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#afe6a3377c4531315354def9023c8fdda">armnn::DepthwiseConvolution2dDescriptor::m_StrideX</a></div><div class="ttdeci">uint32_t m_StrideX</div><div class="ttdoc">Stride value when proceeding through input for the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00482">Descriptors.hpp:482</a></div></div>
3104<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_aa9e49717ebdb741e8c767741647fc618"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aa9e49717ebdb741e8c767741647fc618">armnn::DepthwiseConvolution2dDescriptor::m_PadBottom</a></div><div class="ttdeci">uint32_t m_PadBottom</div><div class="ttdoc">Padding bottom value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00480">Descriptors.hpp:480</a></div></div>
3105<div class="ttc" id="_conv2d_test_impl_8cpp_html_aa1f4ce02e0904dc8cf1b7f42bc34d346"><div class="ttname"><a href="_conv2d_test_impl_8cpp.html#aa1f4ce02e0904dc8cf1b7f42bc34d346">ApplyBias</a></div><div class="ttdeci">void ApplyBias(std::vector&lt; T &gt; &amp;v, float vScale, int32_t vOffset, const std::vector&lt; B &gt; &amp;bias, float bScale, int32_t bOffset, uint32_t w, uint32_t h)</div><div class="ttdef"><b>Definition:</b> <a href="_conv2d_test_impl_8cpp_source.html#l00169">Conv2dTestImpl.cpp:169</a></div></div>
3106<div class="ttc" id="classarmnn_1_1_tensor_info_html_a770b51078da02f44a819e9f95d8058b5"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a770b51078da02f44a819e9f95d8058b5">armnn::TensorInfo::GetQuantizationOffset</a></div><div class="ttdeci">int32_t GetQuantizationOffset() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00264">Tensor.cpp:264</a></div></div>
3107<div class="ttc" id="namespacearmnn_utils_html_af3c74017185773dd61d8ca6662d65d43"><div class="ttname"><a href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a></div><div class="ttdeci">void Permute(const armnn::TensorShape &amp;dstShape, const armnn::PermutationVector &amp;mappings, const void *src, void *dst, size_t dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="_permute_8cpp_source.html#l00121">Permute.cpp:121</a></div></div>
3108<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_aa3c6a77a963a98ccb8ea7b8fd008a8c1"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aa3c6a77a963a98ccb8ea7b8fd008a8c1">armnn::DepthwiseConvolution2dDescriptor::m_DilationX</a></div><div class="ttdeci">uint32_t m_DilationX</div><div class="ttdoc">Dilation factor value for width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00486">Descriptors.hpp:486</a></div></div>
3109<div class="ttc" id="_tensor_copy_utils_8cpp_html_ae15f1a3c55d2db87683577de9fa4437c"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a></div><div class="ttdeci">void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00009">TensorCopyUtils.cpp:9</a></div></div>
3110<div class="ttc" id="classarmnn_1_1_permutation_vector_html"><div class="ttname"><a href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a></div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00170">Types.hpp:170</a></div></div>
3111<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_ac18546ebbebbb32fe0a03baa9bf2c600"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#ac18546ebbebbb32fe0a03baa9bf2c600">armnn::DepthwiseConvolution2dDescriptor::m_PadLeft</a></div><div class="ttdeci">uint32_t m_PadLeft</div><div class="ttdoc">Padding left value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00474">Descriptors.hpp:474</a></div></div>
3112<div class="ttc" id="namespacearmnn_utils_html_acee63cd08da47910fc166a1990988fa8"><div class="ttname"><a href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00038">TensorUtils.cpp:38</a></div></div>
3113<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
3114<div class="ttc" id="structarmnn_1_1_queue_descriptor_with_parameters_html_aad91b9bbf7aa365d304febe79a3d1333"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">armnn::QueueDescriptorWithParameters::m_Parameters</a></div><div class="ttdeci">LayerDescriptor m_Parameters</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00049">WorkloadData.hpp:49</a></div></div>
3115<div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
3116<div class="ttc" id="classarmnn_1_1_i_workload_factory_html_a15c140be4ddceffee16436f009d3ed94"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">armnn::IWorkloadFactory::CreateTensorHandle</a></div><div class="ttdeci">virtual std::unique_ptr&lt; ITensorHandle &gt; CreateTensorHandle(const TensorInfo &amp;tensorInfo, const bool IsMemoryManaged=true) const =0</div></div>
3117<div class="ttc" id="struct_layer_test_result_html"><div class="ttname"><a href="struct_layer_test_result.html">LayerTestResult</a></div><div class="ttdef"><b>Definition:</b> <a href="_layer_test_result_8hpp_source.html#l00029">LayerTestResult.hpp:29</a></div></div>
3118<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_queue_descriptor_html_ab3437cee6b0687812104fc1b37cbe8b3"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html#ab3437cee6b0687812104fc1b37cbe8b3">armnn::DepthwiseConvolution2dQueueDescriptor::m_Bias</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_Bias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00192">WorkloadData.hpp:192</a></div></div>
3119<div class="ttc" id="_tensor_copy_utils_8cpp_html_a99b626c58a926dc7d6df78d22ec186c8"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a></div><div class="ttdeci">void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00014">TensorCopyUtils.cpp:14</a></div></div>
3120<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">armnn::DepthwiseConvolution2dDescriptor::m_DataLayout</a></div><div class="ttdeci">DataLayout m_DataLayout</div><div class="ttdoc">The data layout to be used (NCHW, NHWC). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00492">Descriptors.hpp:492</a></div></div>
3121<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_a56b51f56cef50cdfa554258eecdab046"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a56b51f56cef50cdfa554258eecdab046">armnn::DepthwiseConvolution2dDescriptor::m_PadTop</a></div><div class="ttdeci">uint32_t m_PadTop</div><div class="ttdoc">Padding top value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00478">Descriptors.hpp:478</a></div></div>
3122<div class="ttc" id="structarmnn_1_1_workload_info_html"><div class="ttname"><a href="structarmnn_1_1_workload_info.html">armnn::WorkloadInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_workload_info_8hpp_source.html#l00016">WorkloadInfo.hpp:16</a></div></div>
3123<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_queue_descriptor_html_a3369b66d9316a773a41711e3f590c041"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html#a3369b66d9316a773a41711e3f590c041">armnn::DepthwiseConvolution2dQueueDescriptor::m_Weight</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_Weight</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00191">WorkloadData.hpp:191</a></div></div>
3124<div class="ttc" id="classarmnn_1_1_tensor_info_html_a685739c4eb65a580e075282cfe6787d6"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a685739c4eb65a580e075282cfe6787d6">armnn::TensorInfo::SetQuantizationScale</a></div><div class="ttdeci">void SetQuantizationScale(float scale)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00259">Tensor.cpp:259</a></div></div>
3125<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_aea202e14d8874cefd9a0f778022b7e25"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aea202e14d8874cefd9a0f778022b7e25">armnn::DepthwiseConvolution2dDescriptor::m_BiasEnabled</a></div><div class="ttdeci">bool m_BiasEnabled</div><div class="ttdoc">Enable/disable bias. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00490">Descriptors.hpp:490</a></div></div>
3126<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_queue_descriptor_html"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html">armnn::DepthwiseConvolution2dQueueDescriptor</a></div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00183">WorkloadData.hpp:183</a></div></div>
3127<div class="ttc" id="classarmnn_1_1_tensor_info_html_a63cbc581012c957f9d68d224ddc3e43c"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a63cbc581012c957f9d68d224ddc3e43c">armnn::TensorInfo::SetQuantizationOffset</a></div><div class="ttdeci">void SetQuantizationOffset(int32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00275">Tensor.cpp:275</a></div></div>
3128<div class="ttc" id="classarmnn_1_1_scoped_cpu_tensor_handle_html"><div class="ttname"><a href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a></div><div class="ttdef"><b>Definition:</b> <a href="_cpu_tensor_handle_8hpp_source.html#l00106">CpuTensorHandle.hpp:106</a></div></div>
3129<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">armnn::TensorInfo::GetShape</a></div><div class="ttdeci">const TensorShape &amp; GetShape() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00088">Tensor.hpp:88</a></div></div>
3130<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_ac1fe174bbadfb39a2b636940c2e647c8"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#ac1fe174bbadfb39a2b636940c2e647c8">armnn::DepthwiseConvolution2dDescriptor::m_StrideY</a></div><div class="ttdeci">uint32_t m_StrideY</div><div class="ttdoc">Stride value when proceeding through input for the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00484">Descriptors.hpp:484</a></div></div>
3131<div class="ttc" id="classarmnn_1_1_tensor_info_html_a047ca888c43bd7fb5702853bf72410d0"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a047ca888c43bd7fb5702853bf72410d0">armnn::TensorInfo::GetQuantizationScale</a></div><div class="ttdeci">float GetQuantizationScale() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00247">Tensor.cpp:247</a></div></div>
3132<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_a302b688d88dd73cde0fb1faef6679907"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a302b688d88dd73cde0fb1faef6679907">armnn::DepthwiseConvolution2dDescriptor::m_DilationY</a></div><div class="ttdeci">uint32_t m_DilationY</div><div class="ttdoc">Dilation factor value for height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00488">Descriptors.hpp:488</a></div></div>
3133<div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a></div></div>
3134<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_a002bc30e590d78cbb4f4d12171055ca7"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a002bc30e590d78cbb4f4d12171055ca7">armnn::DepthwiseConvolution2dDescriptor::m_PadRight</a></div><div class="ttdeci">uint32_t m_PadRight</div><div class="ttdoc">Padding right value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00476">Descriptors.hpp:476</a></div></div>
3135</div><!-- fragment -->
3136</div>
3137</div>
3138<a id="a8076c31bd6e9eae629994a89a5fa18c3"></a>
3139<h2 class="memtitle"><span class="permalink"><a href="#a8076c31bd6e9eae629994a89a5fa18c3">&#9670;&nbsp;</a></span>DepthwiseConvolution2dUint8Test()</h2>
3140
3141<div class="memitem">
3142<div class="memproto">
3143 <table class="memname">
3144 <tr>
3145 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;uint8_t, 4&gt; DepthwiseConvolution2dUint8Test </td>
3146 <td>(</td>
3147 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
3148 <td class="paramname"><em>workloadFactory</em>, </td>
3149 </tr>
3150 <tr>
3151 <td class="paramkey"></td>
3152 <td></td>
3153 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
3154 <td class="paramname"><em>memoryManager</em>, </td>
3155 </tr>
3156 <tr>
3157 <td class="paramkey"></td>
3158 <td></td>
3159 <td class="paramtype">bool&#160;</td>
3160 <td class="paramname"><em>biasEnabled</em>, </td>
3161 </tr>
3162 <tr>
3163 <td class="paramkey"></td>
3164 <td></td>
3165 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
3166 <td class="paramname"><em>layout</em>&#160;</td>
3167 </tr>
3168 <tr>
3169 <td></td>
3170 <td>)</td>
3171 <td></td><td></td>
3172 </tr>
3173 </table>
3174</div><div class="memdoc">
3175
3176<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l03216">3216</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
3177<div class="fragment"><div class="line"><a name="l03221"></a><span class="lineno"> 3221</span>&#160;{</div><div class="line"><a name="l03222"></a><span class="lineno"> 3222</span>&#160; <span class="keywordflow">return</span> DepthwiseConvolution2dTestImpl&lt;armnn::DataType::QAsymmU8, armnn::DataType::Signed32&gt;(</div><div class="line"><a name="l03223"></a><span class="lineno"> 3223</span>&#160; workloadFactory, memoryManager, 0.5f, 50, biasEnabled, layout);</div><div class="line"><a name="l03224"></a><span class="lineno"> 3224</span>&#160;}</div></div><!-- fragment -->
3178</div>
3179</div>
3180<a id="a3481304dfd3e941b809c64979b940ad5"></a>
3181<h2 class="memtitle"><span class="permalink"><a href="#a3481304dfd3e941b809c64979b940ad5">&#9670;&nbsp;</a></span>GetBias()</h2>
3182
3183<div class="memitem">
3184<div class="memproto">
3185 <table class="memname">
3186 <tr>
3187 <td class="memname">boost::multi_array&lt;T, 1&gt; GetBias </td>
3188 <td>(</td>
3189 <td class="paramtype">bool&#160;</td>
3190 <td class="paramname"><em>biasEnabled</em>, </td>
3191 </tr>
3192 <tr>
3193 <td class="paramkey"></td>
3194 <td></td>
3195 <td class="paramtype">float&#160;</td>
3196 <td class="paramname"><em>qScale</em>, </td>
3197 </tr>
3198 <tr>
3199 <td class="paramkey"></td>
3200 <td></td>
3201 <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a>&#160;</td>
3202 <td class="paramname"><em>outputInfo</em>, </td>
3203 </tr>
3204 <tr>
3205 <td class="paramkey"></td>
3206 <td></td>
3207 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
3208 <td class="paramname"><em>layout</em>&#160;</td>
3209 </tr>
3210 <tr>
3211 <td></td>
3212 <td>)</td>
3213 <td></td><td></td>
3214 </tr>
3215 </table>
3216</div><div class="memdoc">
3217
3218<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l00122">122</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
3219
3220<p class="reference">References <a class="el" href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, and <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>.</p>
3221<div class="fragment"><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;{</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a> dataLayoutIndexed(layout);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelsIndex = dataLayoutIndexed.GetChannelsIndex();</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputChannels = outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[channelsIndex];</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; <span class="keywordflow">switch</span> (outputChannels)</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">return</span> GetBias2&lt;ArmnnType&gt;(biasEnabled, qScale);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">case</span> 4:</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">return</span> GetBias4&lt;ArmnnType&gt;(biasEnabled, qScale);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">case</span> 8:</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">return</span> GetBias8&lt;ArmnnType&gt;(biasEnabled, qScale);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;}</div><div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a></div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00017">DataLayoutIndexed.hpp:17</a></div></div>
3222<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">armnn::TensorInfo::GetShape</a></div><div class="ttdeci">const TensorShape &amp; GetShape() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00088">Tensor.hpp:88</a></div></div>
3223</div><!-- fragment -->
3224</div>
3225</div>
3226<a id="ad80bc46727797692d35f94d5935469cb"></a>
3227<h2 class="memtitle"><span class="permalink"><a href="#ad80bc46727797692d35f94d5935469cb">&#9670;&nbsp;</a></span>GetBias2()</h2>
3228
3229<div class="memitem">
3230<div class="memproto">
3231 <table class="memname">
3232 <tr>
3233 <td class="memname">boost::multi_array&lt;T, 1&gt; GetBias2 </td>
3234 <td>(</td>
3235 <td class="paramtype">bool&#160;</td>
3236 <td class="paramname"><em>biasEnabled</em>, </td>
3237 </tr>
3238 <tr>
3239 <td class="paramkey"></td>
3240 <td></td>
3241 <td class="paramtype">float&#160;</td>
3242 <td class="paramname"><em>qScale</em>&#160;</td>
3243 </tr>
3244 <tr>
3245 <td></td>
3246 <td>)</td>
3247 <td></td><td></td>
3248 </tr>
3249 </table>
3250</div><div class="memdoc">
3251
3252<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l00074">74</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
3253<div class="fragment"><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="keywordflow">if</span>(biasEnabled)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> biasDesc({<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(Bias2.size())}, ArmnnType);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; boost::multi_array&lt;T, 1&gt; bias = MakeTensor&lt;T, 1&gt;(biasDesc, QuantizedVector&lt;T&gt;(Bias2, qScale, 0.0f));</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> bias;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> boost::multi_array&lt;T, 1&gt;();</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
3254</div><!-- fragment -->
3255</div>
3256</div>
3257<a id="aa794621b8665d1df93a1c9aa95d5a90d"></a>
3258<h2 class="memtitle"><span class="permalink"><a href="#aa794621b8665d1df93a1c9aa95d5a90d">&#9670;&nbsp;</a></span>GetBias4()</h2>
3259
3260<div class="memitem">
3261<div class="memproto">
3262 <table class="memname">
3263 <tr>
3264 <td class="memname">boost::multi_array&lt;T, 1&gt; GetBias4 </td>
3265 <td>(</td>
3266 <td class="paramtype">bool&#160;</td>
3267 <td class="paramname"><em>biasEnabled</em>, </td>
3268 </tr>
3269 <tr>
3270 <td class="paramkey"></td>
3271 <td></td>
3272 <td class="paramtype">float&#160;</td>
3273 <td class="paramname"><em>qScale</em>&#160;</td>
3274 </tr>
3275 <tr>
3276 <td></td>
3277 <td>)</td>
3278 <td></td><td></td>
3279 </tr>
3280 </table>
3281</div><div class="memdoc">
3282
3283<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l00090">90</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
3284<div class="fragment"><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; <span class="keywordflow">if</span>(biasEnabled)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> biasDesc({<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(Bias4.size())}, ArmnnType);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; boost::multi_array&lt;T, 1&gt; bias = MakeTensor&lt;T, 1&gt;(biasDesc, QuantizedVector&lt;T&gt;(Bias4, qScale, 0.0f));</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">return</span> bias;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">return</span> boost::multi_array&lt;T, 1&gt;();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
3285</div><!-- fragment -->
3286</div>
3287</div>
3288<a id="ae04bff4e44deed6908feae29e57ffe0c"></a>
3289<h2 class="memtitle"><span class="permalink"><a href="#ae04bff4e44deed6908feae29e57ffe0c">&#9670;&nbsp;</a></span>GetBias8()</h2>
3290
3291<div class="memitem">
3292<div class="memproto">
3293 <table class="memname">
3294 <tr>
3295 <td class="memname">boost::multi_array&lt;T, 1&gt; GetBias8 </td>
3296 <td>(</td>
3297 <td class="paramtype">bool&#160;</td>
3298 <td class="paramname"><em>biasEnabled</em>, </td>
3299 </tr>
3300 <tr>
3301 <td class="paramkey"></td>
3302 <td></td>
3303 <td class="paramtype">float&#160;</td>
3304 <td class="paramname"><em>qScale</em>&#160;</td>
3305 </tr>
3306 <tr>
3307 <td></td>
3308 <td>)</td>
3309 <td></td><td></td>
3310 </tr>
3311 </table>
3312</div><div class="memdoc">
3313
3314<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l00106">106</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
3315<div class="fragment"><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;{</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">if</span>(biasEnabled)</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; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> biasDesc({<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(Bias4.size())}, ArmnnType);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; boost::multi_array&lt;T, 1&gt; bias = MakeTensor&lt;T, 1&gt;(biasDesc, QuantizedVector&lt;T&gt;(Bias8, qScale, 0.0f));</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">return</span> bias;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">return</span> boost::multi_array&lt;T, 1&gt;();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
3316</div><!-- fragment -->
3317</div>
3318</div>
3319<a id="ac7bae01fdca8edac70cc9bc722426b17"></a>
3320<h2 class="memtitle"><span class="permalink"><a href="#ac7bae01fdca8edac70cc9bc722426b17">&#9670;&nbsp;</a></span>SimpleConvolution2d3x3NhwcTest()</h2>
3321
3322<div class="memitem">
3323<div class="memproto">
3324 <table class="memname">
3325 <tr>
3326 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;float, 4&gt; SimpleConvolution2d3x3NhwcTest </td>
3327 <td>(</td>
3328 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
3329 <td class="paramname"><em>workloadFactory</em>, </td>
3330 </tr>
3331 <tr>
3332 <td class="paramkey"></td>
3333 <td></td>
3334 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
3335 <td class="paramname"><em>memoryManager</em>, </td>
3336 </tr>
3337 <tr>
3338 <td class="paramkey"></td>
3339 <td></td>
3340 <td class="paramtype">bool&#160;</td>
3341 <td class="paramname"><em>biasEnabled</em>&#160;</td>
3342 </tr>
3343 <tr>
3344 <td></td>
3345 <td>)</td>
3346 <td></td><td></td>
3347 </tr>
3348 </table>
3349</div><div class="memdoc">
3350
3351<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l02948">2948</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
3352
3353<p class="reference">References <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::NHWC</a>.</p>
3354<div class="fragment"><div class="line"><a name="l02952"></a><span class="lineno"> 2952</span>&#160;{</div><div class="line"><a name="l02953"></a><span class="lineno"> 2953</span>&#160; <span class="keywordflow">return</span> SimpleConvolution2d3x3NhwcTestCommon&lt;armnn::DataType::Float32&gt;(</div><div class="line"><a name="l02954"></a><span class="lineno"> 2954</span>&#160; workloadFactory,</div><div class="line"><a name="l02955"></a><span class="lineno"> 2955</span>&#160; memoryManager,</div><div class="line"><a name="l02956"></a><span class="lineno"> 2956</span>&#160; 0.f,</div><div class="line"><a name="l02957"></a><span class="lineno"> 2957</span>&#160; 0,</div><div class="line"><a name="l02958"></a><span class="lineno"> 2958</span>&#160; biasEnabled,</div><div class="line"><a name="l02959"></a><span class="lineno"> 2959</span>&#160; <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a>);</div><div class="line"><a name="l02960"></a><span class="lineno"> 2960</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a></div></div>
3355</div><!-- fragment -->
3356</div>
3357</div>
3358<a id="a8225effadfc56a5d831ae0f7f686a6cf"></a>
3359<h2 class="memtitle"><span class="permalink"><a href="#a8225effadfc56a5d831ae0f7f686a6cf">&#9670;&nbsp;</a></span>SimpleConvolution2d3x3NhwcTestCommon()</h2>
3360
3361<div class="memitem">
3362<div class="memproto">
3363 <table class="memname">
3364 <tr>
3365 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T, 4&gt; SimpleConvolution2d3x3NhwcTestCommon </td>
3366 <td>(</td>
3367 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
3368 <td class="paramname"><em>workloadFactory</em>, </td>
3369 </tr>
3370 <tr>
3371 <td class="paramkey"></td>
3372 <td></td>
3373 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
3374 <td class="paramname"><em>memoryManager</em>, </td>
3375 </tr>
3376 <tr>
3377 <td class="paramkey"></td>
3378 <td></td>
3379 <td class="paramtype">float&#160;</td>
3380 <td class="paramname"><em>qScale</em>, </td>
3381 </tr>
3382 <tr>
3383 <td class="paramkey"></td>
3384 <td></td>
3385 <td class="paramtype">int32_t&#160;</td>
3386 <td class="paramname"><em>qOffset</em>, </td>
3387 </tr>
3388 <tr>
3389 <td class="paramkey"></td>
3390 <td></td>
3391 <td class="paramtype">bool&#160;</td>
3392 <td class="paramname"><em>biasEnabled</em>, </td>
3393 </tr>
3394 <tr>
3395 <td class="paramkey"></td>
3396 <td></td>
3397 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
3398 <td class="paramname"><em>dataLayout</em>&#160;</td>
3399 </tr>
3400 <tr>
3401 <td></td>
3402 <td>)</td>
3403 <td></td><td></td>
3404 </tr>
3405 </table>
3406</div><div class="memdoc">
3407
3408<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l00582">582</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
3409<div class="fragment"><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;{</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; boost::ignore_unused(biasEnabled);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="comment">// Use common single-batch 5x5 image.</span></div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputDesc({1, 3, 4, 1}, ArmnnType);</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; boost::multi_array&lt;T, 4&gt; input = MakeTensor&lt;T, 4&gt;(inputDesc,</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; {</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; 1, 5, 2, 3,</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; 8, 7, 3, 6,</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; 3, 3, 9, 1</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; });</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="comment">// Use a 2-element batch of 3-channel 3x3 kernels.</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> kernelDesc({1, 3, 3, 1}, ArmnnType);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; boost::multi_array&lt;T, 4&gt; kernel = MakeTensor&lt;T, 4&gt;(kernelDesc, {</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; 4, 5, 6,</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; 0, 0, 0,</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; 3, 2, 1</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; });</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="comment">// Expected output is 1 batch of a 5x5 image.</span></div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputDesc({1, 3, 4, 1}, ArmnnType);</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keyword">const</span> std::vector&lt;float&gt; outputData =</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; {</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; 23, 41, 33, 21,</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; 44, 65, 76, 52,</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; 82, 85, 79, 42</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; };</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; boost::multi_array&lt;T, 4&gt; expectedOutput = MakeTensor&lt;T, 4&gt;(outputDesc, outputData);</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordflow">return</span> SimpleConvolution2dNhwcTestImpl&lt;ArmnnType, ArmnnType&gt;(</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; workloadFactory,</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; memoryManager,</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; input,</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; kernel,</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; boost::multi_array&lt;T, 1&gt;(),</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; expectedOutput,</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; dataLayout,</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; qScale,</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; qOffset);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
3410</div><!-- fragment -->
3411</div>
3412</div>
3413<a id="abac8f73ae590a93fe91115371ae4ced3"></a>
3414<h2 class="memtitle"><span class="permalink"><a href="#abac8f73ae590a93fe91115371ae4ced3">&#9670;&nbsp;</a></span>SimpleConvolution2d3x3QSymm16Test()</h2>
3415
3416<div class="memitem">
3417<div class="memproto">
3418 <table class="memname">
3419 <tr>
3420 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;int16_t, 4&gt; SimpleConvolution2d3x3QSymm16Test </td>
3421 <td>(</td>
3422 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
3423 <td class="paramname"><em>workloadFactory</em>, </td>
3424 </tr>
3425 <tr>
3426 <td class="paramkey"></td>
3427 <td></td>
3428 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
3429 <td class="paramname"><em>memoryManager</em>, </td>
3430 </tr>
3431 <tr>
3432 <td class="paramkey"></td>
3433 <td></td>
3434 <td class="paramtype">bool&#160;</td>
3435 <td class="paramname"><em>biasEnabled</em>, </td>
3436 </tr>
3437 <tr>
3438 <td class="paramkey"></td>
3439 <td></td>
3440 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
3441 <td class="paramname"><em>layout</em>&#160;</td>
3442 </tr>
3443 <tr>
3444 <td></td>
3445 <td>)</td>
3446 <td></td><td></td>
3447 </tr>
3448 </table>
3449</div><div class="memdoc">
3450
3451<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l02997">2997</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
3452<div class="fragment"><div class="line"><a name="l03002"></a><span class="lineno"> 3002</span>&#160;{</div><div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>&#160; <span class="keywordflow">return</span> SimpleConvolution2d3x3TestCommon&lt;armnn::DataType::QSymmS16, armnn::DataType::Signed32&gt;(</div><div class="line"><a name="l03004"></a><span class="lineno"> 3004</span>&#160; workloadFactory, memoryManager, 0.5f, 50, biasEnabled, layout);</div><div class="line"><a name="l03005"></a><span class="lineno"> 3005</span>&#160;}</div></div><!-- fragment -->
3453</div>
3454</div>
3455<a id="af4ac6874d18e1cb59873a17073512873"></a>
3456<h2 class="memtitle"><span class="permalink"><a href="#af4ac6874d18e1cb59873a17073512873">&#9670;&nbsp;</a></span>SimpleConvolution2d3x3Stride2x2Test()</h2>
3457
3458<div class="memitem">
3459<div class="memproto">
3460 <table class="memname">
3461 <tr>
3462 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;float, 4&gt; SimpleConvolution2d3x3Stride2x2Test </td>
3463 <td>(</td>
3464 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
3465 <td class="paramname"><em>workloadFactory</em>, </td>
3466 </tr>
3467 <tr>
3468 <td class="paramkey"></td>
3469 <td></td>
3470 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
3471 <td class="paramname"><em>memoryManager</em>, </td>
3472 </tr>
3473 <tr>
3474 <td class="paramkey"></td>
3475 <td></td>
3476 <td class="paramtype">bool&#160;</td>
3477 <td class="paramname"><em>biasEnabled</em>, </td>
3478 </tr>
3479 <tr>
3480 <td class="paramkey"></td>
3481 <td></td>
3482 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
3483 <td class="paramname"><em>layout</em>&#160;</td>
3484 </tr>
3485 <tr>
3486 <td></td>
3487 <td>)</td>
3488 <td></td><td></td>
3489 </tr>
3490 </table>
3491</div><div class="memdoc">
3492
3493<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l02962">2962</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
3494<div class="fragment"><div class="line"><a name="l02967"></a><span class="lineno"> 2967</span>&#160;{</div><div class="line"><a name="l02968"></a><span class="lineno"> 2968</span>&#160; <span class="keywordflow">return</span> SimpleConvolution2d3x3Stride2x2TestCommon&lt;armnn::DataType::Float32&gt;(</div><div class="line"><a name="l02969"></a><span class="lineno"> 2969</span>&#160; workloadFactory,</div><div class="line"><a name="l02970"></a><span class="lineno"> 2970</span>&#160; memoryManager,</div><div class="line"><a name="l02971"></a><span class="lineno"> 2971</span>&#160; 0.f,</div><div class="line"><a name="l02972"></a><span class="lineno"> 2972</span>&#160; 0,</div><div class="line"><a name="l02973"></a><span class="lineno"> 2973</span>&#160; biasEnabled,</div><div class="line"><a name="l02974"></a><span class="lineno"> 2974</span>&#160; layout);</div><div class="line"><a name="l02975"></a><span class="lineno"> 2975</span>&#160;}</div></div><!-- fragment -->
3495</div>
3496</div>
3497<a id="aafa5b575d2bc27ec7229f1d87ab8efdb"></a>
3498<h2 class="memtitle"><span class="permalink"><a href="#aafa5b575d2bc27ec7229f1d87ab8efdb">&#9670;&nbsp;</a></span>SimpleConvolution2d3x3Stride2x2TestCommon()</h2>
3499
3500<div class="memitem">
3501<div class="memproto">
3502 <table class="memname">
3503 <tr>
3504 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T, 4&gt; SimpleConvolution2d3x3Stride2x2TestCommon </td>
3505 <td>(</td>
3506 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
3507 <td class="paramname"><em>workloadFactory</em>, </td>
3508 </tr>
3509 <tr>
3510 <td class="paramkey"></td>
3511 <td></td>
3512 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
3513 <td class="paramname"><em>memoryManager</em>, </td>
3514 </tr>
3515 <tr>
3516 <td class="paramkey"></td>
3517 <td></td>
3518 <td class="paramtype">float&#160;</td>
3519 <td class="paramname"><em>qScale</em>, </td>
3520 </tr>
3521 <tr>
3522 <td class="paramkey"></td>
3523 <td></td>
3524 <td class="paramtype">int32_t&#160;</td>
3525 <td class="paramname"><em>qOffset</em>, </td>
3526 </tr>
3527 <tr>
3528 <td class="paramkey"></td>
3529 <td></td>
3530 <td class="paramtype">bool&#160;</td>
3531 <td class="paramname"><em>biasEnabled</em>, </td>
3532 </tr>
3533 <tr>
3534 <td class="paramkey"></td>
3535 <td></td>
3536 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> &amp;&#160;</td>
3537 <td class="paramname"><em>dataLayout</em>&#160;</td>
3538 </tr>
3539 <tr>
3540 <td></td>
3541 <td>)</td>
3542 <td></td><td></td>
3543 </tr>
3544 </table>
3545</div><div class="memdoc">
3546
3547<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l00635">635</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
3548<div class="fragment"><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;{</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; boost::ignore_unused(biasEnabled);</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="comment">// Input is a single-batch, 1 channel, 5x5 image.</span></div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputDesc({1, 5, 5, 1}, ArmnnType);</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; boost::multi_array&lt;T, 4&gt; input = MakeTensor&lt;T, 4&gt;(inputDesc,</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; {</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; 1, 5, 2, 3, 5,</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; 8, 7, 3, 6, 3,</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; 3, 3, 9, 1, 9,</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; 4, 1, 8, 1, 3,</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; 6, 8, 1, 9, 2</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; });</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="comment">// Use a 3x3 kernel.</span></div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> kernelDesc({1, 3, 3, 1}, ArmnnType);</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; boost::multi_array&lt;T, 4&gt; kernel = MakeTensor&lt;T, 4&gt;(kernelDesc,</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; {</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; 4, 5, 6,</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; 0, 0, 0,</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; 3, 2, 1</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; });</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="comment">// Expected output is a single-batch, 1 channel, 3x3 image.</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputDesc({1, 3, 3, 1}, ArmnnType);</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160;</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keyword">const</span> std::vector&lt;T&gt; outputData =</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; {</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; 23, 33, 24,</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; 91, 99, 48,</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; 26, 50, 19</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; };</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; boost::multi_array&lt;T, 4&gt; expectedOutput = MakeTensor&lt;T, 4&gt;(outputDesc, outputData);</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; uint32_t padLeft = 1;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; uint32_t padTop = 1;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; uint32_t padRight = 1;</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; uint32_t padBottom = 1;</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; uint32_t strideX = 2;</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; uint32_t strideY = 2;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keywordflow">return</span> SimpleConvolution2dNhwcTestImpl&lt;ArmnnType, ArmnnType&gt;(</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; workloadFactory,</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; memoryManager,</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; input,</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; kernel,</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; boost::multi_array&lt;T, 1&gt;(),</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; expectedOutput,</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; dataLayout,</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; qScale,</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; qOffset,</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; padLeft,</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; padTop,</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; padRight,</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; padBottom,</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; strideX,</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; strideY);</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
3549</div><!-- fragment -->
3550</div>
3551</div>
3552<a id="acbe1a2adccd9e0aad14fc0ccb9266b0d"></a>
3553<h2 class="memtitle"><span class="permalink"><a href="#acbe1a2adccd9e0aad14fc0ccb9266b0d">&#9670;&nbsp;</a></span>SimpleConvolution2d3x3Test()</h2>
3554
3555<div class="memitem">
3556<div class="memproto">
3557 <table class="memname">
3558 <tr>
3559 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;float, 4&gt; SimpleConvolution2d3x3Test </td>
3560 <td>(</td>
3561 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
3562 <td class="paramname"><em>workloadFactory</em>, </td>
3563 </tr>
3564 <tr>
3565 <td class="paramkey"></td>
3566 <td></td>
3567 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
3568 <td class="paramname"><em>memoryManager</em>, </td>
3569 </tr>
3570 <tr>
3571 <td class="paramkey"></td>
3572 <td></td>
3573 <td class="paramtype">bool&#160;</td>
3574 <td class="paramname"><em>biasEnabled</em>, </td>
3575 </tr>
3576 <tr>
3577 <td class="paramkey"></td>
3578 <td></td>
3579 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
3580 <td class="paramname"><em>layout</em>&#160;</td>
3581 </tr>
3582 <tr>
3583 <td></td>
3584 <td>)</td>
3585 <td></td><td></td>
3586 </tr>
3587 </table>
3588</div><div class="memdoc">
3589
3590<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l02938">2938</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
3591<div class="fragment"><div class="line"><a name="l02943"></a><span class="lineno"> 2943</span>&#160;{</div><div class="line"><a name="l02944"></a><span class="lineno"> 2944</span>&#160; <span class="keywordflow">return</span> SimpleConvolution2d3x3TestCommon&lt;armnn::DataType::Float32, armnn::DataType::Float32&gt;(</div><div class="line"><a name="l02945"></a><span class="lineno"> 2945</span>&#160; workloadFactory, memoryManager, 0.f, 0, biasEnabled, layout);</div><div class="line"><a name="l02946"></a><span class="lineno"> 2946</span>&#160;}</div></div><!-- fragment -->
3592</div>
3593</div>
3594<a id="a5070a9bac7ba582ed116a8b2323ed2a5"></a>
3595<h2 class="memtitle"><span class="permalink"><a href="#a5070a9bac7ba582ed116a8b2323ed2a5">&#9670;&nbsp;</a></span>SimpleConvolution2d3x3TestCommon()</h2>
3596
3597<div class="memitem">
3598<div class="memproto">
3599 <table class="memname">
3600 <tr>
3601 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T, 4&gt; SimpleConvolution2d3x3TestCommon </td>
3602 <td>(</td>
3603 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
3604 <td class="paramname"><em>workloadFactory</em>, </td>
3605 </tr>
3606 <tr>
3607 <td class="paramkey"></td>
3608 <td></td>
3609 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
3610 <td class="paramname"><em>memoryManager</em>, </td>
3611 </tr>
3612 <tr>
3613 <td class="paramkey"></td>
3614 <td></td>
3615 <td class="paramtype">float&#160;</td>
3616 <td class="paramname"><em>qScale</em>, </td>
3617 </tr>
3618 <tr>
3619 <td class="paramkey"></td>
3620 <td></td>
3621 <td class="paramtype">int32_t&#160;</td>
3622 <td class="paramname"><em>qOffset</em>, </td>
3623 </tr>
3624 <tr>
3625 <td class="paramkey"></td>
3626 <td></td>
3627 <td class="paramtype">bool&#160;</td>
3628 <td class="paramname"><em>biasEnabled</em>, </td>
3629 </tr>
3630 <tr>
3631 <td class="paramkey"></td>
3632 <td></td>
3633 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
3634 <td class="paramname"><em>layout</em>&#160;</td>
3635 </tr>
3636 <tr>
3637 <td></td>
3638 <td>)</td>
3639 <td></td><td></td>
3640 </tr>
3641 </table>
3642</div><div class="memdoc">
3643
3644<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l00790">790</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
3645<div class="fragment"><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;{</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <span class="comment">// Use a 3x3 kernel, which exercises ArmCompute&#39;s direct convolution path.</span></div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160;</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <span class="comment">// Use common single-batch 3-channel 16x8 image.</span></div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputDesc({1, 3, 8, 16}, ArmnnType);</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; boost::multi_array&lt;T, 4&gt; input = MakeTensor&lt;T, 4&gt;(inputDesc, QuantizedVector&lt;T&gt;(ConvInput3x8x16, qScale, qOffset));</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160;</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="comment">// Use a 2-element batch of 3-channel 3x3 kernels.</span></div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> kernelDesc({2, 3, 3, 3}, ArmnnType);</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; boost::multi_array&lt;T, 4&gt; kernel = MakeTensor&lt;T, 4&gt;(kernelDesc, std::vector&lt;T&gt;(</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; QuantizedVector&lt;T&gt;({</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; 1, 1, 1,</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; 1, -1, 1,</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; 1, 1, 1,</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160;</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; 0, 0, 0,</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; 0, 0, 0,</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; 0, 0, 0,</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160;</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; 2, 2, 2,</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; 2, 2, 2,</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; 2, 2, 2,</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160;</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160;</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; 0, 0, 0,</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; 0, 0, 0,</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; 0, 0, 0,</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160;</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; 1, 1, 1,</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; 1, 1, 1,</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; 1, 1, 1,</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; 0, 0, 0,</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; 0, 0, 0,</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; 0, 0, 0</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; },</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; qScale, qOffset)));</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160;</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="comment">// Expected output is 1 batch of a 2-channel 14x6 image.</span></div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputDesc({1, 2, 6, 14}, ArmnnType);</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; boost::multi_array&lt;T, 4&gt; expectedOutput = MakeTensor&lt;T, 4&gt;(outputDesc, std::vector&lt;T&gt;(</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; QuantizedVector&lt;T&gt;({</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; -14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; -14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; -14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; -14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,-14.5f,</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160;</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; },</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; qScale, qOffset)));</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160;</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <span class="keywordflow">return</span> SimpleConvolution2dTestImpl&lt;ArmnnType, ArmnnBType&gt;(</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; workloadFactory,</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; memoryManager,</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; input,</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; kernel,</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; GetBias2&lt;ArmnnBType&gt;(biasEnabled, qScale * qScale),</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; expectedOutput,</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; qScale,</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; qOffset,</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; layout);</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
3646</div><!-- fragment -->
3647</div>
3648</div>
3649<a id="ad45f359d9d4bee360bee857faa79d292"></a>
3650<h2 class="memtitle"><span class="permalink"><a href="#ad45f359d9d4bee360bee857faa79d292">&#9670;&nbsp;</a></span>SimpleConvolution2d3x3Uint8Test()</h2>
3651
3652<div class="memitem">
3653<div class="memproto">
3654 <table class="memname">
3655 <tr>
3656 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;uint8_t, 4&gt; SimpleConvolution2d3x3Uint8Test </td>
3657 <td>(</td>
3658 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
3659 <td class="paramname"><em>workloadFactory</em>, </td>
3660 </tr>
3661 <tr>
3662 <td class="paramkey"></td>
3663 <td></td>
3664 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
3665 <td class="paramname"><em>memoryManager</em>, </td>
3666 </tr>
3667 <tr>
3668 <td class="paramkey"></td>
3669 <td></td>
3670 <td class="paramtype">bool&#160;</td>
3671 <td class="paramname"><em>biasEnabled</em>, </td>
3672 </tr>
3673 <tr>
3674 <td class="paramkey"></td>
3675 <td></td>
3676 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
3677 <td class="paramname"><em>layout</em>&#160;</td>
3678 </tr>
3679 <tr>
3680 <td></td>
3681 <td>)</td>
3682 <td></td><td></td>
3683 </tr>
3684 </table>
3685</div><div class="memdoc">
3686
3687<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l02977">2977</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
3688<div class="fragment"><div class="line"><a name="l02982"></a><span class="lineno"> 2982</span>&#160;{</div><div class="line"><a name="l02983"></a><span class="lineno"> 2983</span>&#160; <span class="keywordflow">return</span> SimpleConvolution2d3x3TestCommon&lt;armnn::DataType::QAsymmU8, armnn::DataType::Signed32&gt;(</div><div class="line"><a name="l02984"></a><span class="lineno"> 2984</span>&#160; workloadFactory, memoryManager, 0.5f, 50, biasEnabled, layout);</div><div class="line"><a name="l02985"></a><span class="lineno"> 2985</span>&#160;}</div></div><!-- fragment -->
3689</div>
3690</div>
3691<a id="a9dcd2fb98f5c3284c74f65a7c7a69da1"></a>
3692<h2 class="memtitle"><span class="permalink"><a href="#a9dcd2fb98f5c3284c74f65a7c7a69da1">&#9670;&nbsp;</a></span>SimpleConvolution2d3x5QSymm16Test()</h2>
3693
3694<div class="memitem">
3695<div class="memproto">
3696 <table class="memname">
3697 <tr>
3698 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;int16_t, 4&gt; SimpleConvolution2d3x5QSymm16Test </td>
3699 <td>(</td>
3700 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
3701 <td class="paramname"><em>workloadFactory</em>, </td>
3702 </tr>
3703 <tr>
3704 <td class="paramkey"></td>
3705 <td></td>
3706 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
3707 <td class="paramname"><em>memoryManager</em>, </td>
3708 </tr>
3709 <tr>
3710 <td class="paramkey"></td>
3711 <td></td>
3712 <td class="paramtype">bool&#160;</td>
3713 <td class="paramname"><em>biasEnabled</em>, </td>
3714 </tr>
3715 <tr>
3716 <td class="paramkey"></td>
3717 <td></td>
3718 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
3719 <td class="paramname"><em>layout</em>&#160;</td>
3720 </tr>
3721 <tr>
3722 <td></td>
3723 <td>)</td>
3724 <td></td><td></td>
3725 </tr>
3726 </table>
3727</div><div class="memdoc">
3728
3729<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l02987">2987</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
3730<div class="fragment"><div class="line"><a name="l02992"></a><span class="lineno"> 2992</span>&#160;{</div><div class="line"><a name="l02993"></a><span class="lineno"> 2993</span>&#160; <span class="keywordflow">return</span> SimpleConvolution2d3x5TestCommon&lt;armnn::DataType::QSymmS16, armnn::DataType::Signed32&gt;(</div><div class="line"><a name="l02994"></a><span class="lineno"> 2994</span>&#160; workloadFactory, memoryManager, 0.5f, 50, biasEnabled, layout);</div><div class="line"><a name="l02995"></a><span class="lineno"> 2995</span>&#160;}</div></div><!-- fragment -->
3731</div>
3732</div>
3733<a id="afb5e7d86e241292d9cb899b960da54af"></a>
3734<h2 class="memtitle"><span class="permalink"><a href="#afb5e7d86e241292d9cb899b960da54af">&#9670;&nbsp;</a></span>SimpleConvolution2d3x5Test()</h2>
3735
3736<div class="memitem">
3737<div class="memproto">
3738 <table class="memname">
3739 <tr>
3740 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;float, 4&gt; SimpleConvolution2d3x5Test </td>
3741 <td>(</td>
3742 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
3743 <td class="paramname"><em>workloadFactory</em>, </td>
3744 </tr>
3745 <tr>
3746 <td class="paramkey"></td>
3747 <td></td>
3748 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
3749 <td class="paramname"><em>memoryManager</em>, </td>
3750 </tr>
3751 <tr>
3752 <td class="paramkey"></td>
3753 <td></td>
3754 <td class="paramtype">bool&#160;</td>
3755 <td class="paramname"><em>biasEnabled</em>, </td>
3756 </tr>
3757 <tr>
3758 <td class="paramkey"></td>
3759 <td></td>
3760 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
3761 <td class="paramname"><em>layout</em>&#160;</td>
3762 </tr>
3763 <tr>
3764 <td></td>
3765 <td>)</td>
3766 <td></td><td></td>
3767 </tr>
3768 </table>
3769</div><div class="memdoc">
3770
3771<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l02918">2918</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
3772<div class="fragment"><div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>&#160;{</div><div class="line"><a name="l02924"></a><span class="lineno"> 2924</span>&#160; <span class="keywordflow">return</span> SimpleConvolution2d3x5TestCommon&lt;armnn::DataType::Float32, armnn::DataType::Float32&gt;(</div><div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>&#160; workloadFactory, memoryManager, 0.f, 0, biasEnabled, layout);</div><div class="line"><a name="l02926"></a><span class="lineno"> 2926</span>&#160;}</div></div><!-- fragment -->
3773</div>
3774</div>
3775<a id="a3660079f1e20e5b1618402dfc5214441"></a>
3776<h2 class="memtitle"><span class="permalink"><a href="#a3660079f1e20e5b1618402dfc5214441">&#9670;&nbsp;</a></span>SimpleConvolution2d3x5TestCommon()</h2>
3777
3778<div class="memitem">
3779<div class="memproto">
3780 <table class="memname">
3781 <tr>
3782 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T, 4&gt; SimpleConvolution2d3x5TestCommon </td>
3783 <td>(</td>
3784 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
3785 <td class="paramname"><em>workloadFactory</em>, </td>
3786 </tr>
3787 <tr>
3788 <td class="paramkey"></td>
3789 <td></td>
3790 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
3791 <td class="paramname"><em>memoryManager</em>, </td>
3792 </tr>
3793 <tr>
3794 <td class="paramkey"></td>
3795 <td></td>
3796 <td class="paramtype">float&#160;</td>
3797 <td class="paramname"><em>qScale</em>, </td>
3798 </tr>
3799 <tr>
3800 <td class="paramkey"></td>
3801 <td></td>
3802 <td class="paramtype">int32_t&#160;</td>
3803 <td class="paramname"><em>qOffset</em>, </td>
3804 </tr>
3805 <tr>
3806 <td class="paramkey"></td>
3807 <td></td>
3808 <td class="paramtype">bool&#160;</td>
3809 <td class="paramname"><em>biasEnabled</em>, </td>
3810 </tr>
3811 <tr>
3812 <td class="paramkey"></td>
3813 <td></td>
3814 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
3815 <td class="paramname"><em>layout</em>&#160;</td>
3816 </tr>
3817 <tr>
3818 <td></td>
3819 <td>)</td>
3820 <td></td><td></td>
3821 </tr>
3822 </table>
3823</div><div class="memdoc">
3824
3825<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l00703">703</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
3826<div class="fragment"><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;{</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="comment">// Use common single-batch 3-channel 16x8 image.</span></div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputDesc({1, 3, 8, 16}, ArmnnType);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; boost::multi_array&lt;T, 4&gt; input = MakeTensor&lt;T, 4&gt;(inputDesc, QuantizedVector&lt;T&gt;(ConvInput3x8x16, qScale, qOffset));</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160;</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="comment">// Use a 2-element batch with 3-channel 3x5 kernels.</span></div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> kernelDesc({2, 3, 5, 3}, ArmnnType);</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; boost::multi_array&lt;T, 4&gt; kernel = MakeTensor&lt;T, 4&gt;(kernelDesc, std::vector&lt;T&gt;(</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; QuantizedVector&lt;T&gt;({</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; 1, 1, 1,</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; 1, -1, 1,</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; 1, 1, 1,</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; 1, 1, 1,</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; 1, 1, 1,</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160;</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; 0, 0, 0,</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; 0, 0, 0,</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; 0, 0, 0,</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; 0, 0, 0,</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; 0, 0, 0,</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; 2, 2, 2,</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; 2, 2, 2,</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; 2, 2, 2,</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; 2, 2, 2,</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; 2, 2, 2,</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160;</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; 0, 0, 0,</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; 0, 0, 0,</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; 0, 0, 0,</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; 0, 0, 0,</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; 0, 0, 0,</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160;</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; 1, 1, 1,</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; 1, 1, 1,</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; 1, 1, 1,</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; 1, 1, 1,</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; 1, 1, 1,</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160;</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; 0, 0, 0,</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; 0, 0, 0,</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; 0, 0, 0,</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; 0, 0, 0,</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; 0, 0, 0</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; },</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; qScale, qOffset)));</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160;</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <span class="comment">// Expected output is 2 batch elements of a 1-channel 14x4 image.</span></div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputDesc({1, 2, 4, 14}, ArmnnType);</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; boost::multi_array&lt;T, 4&gt; expectedOutput = MakeTensor&lt;T, 4&gt;(outputDesc, std::vector&lt;T&gt;(</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; QuantizedVector&lt;T&gt;({</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24,</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; -23.5f, -23.5f, -23.5f, -23.5f, -23.5f, -23.5f, -23.5f, -23.5f, -23.5f, -23.5f, -23.5f,</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; -23.5f, -23.5f, -23.5f,</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; -23.5f, -23.5f, -23.5f, -23.5f, -23.5f, -23.5f, -23.5f, -23.5f, -23.5f, -23.5f, -23.5f,</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; -23.5f, -23.5f, -23.5f,</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160;</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; },</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; qScale, qOffset)));</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keywordflow">return</span> SimpleConvolution2dTestImpl&lt;ArmnnType, ArmnnBType&gt;(</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; workloadFactory,</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; memoryManager,</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; input,</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; kernel,</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; GetBias2&lt;ArmnnBType&gt;(biasEnabled, qScale * qScale),</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; expectedOutput,</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; qScale,</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; qOffset,</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; layout);</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
3827</div><!-- fragment -->
3828</div>
3829</div>
3830<a id="a8ffca1c4b38a68b10ba06f4f1416660f"></a>
3831<h2 class="memtitle"><span class="permalink"><a href="#a8ffca1c4b38a68b10ba06f4f1416660f">&#9670;&nbsp;</a></span>SimpleConvolution2d3x5Uint8Test()</h2>
3832
3833<div class="memitem">
3834<div class="memproto">
3835 <table class="memname">
3836 <tr>
3837 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;uint8_t, 4&gt; SimpleConvolution2d3x5Uint8Test </td>
3838 <td>(</td>
3839 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
3840 <td class="paramname"><em>workloadFactory</em>, </td>
3841 </tr>
3842 <tr>
3843 <td class="paramkey"></td>
3844 <td></td>
3845 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
3846 <td class="paramname"><em>memoryManager</em>, </td>
3847 </tr>
3848 <tr>
3849 <td class="paramkey"></td>
3850 <td></td>
3851 <td class="paramtype">bool&#160;</td>
3852 <td class="paramname"><em>biasEnabled</em>, </td>
3853 </tr>
3854 <tr>
3855 <td class="paramkey"></td>
3856 <td></td>
3857 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
3858 <td class="paramname"><em>layout</em>&#160;</td>
3859 </tr>
3860 <tr>
3861 <td></td>
3862 <td>)</td>
3863 <td></td><td></td>
3864 </tr>
3865 </table>
3866</div><div class="memdoc">
3867
3868<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l02928">2928</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
3869<div class="fragment"><div class="line"><a name="l02933"></a><span class="lineno"> 2933</span>&#160;{</div><div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>&#160; <span class="keywordflow">return</span> SimpleConvolution2d3x5TestCommon&lt;armnn::DataType::QAsymmU8, armnn::DataType::Signed32&gt;(</div><div class="line"><a name="l02935"></a><span class="lineno"> 2935</span>&#160; workloadFactory, memoryManager, 0.5f, 50, biasEnabled, layout);</div><div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>&#160;}</div></div><!-- fragment -->
3870</div>
3871</div>
3872<a id="af32b0642214e3129d8e93fa45a12e704"></a>
3873<h2 class="memtitle"><span class="permalink"><a href="#af32b0642214e3129d8e93fa45a12e704">&#9670;&nbsp;</a></span>SimpleConvolution2dAsymmetricPaddingTestCommon()</h2>
3874
3875<div class="memitem">
3876<div class="memproto">
3877 <table class="memname">
3878 <tr>
3879 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T, 4&gt; SimpleConvolution2dAsymmetricPaddingTestCommon </td>
3880 <td>(</td>
3881 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
3882 <td class="paramname"><em>workloadFactory</em>, </td>
3883 </tr>
3884 <tr>
3885 <td class="paramkey"></td>
3886 <td></td>
3887 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
3888 <td class="paramname"><em>memoryManager</em>, </td>
3889 </tr>
3890 <tr>
3891 <td class="paramkey"></td>
3892 <td></td>
3893 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
3894 <td class="paramname"><em>layout</em>, </td>
3895 </tr>
3896 <tr>
3897 <td class="paramkey"></td>
3898 <td></td>
3899 <td class="paramtype">float&#160;</td>
3900 <td class="paramname"><em>qScale</em>, </td>
3901 </tr>
3902 <tr>
3903 <td class="paramkey"></td>
3904 <td></td>
3905 <td class="paramtype">int32_t&#160;</td>
3906 <td class="paramname"><em>qOffset</em>&#160;</td>
3907 </tr>
3908 <tr>
3909 <td></td>
3910 <td>)</td>
3911 <td></td><td></td>
3912 </tr>
3913 </table>
3914</div><div class="memdoc">
3915
3916<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l00936">936</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
3917<div class="fragment"><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160;{</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <span class="comment">// Use a single-batch 1-channel 5x5 image as input.</span></div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputDesc({ 1, 1, 5, 5 }, ArmnnType);</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; boost::multi_array&lt;T, 4&gt; input = MakeTensor&lt;T, 4&gt;(inputDesc, std::vector&lt;T&gt;(</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; QuantizedVector&lt;T&gt;({</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; 11,21,31,41,51,</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; 12,22,32,42,52,</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; 13,23,33,43,53,</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; 14,24,34,44,54,</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; 15,25,35,45,55,</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; }, qScale, qOffset)));</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160;</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <span class="comment">// Use 1 batch of a 1-channel 4x4 kernel.</span></div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> kernelDesc({ 1, 1, 4, 4 }, ArmnnType);</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; boost::multi_array&lt;T, 4&gt; kernel = MakeTensor&lt;T, 4&gt;(kernelDesc, std::vector&lt;T&gt;(</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; QuantizedVector&lt;T&gt;({</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; -11,-21,-31,-41,</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; -12,-22,-32,-42,</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; -13,-23,-33,-43,</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; -14,-24,-34,-44,</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; },</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; qScale, qOffset)));</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160;</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="comment">// Expected output is 1 batch of a 1-channel 5x5 image.</span></div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputDesc({ 1, 1, 5, 5 }, ArmnnType);</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; std::vector&lt;T&gt; myVec(outputDesc.GetNumElements(), 0);</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; boost::multi_array&lt;T, 4&gt; expectedOutput = MakeTensor&lt;T, 4&gt;(outputDesc, std::vector&lt;T&gt;(</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; QuantizedVector&lt;T&gt;({</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; -7140, -10580, -13940, -9300, -5230,</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; -9590, -14120, -18520, -12290, -6860,</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; -9980, -14560, -18960, -12560, -7000,</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; -7518, -10904, -14144, -9318, -5152,</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; -5032, -7256, -9376, -6142, -3368,</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; },</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; qScale, qOffset)));</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160;</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <span class="keywordflow">return</span> SimpleConvolution2dTestImpl&lt;ArmnnType, ArmnnBType&gt;(</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; workloadFactory,</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; memoryManager,</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; input,</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; kernel,</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; GetBias2&lt;ArmnnBType&gt;(<span class="keyword">false</span>, qScale * qScale),</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; expectedOutput,</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; qScale,</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; qOffset,</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; layout,</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; 1, <span class="comment">// Padding left.</span></div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; 1, <span class="comment">// Padding top.</span></div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; 2, <span class="comment">// Padding right.</span></div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; 2); <span class="comment">// Padding bottom.</span></div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
3918</div><!-- fragment -->
3919</div>
3920</div>
3921<a id="ac79e75b3bcb6cb8c34f0bd4e3e35f73e"></a>
3922<h2 class="memtitle"><span class="permalink"><a href="#ac79e75b3bcb6cb8c34f0bd4e3e35f73e">&#9670;&nbsp;</a></span>SimpleConvolution2dNhwcTestImpl()</h2>
3923
3924<div class="memitem">
3925<div class="memproto">
3926 <table class="memname">
3927 <tr>
3928 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T, 4&gt; SimpleConvolution2dNhwcTestImpl </td>
3929 <td>(</td>
3930 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
3931 <td class="paramname"><em>workloadFactory</em>, </td>
3932 </tr>
3933 <tr>
3934 <td class="paramkey"></td>
3935 <td></td>
3936 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
3937 <td class="paramname"><em>memoryManager</em>, </td>
3938 </tr>
3939 <tr>
3940 <td class="paramkey"></td>
3941 <td></td>
3942 <td class="paramtype">const boost::multi_array&lt; T, 4 &gt; &amp;&#160;</td>
3943 <td class="paramname"><em>input</em>, </td>
3944 </tr>
3945 <tr>
3946 <td class="paramkey"></td>
3947 <td></td>
3948 <td class="paramtype">const boost::multi_array&lt; T, 4 &gt; &amp;&#160;</td>
3949 <td class="paramname"><em>kernel</em>, </td>
3950 </tr>
3951 <tr>
3952 <td class="paramkey"></td>
3953 <td></td>
3954 <td class="paramtype">const boost::multi_array&lt; B, 1 &gt; &amp;&#160;</td>
3955 <td class="paramname"><em>bias</em>, </td>
3956 </tr>
3957 <tr>
3958 <td class="paramkey"></td>
3959 <td></td>
3960 <td class="paramtype">const boost::multi_array&lt; T, 4 &gt; &amp;&#160;</td>
3961 <td class="paramname"><em>outputExpected</em>, </td>
3962 </tr>
3963 <tr>
3964 <td class="paramkey"></td>
3965 <td></td>
3966 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
3967 <td class="paramname"><em>dataLayout</em>, </td>
3968 </tr>
3969 <tr>
3970 <td class="paramkey"></td>
3971 <td></td>
3972 <td class="paramtype">float&#160;</td>
3973 <td class="paramname"><em>qScale</em>, </td>
3974 </tr>
3975 <tr>
3976 <td class="paramkey"></td>
3977 <td></td>
3978 <td class="paramtype">int32_t&#160;</td>
3979 <td class="paramname"><em>qOffset</em>, </td>
3980 </tr>
3981 <tr>
3982 <td class="paramkey"></td>
3983 <td></td>
3984 <td class="paramtype">uint32_t&#160;</td>
3985 <td class="paramname"><em>padLeft</em> = <code>1</code>, </td>
3986 </tr>
3987 <tr>
3988 <td class="paramkey"></td>
3989 <td></td>
3990 <td class="paramtype">uint32_t&#160;</td>
3991 <td class="paramname"><em>padTop</em> = <code>1</code>, </td>
3992 </tr>
3993 <tr>
3994 <td class="paramkey"></td>
3995 <td></td>
3996 <td class="paramtype">uint32_t&#160;</td>
3997 <td class="paramname"><em>padRight</em> = <code>1</code>, </td>
3998 </tr>
3999 <tr>
4000 <td class="paramkey"></td>
4001 <td></td>
4002 <td class="paramtype">uint32_t&#160;</td>
4003 <td class="paramname"><em>padBottom</em> = <code>1</code>, </td>
4004 </tr>
4005 <tr>
4006 <td class="paramkey"></td>
4007 <td></td>
4008 <td class="paramtype">uint32_t&#160;</td>
4009 <td class="paramname"><em>strideX</em> = <code>1</code>, </td>
4010 </tr>
4011 <tr>
4012 <td class="paramkey"></td>
4013 <td></td>
4014 <td class="paramtype">uint32_t&#160;</td>
4015 <td class="paramname"><em>strideY</em> = <code>1</code>&#160;</td>
4016 </tr>
4017 <tr>
4018 <td></td>
4019 <td>)</td>
4020 <td></td><td></td>
4021 </tr>
4022 </table>
4023</div><div class="memdoc">
4024
4025<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l00367">367</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
4026
4027<p class="reference">References <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00019">AllocateAndCopyDataToITensorHandle()</a>, <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00014">CopyDataFromITensorHandle()</a>, <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00009">CopyDataToITensorHandle()</a>, <a class="el" href="_workload_factory_8cpp_source.html#l01142">IWorkloadFactory::CreateConvolution2d()</a>, <a class="el" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">IWorkloadFactory::CreateTensorHandle()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::info</a>, <a class="el" href="_workload_data_8hpp_source.html#l00177">Convolution2dQueueDescriptor::m_Bias</a>, <a class="el" href="_descriptors_8hpp_source.html#l00438">Convolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00440">Convolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00428">Convolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00422">Convolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00424">Convolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00426">Convolution2dDescriptor::m_PadTop</a>, <a class="el" href="_workload_data_8hpp_source.html#l00049">QueueDescriptorWithParameters&lt; LayerDescriptor &gt;::m_Parameters</a>, <a class="el" href="_descriptors_8hpp_source.html#l00430">Convolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00432">Convolution2dDescriptor::m_StrideY</a>, <a class="el" href="_workload_data_8hpp_source.html#l00176">Convolution2dQueueDescriptor::m_Weight</a>, <a class="el" href="_layer_test_result_8hpp_source.html#l00040">LayerTestResult&lt; T, n &gt;::output</a>, and <a class="el" href="_layer_test_result_8hpp_source.html#l00041">LayerTestResult&lt; T, n &gt;::outputExpected</a>.</p>
4028<div class="fragment"><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;{</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; boost::ignore_unused(qScale, qOffset);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputNum = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(input.shape()[0]);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(input.shape()[3]);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(input.shape()[1]);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(input.shape()[2]);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelChanMul = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(kernel.shape()[0]);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelChannels = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(kernel.shape()[3]);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelHeight = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(kernel.shape()[1]);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelWidth = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(kernel.shape()[2]);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputNum = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(outputExpected.shape()[0]);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputChannels = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(outputExpected.shape()[3]);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(outputExpected.shape()[1]);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(outputExpected.shape()[2]);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordtype">bool</span> biasEnabled = bias.size() &gt; 0;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="comment">// Creates the tensors.</span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputTensorInfo({inputNum, inputHeight, inputWidth, inputChannels}, ArmnnType);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputTensorInfo({outputNum, outputHeight, outputWidth, outputChannels},</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; ArmnnType);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> kernelDesc({kernelChanMul, kernelHeight, kernelWidth, kernelChannels}, ArmnnType);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> biasDesc({<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(bias.size())}, ArmnnBType);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="comment">// Construct the input data.</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; std::vector&lt;T&gt; inputData;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; inputData.assign(input.data(), input.data() + inputHeight*inputWidth*inputChannels);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keyword">auto</span> batchedInput = MakeTensor&lt;T, 4&gt;(inputTensorInfo, inputData);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="comment">// Construct the output data, with bias applied, as appropriate.</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; std::vector&lt;T&gt; outputData;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; outputData.assign(outputExpected.data(), outputExpected.data() + outputHeight*outputWidth*outputChannels);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <a class="code" href="struct_layer_test_result.html">LayerTestResult&lt;T, 4&gt;</a> ret(outputTensorInfo);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; ret.outputExpected = MakeTensor&lt;T, 4&gt;(outputTensorInfo, outputData);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; std::unique_ptr&lt;armnn::ITensorHandle&gt; inputHandle = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">CreateTensorHandle</a>(inputTensorInfo);</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; std::unique_ptr&lt;armnn::ITensorHandle&gt; outputHandle = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">CreateTensorHandle</a>(outputTensorInfo);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a> weightsTensor(kernelDesc);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a>(&amp;weightsTensor, &amp;kernel[0][0][0][0]);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <a class="code" href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a> biasTensor(biasDesc);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <a class="code" href="structarmnn_1_1_convolution2d_queue_descriptor.html">armnn::Convolution2dQueueDescriptor</a> data;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; data.<a class="code" href="structarmnn_1_1_convolution2d_queue_descriptor.html#a3369b66d9316a773a41711e3f590c041">m_Weight</a> = &amp;weightsTensor;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; data.<a class="code" href="structarmnn_1_1_convolution2d_queue_descriptor.html#ab3437cee6b0687812104fc1b37cbe8b3">m_Bias</a> = &amp;biasTensor; <span class="comment">// Still set this whether or not bias is enabled - can be a source of bugs.</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#afe6a3377c4531315354def9023c8fdda">m_StrideX</a> = strideX;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#ac1fe174bbadfb39a2b636940c2e647c8">m_StrideY</a> = strideY;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#ac18546ebbebbb32fe0a03baa9bf2c600">m_PadLeft</a> = padLeft;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#a002bc30e590d78cbb4f4d12171055ca7">m_PadRight</a> = padRight;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#a56b51f56cef50cdfa554258eecdab046">m_PadTop</a> = padTop;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#aa9e49717ebdb741e8c767741647fc618">m_PadBottom</a> = padBottom;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#aea202e14d8874cefd9a0f778022b7e25">m_BiasEnabled</a> = biasEnabled;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a> = dataLayout;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <a class="code" href="structarmnn_1_1_workload_info.html">armnn::WorkloadInfo</a> <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; std::unique_ptr&lt;armnn::IWorkload&gt; workload = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a2184995027cd2c9f9980206de9658855">CreateConvolution2d</a>(data, info);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; inputHandle-&gt;Allocate();</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; outputHandle-&gt;Allocate();</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a>(inputHandle.get(), &amp;batchedInput[0][0][0][0]);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; ExecuteWorkload(*workload, memoryManager);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a>(&amp;ret.output[0][0][0][0], outputHandle.get());</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;}</div><div class="ttc" id="_tensor_copy_utils_8cpp_html_afaaca8c3f3a467d124bba44067d2afa8"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a></div><div class="ttdeci">void AllocateAndCopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00019">TensorCopyUtils.cpp:19</a></div></div>
4029<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">armnn::Convolution2dDescriptor::m_DataLayout</a></div><div class="ttdeci">DataLayout m_DataLayout</div><div class="ttdoc">The data layout to be used (NCHW, NHWC). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00440">Descriptors.hpp:440</a></div></div>
4030<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_a002bc30e590d78cbb4f4d12171055ca7"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#a002bc30e590d78cbb4f4d12171055ca7">armnn::Convolution2dDescriptor::m_PadRight</a></div><div class="ttdeci">uint32_t m_PadRight</div><div class="ttdoc">Padding right value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00424">Descriptors.hpp:424</a></div></div>
4031<div class="ttc" id="_tensor_copy_utils_8cpp_html_ae15f1a3c55d2db87683577de9fa4437c"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a></div><div class="ttdeci">void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00009">TensorCopyUtils.cpp:9</a></div></div>
4032<div class="ttc" id="structarmnn_1_1_convolution2d_queue_descriptor_html"><div class="ttname"><a href="structarmnn_1_1_convolution2d_queue_descriptor.html">armnn::Convolution2dQueueDescriptor</a></div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00168">WorkloadData.hpp:168</a></div></div>
4033<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
4034<div class="ttc" id="structarmnn_1_1_queue_descriptor_with_parameters_html_aad91b9bbf7aa365d304febe79a3d1333"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">armnn::QueueDescriptorWithParameters::m_Parameters</a></div><div class="ttdeci">LayerDescriptor m_Parameters</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00049">WorkloadData.hpp:49</a></div></div>
4035<div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
4036<div class="ttc" id="classarmnn_1_1_i_workload_factory_html_a15c140be4ddceffee16436f009d3ed94"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">armnn::IWorkloadFactory::CreateTensorHandle</a></div><div class="ttdeci">virtual std::unique_ptr&lt; ITensorHandle &gt; CreateTensorHandle(const TensorInfo &amp;tensorInfo, const bool IsMemoryManaged=true) const =0</div></div>
4037<div class="ttc" id="struct_layer_test_result_html"><div class="ttname"><a href="struct_layer_test_result.html">LayerTestResult</a></div><div class="ttdef"><b>Definition:</b> <a href="_layer_test_result_8hpp_source.html#l00029">LayerTestResult.hpp:29</a></div></div>
4038<div class="ttc" id="_tensor_copy_utils_8cpp_html_a99b626c58a926dc7d6df78d22ec186c8"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a></div><div class="ttdeci">void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00014">TensorCopyUtils.cpp:14</a></div></div>
4039<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_aa9e49717ebdb741e8c767741647fc618"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#aa9e49717ebdb741e8c767741647fc618">armnn::Convolution2dDescriptor::m_PadBottom</a></div><div class="ttdeci">uint32_t m_PadBottom</div><div class="ttdoc">Padding bottom value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00428">Descriptors.hpp:428</a></div></div>
4040<div class="ttc" id="structarmnn_1_1_workload_info_html"><div class="ttname"><a href="structarmnn_1_1_workload_info.html">armnn::WorkloadInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_workload_info_8hpp_source.html#l00016">WorkloadInfo.hpp:16</a></div></div>
4041<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_ac1fe174bbadfb39a2b636940c2e647c8"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#ac1fe174bbadfb39a2b636940c2e647c8">armnn::Convolution2dDescriptor::m_StrideY</a></div><div class="ttdeci">uint32_t m_StrideY</div><div class="ttdoc">Stride value when proceeding through input for the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00432">Descriptors.hpp:432</a></div></div>
4042<div class="ttc" id="structarmnn_1_1_convolution2d_queue_descriptor_html_a3369b66d9316a773a41711e3f590c041"><div class="ttname"><a href="structarmnn_1_1_convolution2d_queue_descriptor.html#a3369b66d9316a773a41711e3f590c041">armnn::Convolution2dQueueDescriptor::m_Weight</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_Weight</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00176">WorkloadData.hpp:176</a></div></div>
4043<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_a56b51f56cef50cdfa554258eecdab046"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#a56b51f56cef50cdfa554258eecdab046">armnn::Convolution2dDescriptor::m_PadTop</a></div><div class="ttdeci">uint32_t m_PadTop</div><div class="ttdoc">Padding top value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00426">Descriptors.hpp:426</a></div></div>
4044<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_ac18546ebbebbb32fe0a03baa9bf2c600"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#ac18546ebbebbb32fe0a03baa9bf2c600">armnn::Convolution2dDescriptor::m_PadLeft</a></div><div class="ttdeci">uint32_t m_PadLeft</div><div class="ttdoc">Padding left value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00422">Descriptors.hpp:422</a></div></div>
4045<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_afe6a3377c4531315354def9023c8fdda"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#afe6a3377c4531315354def9023c8fdda">armnn::Convolution2dDescriptor::m_StrideX</a></div><div class="ttdeci">uint32_t m_StrideX</div><div class="ttdoc">Stride value when proceeding through input for the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00430">Descriptors.hpp:430</a></div></div>
4046<div class="ttc" id="structarmnn_1_1_convolution2d_queue_descriptor_html_ab3437cee6b0687812104fc1b37cbe8b3"><div class="ttname"><a href="structarmnn_1_1_convolution2d_queue_descriptor.html#ab3437cee6b0687812104fc1b37cbe8b3">armnn::Convolution2dQueueDescriptor::m_Bias</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_Bias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00177">WorkloadData.hpp:177</a></div></div>
4047<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_aea202e14d8874cefd9a0f778022b7e25"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#aea202e14d8874cefd9a0f778022b7e25">armnn::Convolution2dDescriptor::m_BiasEnabled</a></div><div class="ttdeci">bool m_BiasEnabled</div><div class="ttdoc">Enable/disable bias. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00438">Descriptors.hpp:438</a></div></div>
4048<div class="ttc" id="classarmnn_1_1_i_workload_factory_html_a2184995027cd2c9f9980206de9658855"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.html#a2184995027cd2c9f9980206de9658855">armnn::IWorkloadFactory::CreateConvolution2d</a></div><div class="ttdeci">virtual std::unique_ptr&lt; IWorkload &gt; CreateConvolution2d(const Convolution2dQueueDescriptor &amp;descriptor, const WorkloadInfo &amp;info) const</div><div class="ttdef"><b>Definition:</b> <a href="_workload_factory_8cpp_source.html#l01142">WorkloadFactory.cpp:1142</a></div></div>
4049<div class="ttc" id="classarmnn_1_1_scoped_cpu_tensor_handle_html"><div class="ttname"><a href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a></div><div class="ttdef"><b>Definition:</b> <a href="_cpu_tensor_handle_8hpp_source.html#l00106">CpuTensorHandle.hpp:106</a></div></div>
4050</div><!-- fragment -->
4051</div>
4052</div>
4053<a id="a7bd1547ceefdc1acedbb1fa6445b2968"></a>
4054<h2 class="memtitle"><span class="permalink"><a href="#a7bd1547ceefdc1acedbb1fa6445b2968">&#9670;&nbsp;</a></span>SimpleConvolution2dTestImpl()</h2>
4055
4056<div class="memitem">
4057<div class="memproto">
4058 <table class="memname">
4059 <tr>
4060 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T, 4&gt; SimpleConvolution2dTestImpl </td>
4061 <td>(</td>
4062 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
4063 <td class="paramname"><em>workloadFactory</em>, </td>
4064 </tr>
4065 <tr>
4066 <td class="paramkey"></td>
4067 <td></td>
4068 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
4069 <td class="paramname"><em>memoryManager</em>, </td>
4070 </tr>
4071 <tr>
4072 <td class="paramkey"></td>
4073 <td></td>
4074 <td class="paramtype">const boost::multi_array&lt; T, 4 &gt; &amp;&#160;</td>
4075 <td class="paramname"><em>originalInput</em>, </td>
4076 </tr>
4077 <tr>
4078 <td class="paramkey"></td>
4079 <td></td>
4080 <td class="paramtype">const boost::multi_array&lt; T, 4 &gt; &amp;&#160;</td>
4081 <td class="paramname"><em>originalKernel</em>, </td>
4082 </tr>
4083 <tr>
4084 <td class="paramkey"></td>
4085 <td></td>
4086 <td class="paramtype">const boost::multi_array&lt; B, 1 &gt; &amp;&#160;</td>
4087 <td class="paramname"><em>bias</em>, </td>
4088 </tr>
4089 <tr>
4090 <td class="paramkey"></td>
4091 <td></td>
4092 <td class="paramtype">const boost::multi_array&lt; T, 4 &gt; &amp;&#160;</td>
4093 <td class="paramname"><em>originalOutputExpected</em>, </td>
4094 </tr>
4095 <tr>
4096 <td class="paramkey"></td>
4097 <td></td>
4098 <td class="paramtype">float&#160;</td>
4099 <td class="paramname"><em>qScale</em>, </td>
4100 </tr>
4101 <tr>
4102 <td class="paramkey"></td>
4103 <td></td>
4104 <td class="paramtype">int32_t&#160;</td>
4105 <td class="paramname"><em>qOffset</em>, </td>
4106 </tr>
4107 <tr>
4108 <td class="paramkey"></td>
4109 <td></td>
4110 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
4111 <td class="paramname"><em>layout</em> = <code><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></code>, </td>
4112 </tr>
4113 <tr>
4114 <td class="paramkey"></td>
4115 <td></td>
4116 <td class="paramtype">uint32_t&#160;</td>
4117 <td class="paramname"><em>padLeft</em> = <code>0</code>, </td>
4118 </tr>
4119 <tr>
4120 <td class="paramkey"></td>
4121 <td></td>
4122 <td class="paramtype">uint32_t&#160;</td>
4123 <td class="paramname"><em>padTop</em> = <code>0</code>, </td>
4124 </tr>
4125 <tr>
4126 <td class="paramkey"></td>
4127 <td></td>
4128 <td class="paramtype">uint32_t&#160;</td>
4129 <td class="paramname"><em>padRight</em> = <code>0</code>, </td>
4130 </tr>
4131 <tr>
4132 <td class="paramkey"></td>
4133 <td></td>
4134 <td class="paramtype">uint32_t&#160;</td>
4135 <td class="paramname"><em>padBottom</em> = <code>0</code>, </td>
4136 </tr>
4137 <tr>
4138 <td class="paramkey"></td>
4139 <td></td>
4140 <td class="paramtype">uint32_t&#160;</td>
4141 <td class="paramname"><em>strideX</em> = <code>1</code>, </td>
4142 </tr>
4143 <tr>
4144 <td class="paramkey"></td>
4145 <td></td>
4146 <td class="paramtype">uint32_t&#160;</td>
4147 <td class="paramname"><em>strideY</em> = <code>1</code>, </td>
4148 </tr>
4149 <tr>
4150 <td class="paramkey"></td>
4151 <td></td>
4152 <td class="paramtype">uint32_t&#160;</td>
4153 <td class="paramname"><em>dilationX</em> = <code>1</code>, </td>
4154 </tr>
4155 <tr>
4156 <td class="paramkey"></td>
4157 <td></td>
4158 <td class="paramtype">uint32_t&#160;</td>
4159 <td class="paramname"><em>dilationY</em> = <code>1</code>&#160;</td>
4160 </tr>
4161 <tr>
4162 <td></td>
4163 <td>)</td>
4164 <td></td><td></td>
4165 </tr>
4166 </table>
4167</div><div class="memdoc">
4168
4169<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l00201">201</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
4170
4171<p class="reference">References <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00019">AllocateAndCopyDataToITensorHandle()</a>, <a class="el" href="_conv2d_test_impl_8cpp_source.html#l00169">ApplyBias()</a>, <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00014">CopyDataFromITensorHandle()</a>, <a class="el" href="_tensor_copy_utils_8cpp_source.html#l00009">CopyDataToITensorHandle()</a>, <a class="el" href="_workload_factory_8cpp_source.html#l01142">IWorkloadFactory::CreateConvolution2d()</a>, <a class="el" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">IWorkloadFactory::CreateTensorHandle()</a>, <a class="el" href="_tensor_8cpp_source.html#l00264">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.html#l00247">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00038">armnnUtils::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::info</a>, <a class="el" href="_workload_data_8hpp_source.html#l00177">Convolution2dQueueDescriptor::m_Bias</a>, <a class="el" href="_descriptors_8hpp_source.html#l00438">Convolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00440">Convolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00434">Convolution2dDescriptor::m_DilationX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00436">Convolution2dDescriptor::m_DilationY</a>, <a class="el" href="_descriptors_8hpp_source.html#l00428">Convolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00422">Convolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00424">Convolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00426">Convolution2dDescriptor::m_PadTop</a>, <a class="el" href="_workload_data_8hpp_source.html#l00049">QueueDescriptorWithParameters&lt; LayerDescriptor &gt;::m_Parameters</a>, <a class="el" href="_descriptors_8hpp_source.html#l00430">Convolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00432">Convolution2dDescriptor::m_StrideY</a>, <a class="el" href="_workload_data_8hpp_source.html#l00176">Convolution2dQueueDescriptor::m_Weight</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::NHWC</a>, <a class="el" href="_layer_test_result_8hpp_source.html#l00040">LayerTestResult&lt; T, n &gt;::output</a>, <a class="el" href="_layer_test_result_8hpp_source.html#l00041">LayerTestResult&lt; T, n &gt;::outputExpected</a>, <a class="el" href="_permute_8cpp_source.html#l00121">armnnUtils::Permute()</a>, <a class="el" href="_tensor_8cpp_source.html#l00275">TensorInfo::SetQuantizationOffset()</a>, and <a class="el" href="_tensor_8cpp_source.html#l00259">TensorInfo::SetQuantizationScale()</a>.</p>
4172<div class="fragment"><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;{</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; boost::ignore_unused(memoryManager);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(originalInput.shape()[2]);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(originalInput.shape()[3]);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(originalInput.shape()[1]);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputNum = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(originalInput.shape()[0]);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(originalOutputExpected.shape()[2]);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(originalOutputExpected.shape()[3]);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputChannels = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(originalOutputExpected.shape()[1]);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputNum = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(originalOutputExpected.shape()[0]);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelHeight = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(originalKernel.shape()[2]);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelWidth = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(originalKernel.shape()[3]);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelChannels = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(originalKernel.shape()[1]);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kernelDepthMul = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(originalKernel.shape()[0]);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordtype">bool</span> biasEnabled = bias.size() &gt; 0;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="comment">// This function currently assumes 1 batch of input/output (and duplicates this into 2 batches).</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; BOOST_ASSERT(inputNum == 1);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; BOOST_ASSERT(outputNum == 1);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="comment">// If a bias is used, its size must equal the number of output channels.</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; BOOST_ASSERT(!biasEnabled || bias.size() == outputChannels);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="comment">// Note these tensors will use two (identical) batches.</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputTensorInfo =</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a>(2*inputNum, inputChannels, inputHeight, inputWidth, layout, ArmnnType);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputTensorInfo =</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a>(2*outputNum, outputChannels, outputHeight, outputWidth, layout, ArmnnType);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> kernelDesc =</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a>(kernelDepthMul, kernelChannels, kernelHeight, kernelWidth, layout, ArmnnType);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> biasDesc({<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(bias.size())}, ArmnnBType);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="comment">// Set quantization parameters if the requested type is a quantized type.</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">if</span>(armnn::IsQuantizedType&lt;T&gt;())</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; inputTensorInfo.SetQuantizationScale(qScale);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; inputTensorInfo.SetQuantizationOffset(qOffset);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a685739c4eb65a580e075282cfe6787d6">SetQuantizationScale</a>(qScale);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a63cbc581012c957f9d68d224ddc3e43c">SetQuantizationOffset</a>(qOffset);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; kernelDesc.<a class="code" href="classarmnn_1_1_tensor_info.html#a685739c4eb65a580e075282cfe6787d6">SetQuantizationScale</a>(qScale);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; kernelDesc.<a class="code" href="classarmnn_1_1_tensor_info.html#a63cbc581012c957f9d68d224ddc3e43c">SetQuantizationOffset</a>(qOffset);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; biasDesc.SetQuantizationScale(qScale*qScale);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; biasDesc.SetQuantizationOffset(0);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <a class="code" href="struct_layer_test_result.html">LayerTestResult&lt;T, 4&gt;</a> ret(outputTensorInfo);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="comment">// Construct input data - two batches of the same input image.</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; std::vector&lt;T&gt; inputImage;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; inputImage.assign(originalInput.data(), originalInput.data() + 1*inputChannels*inputHeight*inputWidth);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; std::vector&lt;T&gt; inputData;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; inputData.insert(inputData.end(), inputImage.begin(), inputImage.end());</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; inputData.insert(inputData.end(), inputImage.begin(), inputImage.end());</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="comment">// at this point if we require it permute the input data</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a> NCHWToNHWC = { 0, 3, 1, 2 };</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">if</span> (layout == <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a>)</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; std::vector&lt;T&gt; tmp(inputData.size());</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a>(inputTensorInfo.GetShape(), NCHWToNHWC, inputData.data(), tmp.data(), <span class="keyword">sizeof</span>(T));</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; inputData = tmp;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; }</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keyword">auto</span> batchedInput = MakeTensor&lt;T, 4&gt;(inputTensorInfo, inputData);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; std::vector&lt;T&gt; outputImage;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; outputImage.assign(originalOutputExpected.data(),</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; originalOutputExpected.data() + outputChannels*outputHeight*outputWidth);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="comment">// Apply bias to output image if it is enabled.</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">if</span>(biasEnabled)</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; std::vector&lt;T&gt; biasV;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; biasV.assign(bias.data(), bias.data() + outputChannels);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="_conv2d_test_impl_8cpp.html#aa1f4ce02e0904dc8cf1b7f42bc34d346">ApplyBias</a>(outputImage, outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a047ca888c43bd7fb5702853bf72410d0">GetQuantizationScale</a>(), outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a770b51078da02f44a819e9f95d8058b5">GetQuantizationOffset</a>(),</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; biasV, biasDesc.GetQuantizationScale(), biasDesc.GetQuantizationOffset(),</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; outputWidth, outputHeight);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="comment">// Construct expected output data - two identical images.</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; std::vector&lt;T&gt; outputData;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; outputData.insert(outputData.end(), outputImage.begin(), outputImage.end());</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; outputData.insert(outputData.end(), outputImage.begin(), outputImage.end());</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="comment">// at this point if we require it permute the expected output</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">if</span> (layout == <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a>)</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; std::vector&lt;T&gt; tmp(outputData.size());</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <a class="code" href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a>(outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>(), NCHWToNHWC, outputData.data(), tmp.data(), <span class="keyword">sizeof</span>(T));</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; outputData = tmp;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; ret.outputExpected = MakeTensor&lt;T, 4&gt;(outputTensorInfo, outputData);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; std::unique_ptr&lt;armnn::ITensorHandle&gt; inputHandle = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">CreateTensorHandle</a>(inputTensorInfo);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; std::unique_ptr&lt;armnn::ITensorHandle&gt; outputHandle = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">CreateTensorHandle</a>(outputTensorInfo);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <a class="code" href="structarmnn_1_1_convolution2d_queue_descriptor.html">armnn::Convolution2dQueueDescriptor</a> data;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <a class="code" href="structarmnn_1_1_workload_info.html">armnn::WorkloadInfo</a> <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <a class="code" href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a> weightsTensor(kernelDesc);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <a class="code" href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a> biasTensor(biasDesc);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="comment">// Permute the kernel if necessary</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; boost::multi_array&lt;T, 4&gt; kernel = boost::multi_array&lt;T, 4&gt;(originalKernel);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">if</span> (layout == <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a>)</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a>(kernelDesc.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>(), NCHWToNHWC, originalKernel.data(), kernel.data(), <span class="keyword">sizeof</span>(T));</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a>(&amp;weightsTensor, &amp;kernel[0][0][0][0]);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">if</span>(biasEnabled)</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a>(&amp;biasTensor, &amp;bias[0]);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; }</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; data.<a class="code" href="structarmnn_1_1_convolution2d_queue_descriptor.html#a3369b66d9316a773a41711e3f590c041">m_Weight</a> = &amp;weightsTensor;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; data.<a class="code" href="structarmnn_1_1_convolution2d_queue_descriptor.html#ab3437cee6b0687812104fc1b37cbe8b3">m_Bias</a> = &amp;biasTensor; <span class="comment">// Still set this whether or not bias is enabled - can be a source of bugs.</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#afe6a3377c4531315354def9023c8fdda">m_StrideX</a> = strideX;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#ac1fe174bbadfb39a2b636940c2e647c8">m_StrideY</a> = strideY;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#ac18546ebbebbb32fe0a03baa9bf2c600">m_PadLeft</a> = padLeft;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#a002bc30e590d78cbb4f4d12171055ca7">m_PadRight</a> = padRight;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#a56b51f56cef50cdfa554258eecdab046">m_PadTop</a> = padTop;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#aa9e49717ebdb741e8c767741647fc618">m_PadBottom</a> = padBottom;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#aea202e14d8874cefd9a0f778022b7e25">m_BiasEnabled</a> = biasEnabled;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a> = layout;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#aa3c6a77a963a98ccb8ea7b8fd008a8c1">m_DilationX</a> = dilationX;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.html#a302b688d88dd73cde0fb1faef6679907">m_DilationY</a> = dilationY;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; std::unique_ptr&lt;armnn::IWorkload&gt; workload = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.html#a2184995027cd2c9f9980206de9658855">CreateConvolution2d</a>(data, info);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; inputHandle-&gt;Allocate();</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; outputHandle-&gt;Allocate();</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a>(inputHandle.get(), &amp;batchedInput[0][0][0][0]);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; ExecuteWorkload(*workload, memoryManager);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <a class="code" href="_tensor_copy_utils_8cpp.html#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a>(&amp;ret.output[0][0][0][0], outputHandle.get());</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;}</div><div class="ttc" id="_tensor_copy_utils_8cpp_html_afaaca8c3f3a467d124bba44067d2afa8"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#afaaca8c3f3a467d124bba44067d2afa8">AllocateAndCopyDataToITensorHandle</a></div><div class="ttdeci">void AllocateAndCopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00019">TensorCopyUtils.cpp:19</a></div></div>
4173<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">armnn::Convolution2dDescriptor::m_DataLayout</a></div><div class="ttdeci">DataLayout m_DataLayout</div><div class="ttdoc">The data layout to be used (NCHW, NHWC). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00440">Descriptors.hpp:440</a></div></div>
4174<div class="ttc" id="_conv2d_test_impl_8cpp_html_aa1f4ce02e0904dc8cf1b7f42bc34d346"><div class="ttname"><a href="_conv2d_test_impl_8cpp.html#aa1f4ce02e0904dc8cf1b7f42bc34d346">ApplyBias</a></div><div class="ttdeci">void ApplyBias(std::vector&lt; T &gt; &amp;v, float vScale, int32_t vOffset, const std::vector&lt; B &gt; &amp;bias, float bScale, int32_t bOffset, uint32_t w, uint32_t h)</div><div class="ttdef"><b>Definition:</b> <a href="_conv2d_test_impl_8cpp_source.html#l00169">Conv2dTestImpl.cpp:169</a></div></div>
4175<div class="ttc" id="classarmnn_1_1_tensor_info_html_a770b51078da02f44a819e9f95d8058b5"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a770b51078da02f44a819e9f95d8058b5">armnn::TensorInfo::GetQuantizationOffset</a></div><div class="ttdeci">int32_t GetQuantizationOffset() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00264">Tensor.cpp:264</a></div></div>
4176<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_a002bc30e590d78cbb4f4d12171055ca7"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#a002bc30e590d78cbb4f4d12171055ca7">armnn::Convolution2dDescriptor::m_PadRight</a></div><div class="ttdeci">uint32_t m_PadRight</div><div class="ttdoc">Padding right value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00424">Descriptors.hpp:424</a></div></div>
4177<div class="ttc" id="namespacearmnn_utils_html_af3c74017185773dd61d8ca6662d65d43"><div class="ttname"><a href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a></div><div class="ttdeci">void Permute(const armnn::TensorShape &amp;dstShape, const armnn::PermutationVector &amp;mappings, const void *src, void *dst, size_t dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="_permute_8cpp_source.html#l00121">Permute.cpp:121</a></div></div>
4178<div class="ttc" id="_tensor_copy_utils_8cpp_html_ae15f1a3c55d2db87683577de9fa4437c"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a></div><div class="ttdeci">void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00009">TensorCopyUtils.cpp:9</a></div></div>
4179<div class="ttc" id="classarmnn_1_1_permutation_vector_html"><div class="ttname"><a href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a></div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00170">Types.hpp:170</a></div></div>
4180<div class="ttc" id="structarmnn_1_1_convolution2d_queue_descriptor_html"><div class="ttname"><a href="structarmnn_1_1_convolution2d_queue_descriptor.html">armnn::Convolution2dQueueDescriptor</a></div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00168">WorkloadData.hpp:168</a></div></div>
4181<div class="ttc" id="namespacearmnn_utils_html_acee63cd08da47910fc166a1990988fa8"><div class="ttname"><a href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00038">TensorUtils.cpp:38</a></div></div>
4182<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
4183<div class="ttc" id="structarmnn_1_1_queue_descriptor_with_parameters_html_aad91b9bbf7aa365d304febe79a3d1333"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">armnn::QueueDescriptorWithParameters::m_Parameters</a></div><div class="ttdeci">LayerDescriptor m_Parameters</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00049">WorkloadData.hpp:49</a></div></div>
4184<div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
4185<div class="ttc" id="classarmnn_1_1_i_workload_factory_html_a15c140be4ddceffee16436f009d3ed94"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.html#a15c140be4ddceffee16436f009d3ed94">armnn::IWorkloadFactory::CreateTensorHandle</a></div><div class="ttdeci">virtual std::unique_ptr&lt; ITensorHandle &gt; CreateTensorHandle(const TensorInfo &amp;tensorInfo, const bool IsMemoryManaged=true) const =0</div></div>
4186<div class="ttc" id="struct_layer_test_result_html"><div class="ttname"><a href="struct_layer_test_result.html">LayerTestResult</a></div><div class="ttdef"><b>Definition:</b> <a href="_layer_test_result_8hpp_source.html#l00029">LayerTestResult.hpp:29</a></div></div>
4187<div class="ttc" id="_tensor_copy_utils_8cpp_html_a99b626c58a926dc7d6df78d22ec186c8"><div class="ttname"><a href="_tensor_copy_utils_8cpp.html#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a></div><div class="ttdeci">void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.html#l00014">TensorCopyUtils.cpp:14</a></div></div>
4188<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_aa9e49717ebdb741e8c767741647fc618"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#aa9e49717ebdb741e8c767741647fc618">armnn::Convolution2dDescriptor::m_PadBottom</a></div><div class="ttdeci">uint32_t m_PadBottom</div><div class="ttdoc">Padding bottom value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00428">Descriptors.hpp:428</a></div></div>
4189<div class="ttc" id="structarmnn_1_1_workload_info_html"><div class="ttname"><a href="structarmnn_1_1_workload_info.html">armnn::WorkloadInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_workload_info_8hpp_source.html#l00016">WorkloadInfo.hpp:16</a></div></div>
4190<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_ac1fe174bbadfb39a2b636940c2e647c8"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#ac1fe174bbadfb39a2b636940c2e647c8">armnn::Convolution2dDescriptor::m_StrideY</a></div><div class="ttdeci">uint32_t m_StrideY</div><div class="ttdoc">Stride value when proceeding through input for the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00432">Descriptors.hpp:432</a></div></div>
4191<div class="ttc" id="structarmnn_1_1_convolution2d_queue_descriptor_html_a3369b66d9316a773a41711e3f590c041"><div class="ttname"><a href="structarmnn_1_1_convolution2d_queue_descriptor.html#a3369b66d9316a773a41711e3f590c041">armnn::Convolution2dQueueDescriptor::m_Weight</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_Weight</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00176">WorkloadData.hpp:176</a></div></div>
4192<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_a56b51f56cef50cdfa554258eecdab046"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#a56b51f56cef50cdfa554258eecdab046">armnn::Convolution2dDescriptor::m_PadTop</a></div><div class="ttdeci">uint32_t m_PadTop</div><div class="ttdoc">Padding top value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00426">Descriptors.hpp:426</a></div></div>
4193<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_ac18546ebbebbb32fe0a03baa9bf2c600"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#ac18546ebbebbb32fe0a03baa9bf2c600">armnn::Convolution2dDescriptor::m_PadLeft</a></div><div class="ttdeci">uint32_t m_PadLeft</div><div class="ttdoc">Padding left value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00422">Descriptors.hpp:422</a></div></div>
4194<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_afe6a3377c4531315354def9023c8fdda"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#afe6a3377c4531315354def9023c8fdda">armnn::Convolution2dDescriptor::m_StrideX</a></div><div class="ttdeci">uint32_t m_StrideX</div><div class="ttdoc">Stride value when proceeding through input for the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00430">Descriptors.hpp:430</a></div></div>
4195<div class="ttc" id="classarmnn_1_1_tensor_info_html_a685739c4eb65a580e075282cfe6787d6"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a685739c4eb65a580e075282cfe6787d6">armnn::TensorInfo::SetQuantizationScale</a></div><div class="ttdeci">void SetQuantizationScale(float scale)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00259">Tensor.cpp:259</a></div></div>
4196<div class="ttc" id="structarmnn_1_1_convolution2d_queue_descriptor_html_ab3437cee6b0687812104fc1b37cbe8b3"><div class="ttname"><a href="structarmnn_1_1_convolution2d_queue_descriptor.html#ab3437cee6b0687812104fc1b37cbe8b3">armnn::Convolution2dQueueDescriptor::m_Bias</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_Bias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00177">WorkloadData.hpp:177</a></div></div>
4197<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_aea202e14d8874cefd9a0f778022b7e25"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#aea202e14d8874cefd9a0f778022b7e25">armnn::Convolution2dDescriptor::m_BiasEnabled</a></div><div class="ttdeci">bool m_BiasEnabled</div><div class="ttdoc">Enable/disable bias. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00438">Descriptors.hpp:438</a></div></div>
4198<div class="ttc" id="classarmnn_1_1_i_workload_factory_html_a2184995027cd2c9f9980206de9658855"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.html#a2184995027cd2c9f9980206de9658855">armnn::IWorkloadFactory::CreateConvolution2d</a></div><div class="ttdeci">virtual std::unique_ptr&lt; IWorkload &gt; CreateConvolution2d(const Convolution2dQueueDescriptor &amp;descriptor, const WorkloadInfo &amp;info) const</div><div class="ttdef"><b>Definition:</b> <a href="_workload_factory_8cpp_source.html#l01142">WorkloadFactory.cpp:1142</a></div></div>
4199<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_a302b688d88dd73cde0fb1faef6679907"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#a302b688d88dd73cde0fb1faef6679907">armnn::Convolution2dDescriptor::m_DilationY</a></div><div class="ttdeci">uint32_t m_DilationY</div><div class="ttdoc">Dilation along y axis. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00436">Descriptors.hpp:436</a></div></div>
4200<div class="ttc" id="classarmnn_1_1_tensor_info_html_a63cbc581012c957f9d68d224ddc3e43c"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a63cbc581012c957f9d68d224ddc3e43c">armnn::TensorInfo::SetQuantizationOffset</a></div><div class="ttdeci">void SetQuantizationOffset(int32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00275">Tensor.cpp:275</a></div></div>
4201<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_html_aa3c6a77a963a98ccb8ea7b8fd008a8c1"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.html#aa3c6a77a963a98ccb8ea7b8fd008a8c1">armnn::Convolution2dDescriptor::m_DilationX</a></div><div class="ttdeci">uint32_t m_DilationX</div><div class="ttdoc">Dilation along x axis. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00434">Descriptors.hpp:434</a></div></div>
4202<div class="ttc" id="classarmnn_1_1_scoped_cpu_tensor_handle_html"><div class="ttname"><a href="classarmnn_1_1_scoped_cpu_tensor_handle.html">armnn::ScopedCpuTensorHandle</a></div><div class="ttdef"><b>Definition:</b> <a href="_cpu_tensor_handle_8hpp_source.html#l00106">CpuTensorHandle.hpp:106</a></div></div>
4203<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">armnn::TensorInfo::GetShape</a></div><div class="ttdeci">const TensorShape &amp; GetShape() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00088">Tensor.hpp:88</a></div></div>
4204<div class="ttc" id="classarmnn_1_1_tensor_info_html_a047ca888c43bd7fb5702853bf72410d0"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a047ca888c43bd7fb5702853bf72410d0">armnn::TensorInfo::GetQuantizationScale</a></div><div class="ttdeci">float GetQuantizationScale() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00247">Tensor.cpp:247</a></div></div>
4205<div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a></div></div>
4206</div><!-- fragment -->
4207</div>
4208</div>
4209<a id="a77a29527216d36bce78e88354462ede8"></a>
4210<h2 class="memtitle"><span class="permalink"><a href="#a77a29527216d36bce78e88354462ede8">&#9670;&nbsp;</a></span>SimpleDepthwiseConvolution2d3x3Dilation3x3NhwcTest()</h2>
4211
4212<div class="memitem">
4213<div class="memproto">
4214 <table class="memname">
4215 <tr>
4216 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;float, 4&gt; SimpleDepthwiseConvolution2d3x3Dilation3x3NhwcTest </td>
4217 <td>(</td>
4218 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
4219 <td class="paramname"><em>workloadFactory</em>, </td>
4220 </tr>
4221 <tr>
4222 <td class="paramkey"></td>
4223 <td></td>
4224 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
4225 <td class="paramname"><em>memoryManager</em>&#160;</td>
4226 </tr>
4227 <tr>
4228 <td></td>
4229 <td>)</td>
4230 <td></td><td></td>
4231 </tr>
4232 </table>
4233</div><div class="memdoc">
4234
4235<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l03236">3236</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
4236<div class="fragment"><div class="line"><a name="l03239"></a><span class="lineno"> 3239</span>&#160;{</div><div class="line"><a name="l03240"></a><span class="lineno"> 3240</span>&#160; <span class="keywordflow">return</span> SimpleDepthwiseConvolution2d3x3Dilation3x3NhwcTestCommon&lt;armnn::DataType::Float32, armnn::DataType::Float32&gt;(</div><div class="line"><a name="l03241"></a><span class="lineno"> 3241</span>&#160; workloadFactory,</div><div class="line"><a name="l03242"></a><span class="lineno"> 3242</span>&#160; memoryManager,</div><div class="line"><a name="l03243"></a><span class="lineno"> 3243</span>&#160; 0.f,</div><div class="line"><a name="l03244"></a><span class="lineno"> 3244</span>&#160; 0,</div><div class="line"><a name="l03245"></a><span class="lineno"> 3245</span>&#160; <span class="keyword">false</span>);</div><div class="line"><a name="l03246"></a><span class="lineno"> 3246</span>&#160;}</div></div><!-- fragment -->
4237</div>
4238</div>
4239<a id="ac7af28eafb5b583057bca4471ce22328"></a>
4240<h2 class="memtitle"><span class="permalink"><a href="#ac7af28eafb5b583057bca4471ce22328">&#9670;&nbsp;</a></span>SimpleDepthwiseConvolution2d3x3Dilation3x3NhwcTestCommon()</h2>
4241
4242<div class="memitem">
4243<div class="memproto">
4244 <table class="memname">
4245 <tr>
4246 <td class="memname"><a class="el" href="struct_layer_test_result.html">LayerTestResult</a>&lt;T, 4&gt; SimpleDepthwiseConvolution2d3x3Dilation3x3NhwcTestCommon </td>
4247 <td>(</td>
4248 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_workload_factory.html">armnn::IWorkloadFactory</a> &amp;&#160;</td>
4249 <td class="paramname"><em>workloadFactory</em>, </td>
4250 </tr>
4251 <tr>
4252 <td class="paramkey"></td>
4253 <td></td>
4254 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_backend_internal.html#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a> &amp;&#160;</td>
4255 <td class="paramname"><em>memoryManager</em>, </td>
4256 </tr>
4257 <tr>
4258 <td class="paramkey"></td>
4259 <td></td>
4260 <td class="paramtype">float&#160;</td>
4261 <td class="paramname"><em>qScale</em>, </td>
4262 </tr>
4263 <tr>
4264 <td class="paramkey"></td>
4265 <td></td>
4266 <td class="paramtype">int32_t&#160;</td>
4267 <td class="paramname"><em>qOffset</em>, </td>
4268 </tr>
4269 <tr>
4270 <td class="paramkey"></td>
4271 <td></td>
4272 <td class="paramtype">bool&#160;</td>
4273 <td class="paramname"><em>biasEnabled</em>&#160;</td>
4274 </tr>
4275 <tr>
4276 <td></td>
4277 <td>)</td>
4278 <td></td><td></td>
4279 </tr>
4280 </table>
4281</div><div class="memdoc">
4282
4283<p class="definition">Definition at line <a class="el" href="_conv2d_test_impl_8cpp_source.html#l02212">2212</a> of file <a class="el" href="_conv2d_test_impl_8cpp_source.html">Conv2dTestImpl.cpp</a>.</p>
4284
4285<p class="reference">References <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::NHWC</a>.</p>
4286<div class="fragment"><div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>&#160;{</div><div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>&#160; <span class="keyword">auto</span> layout = <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a>;</div><div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>&#160;</div><div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputTensorInfo({ 1, 1, 9, 9}, ArmnnType);</div><div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>&#160; <span class="keyword">auto</span> input = MakeTensor&lt;T, 4&gt;(inputTensorInfo, std::vector&lt;T&gt;(</div><div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>&#160; QuantizedVector&lt;T&gt;({</div><div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>&#160; 0, 0, 0, 1, 1, 1, 0, 0, 0,</div><div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>&#160; 0, 0, 0, 1, 1, 1, 0, 0, 0,</div><div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>&#160; 0, 0, 0, 1, 1, 1, 0, 0, 0,</div><div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0</div><div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>&#160; },</div><div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>&#160; inputTensorInfo.GetQuantizationScale(),</div><div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>&#160; inputTensorInfo.GetQuantizationOffset())));</div><div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>&#160;</div><div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> kernelTensorInfo({ 1, 1, 3, 3}, ArmnnType);</div><div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>&#160; <span class="keyword">auto</span> kernel = MakeTensor&lt;T, 4&gt;(kernelTensorInfo, std::vector&lt;T&gt;(</div><div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>&#160; QuantizedVector&lt;T&gt;({</div><div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>&#160; 1, 2, 3,</div><div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>&#160; 4, 5, 6,</div><div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>&#160; 7, 8, 9</div><div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>&#160; },</div><div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>&#160; kernelTensorInfo.GetQuantizationScale(),</div><div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>&#160; kernelTensorInfo.GetQuantizationOffset())));</div><div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>&#160;</div><div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>&#160; uint32_t padLeft = 0;</div><div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>&#160; uint32_t padTop = 0;</div><div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>&#160; uint32_t padRight = 0;</div><div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>&#160; uint32_t padBottom = 0;</div><div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>&#160; uint32_t strideX = 1;</div><div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>&#160; uint32_t strideY = 1;</div><div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>&#160; uint32_t dilationX = 3;</div><div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>&#160; uint32_t dilationY = 3;</div><div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>&#160;</div><div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>&#160; <span class="comment">// Since the dilation rate is 3 this will reduce the size of the output from 9x9 to 3x3 of all 5s.</span></div><div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outputTensorInfo({ 1, 1, 3, 3}, ArmnnType);</div><div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>&#160; boost::multi_array&lt;T, 4&gt; expectedOutput = MakeTensor&lt;T, 4&gt;(outputTensorInfo, std::vector&lt;T&gt;(</div><div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>&#160; QuantizedVector&lt;T&gt;({</div><div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>&#160; 5, 5, 5,</div><div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>&#160; 5, 5, 5,</div><div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>&#160; 5, 5, 5</div><div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>&#160; },</div><div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>&#160; outputTensorInfo.GetQuantizationScale(),</div><div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>&#160; outputTensorInfo.GetQuantizationOffset())));</div><div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>&#160;</div><div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>&#160; <span class="keywordflow">return</span> DepthwiseConvolution2dTestImpl&lt;ArmnnType, ArmnnBType&gt;(</div><div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>&#160; workloadFactory,</div><div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>&#160; memoryManager,</div><div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>&#160; input,</div><div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>&#160; kernel,</div><div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>&#160; GetBias2&lt;ArmnnBType&gt;(biasEnabled, qScale * qScale),</div><div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>&#160; expectedOutput,</div><div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>&#160; qScale,</div><div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>&#160; qOffset,</div><div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>&#160; layout,</div><div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>&#160; padLeft,</div><div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>&#160; padTop,</div><div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>&#160; padRight,</div><div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>&#160; padBottom,</div><div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>&#160; strideX,</div><div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>&#160; strideY,</div><div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>&#160; dilationX,</div><div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>&#160; dilationY);</div><div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
4287<div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a></div></div>
4288</div><!-- fragment -->
4289</div>
4290</div>
4291</div><!-- contents -->
4292</div><!-- doc-content -->
4293<!-- start footer part -->
4294<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
4295 <ul>
4296 <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_0f3cdec46afbc61a1ded8e1687c9c9a0.html">backends</a></li><li class="navelem"><a class="el" href="dir_797a213d7d01b98ef12d53b0820ea64e.html">backendsCommon</a></li><li class="navelem"><a class="el" href="dir_28bfe507f7e135bdae07c2a6b7f66696.html">test</a></li><li class="navelem"><a class="el" href="dir_99a30439342d160875b21dac3498ad7f.html">layerTests</a></li><li class="navelem"><a class="el" href="_conv2d_test_impl_8cpp.html">Conv2dTestImpl.cpp</a></li>
4297 <li class="footer">Generated on Fri Mar 13 2020 16:07:00 for ArmNN by
4298 <a href="http://www.doxygen.org/index.html">
4299 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
4300 </ul>
4301</div>
4302</body>
4303</html>