arm_compute v18.05
[platform/upstream/armcl.git] / documentation / classarm__compute_1_1_n_e_winograd_layer_transform_weights_kernel.xhtml
1 <!-- HTML header for doxygen 1.8.9.1-->
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml">
4 <head>
5 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
6 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
7 <meta name="generator" content="Doxygen 1.8.11"/>
8 <meta name="robots" content="NOINDEX, NOFOLLOW" /> <!-- Prevent indexing by search engines -->
9 <title>Compute Library: NEWinogradLayerTransformWeightsKernel&lt; T, OutputTileRows, OutputTileCols, KernelRows, KernelCols &gt; Class Template Reference</title>
10 <link href="tabs.css" rel="stylesheet" type="text/css"/>
11 <script type="text/javascript" src="jquery.js"></script>
12 <script type="text/javascript" src="dynsections.js"></script>
13 <link href="navtree.css" rel="stylesheet" type="text/css"/>
14 <script type="text/javascript" src="resize.js"></script>
15 <script type="text/javascript" src="navtreedata.js"></script>
16 <script type="text/javascript" src="navtree.js"></script>
17 <script type="text/javascript">
18   $(document).ready(initResizable);
19   $(window).load(resizeHeight);
20 </script>
21 <link href="search/search.css" rel="stylesheet" type="text/css"/>
22 <script type="text/javascript" src="search/searchdata.js"></script>
23 <script type="text/javascript" src="search/search.js"></script>
24 <script type="text/javascript">
25   $(document).ready(function() { init_search(); });
26 </script>
27 <script type="text/x-mathjax-config">
28   MathJax.Hub.Config({
29     extensions: ["tex2jax.js"],
30     jax: ["input/TeX","output/HTML-CSS"],
31 });
32 </script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
33 <link href="doxygen.css" rel="stylesheet" type="text/css" />
34 </head>
35 <body>
36 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
37 <div id="titlearea">
38 <table cellspacing="0" cellpadding="0">
39  <tbody>
40  <tr style="height: 56px;">
41   <td style="padding-left: 0.5em;">
42    <div id="projectname">Compute Library
43    &#160;<span id="projectnumber">18.05</span>
44    </div>
45   </td>
46  </tr>
47  </tbody>
48 </table>
49 </div>
50 <!-- end header part -->
51 <!-- Generated by Doxygen 1.8.11 -->
52 <script type="text/javascript">
53 var searchBox = new SearchBox("searchBox", "search",false,'Search');
54 </script>
55   <div id="navrow1" class="tabs">
56     <ul class="tablist">
57       <li><a href="index.xhtml"><span>Main&#160;Page</span></a></li>
58       <li><a href="pages.xhtml"><span>Related&#160;Pages</span></a></li>
59       <li><a href="namespaces.xhtml"><span>Namespaces</span></a></li>
60       <li class="current"><a href="annotated.xhtml"><span>Data&#160;Structures</span></a></li>
61       <li><a href="files.xhtml"><span>Files</span></a></li>
62       <li>
63         <div id="MSearchBox" class="MSearchBoxInactive">
64         <span class="left">
65           <img id="MSearchSelect" src="search/mag_sel.png"
66                onmouseover="return searchBox.OnSearchSelectShow()"
67                onmouseout="return searchBox.OnSearchSelectHide()"
68                alt=""/>
69           <input type="text" id="MSearchField" value="Search" accesskey="S"
70                onfocus="searchBox.OnSearchFieldFocus(true)" 
71                onblur="searchBox.OnSearchFieldFocus(false)" 
72                onkeyup="searchBox.OnSearchFieldChange(event)"/>
73           </span><span class="right">
74             <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
75           </span>
76         </div>
77       </li>
78     </ul>
79   </div>
80   <div id="navrow2" class="tabs2">
81     <ul class="tablist">
82       <li><a href="annotated.xhtml"><span>Data&#160;Structures</span></a></li>
83       <li><a href="classes.xhtml"><span>Data&#160;Structure&#160;Index</span></a></li>
84       <li><a href="inherits.xhtml"><span>Class&#160;Hierarchy</span></a></li>
85       <li><a href="functions.xhtml"><span>Data&#160;Fields</span></a></li>
86     </ul>
87   </div>
88 </div><!-- top -->
89 <div id="side-nav" class="ui-resizable side-nav-resizable">
90   <div id="nav-tree">
91     <div id="nav-tree-contents">
92       <div id="nav-sync" class="sync"></div>
93     </div>
94   </div>
95   <div id="splitbar" style="-moz-user-select:none;" 
96        class="ui-resizable-handle">
97   </div>
98 </div>
99 <script type="text/javascript">
100 $(document).ready(function(){initNavTree('classarm__compute_1_1_n_e_winograd_layer_transform_weights_kernel.xhtml','');});
101 </script>
102 <div id="doc-content">
103 <!-- window showing the filter options -->
104 <div id="MSearchSelectWindow"
105      onmouseover="return searchBox.OnSearchSelectShow()"
106      onmouseout="return searchBox.OnSearchSelectHide()"
107      onkeydown="return searchBox.OnSearchSelectKey(event)">
108 </div>
109
110 <!-- iframe showing the search results (closed by default) -->
111 <div id="MSearchResultsWindow">
112 <iframe src="javascript:void(0)" frameborder="0" 
113         name="MSearchResults" id="MSearchResults">
114 </iframe>
115 </div>
116
117 <div class="header">
118   <div class="summary">
119 <a href="#pub-methods">Public Member Functions</a> &#124;
120 <a href="#pub-static-methods">Static Public Member Functions</a>  </div>
121   <div class="headertitle">
122 <div class="title">NEWinogradLayerTransformWeightsKernel&lt; T, OutputTileRows, OutputTileCols, KernelRows, KernelCols &gt; Class Template Reference<span class="mlabels"><span class="mlabel">final</span></span></div>  </div>
123 </div><!--header-->
124 <div class="contents">
125
126 <p>NEON kernel to perform Winograd weights transform.  
127  <a href="classarm__compute_1_1_n_e_winograd_layer_transform_weights_kernel.xhtml#details">More...</a></p>
128
129 <p><code>#include &lt;<a class="el" href="_n_e_winograd_convolution_layer_kernel_8h_source.xhtml">NEWinogradConvolutionLayerKernel.h</a>&gt;</code></p>
130 <div class="dynheader">
131 Collaboration diagram for NEWinogradLayerTransformWeightsKernel&lt; T, OutputTileRows, OutputTileCols, KernelRows, KernelCols &gt;:</div>
132 <div class="dyncontent">
133 <div class="center"><iframe scrolling="no" frameborder="0" src="classarm__compute_1_1_n_e_winograd_layer_transform_weights_kernel__coll__graph.svg" width="246" height="320"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
134 </div>
135 <center><span class="legend">[<a target="top" href="graph_legend.xhtml">legend</a>]</span></center></div>
136 <table class="memberdecls">
137 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
138 Public Member Functions</h2></td></tr>
139 <tr class="memitem:ad25daf413f7dd45f084ae22a25b8bbe5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_winograd_layer_transform_weights_kernel.xhtml#ad25daf413f7dd45f084ae22a25b8bbe5">NEWinogradLayerTransformWeightsKernel</a> ()</td></tr>
140 <tr class="memdesc:ad25daf413f7dd45f084ae22a25b8bbe5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor.  <a href="#ad25daf413f7dd45f084ae22a25b8bbe5">More...</a><br /></td></tr>
141 <tr class="separator:ad25daf413f7dd45f084ae22a25b8bbe5"><td class="memSeparator" colspan="2">&#160;</td></tr>
142 <tr class="memitem:ab5656bb5b6334bdbe6e606c715872828"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_winograd_layer_transform_weights_kernel.xhtml#ab5656bb5b6334bdbe6e606c715872828">name</a> () const override</td></tr>
143 <tr class="memdesc:ab5656bb5b6334bdbe6e606c715872828"><td class="mdescLeft">&#160;</td><td class="mdescRight">Name of the kernel.  <a href="#ab5656bb5b6334bdbe6e606c715872828">More...</a><br /></td></tr>
144 <tr class="separator:ab5656bb5b6334bdbe6e606c715872828"><td class="memSeparator" colspan="2">&#160;</td></tr>
145 <tr class="memitem:a6b072ab95153097e216d4b5b933c0d8c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_winograd_layer_transform_weights_kernel.xhtml#a6b072ab95153097e216d4b5b933c0d8c">configure</a> (const <a class="el" href="classarm__compute_1_1_i_tensor.xhtml">ITensor</a> *weights_hwio, T *const output, const int matrix_stride, const int n_output_channels, const int n_input_channels) override</td></tr>
146 <tr class="memdesc:a6b072ab95153097e216d4b5b933c0d8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configure the weights transform kernel.  <a href="#a6b072ab95153097e216d4b5b933c0d8c">More...</a><br /></td></tr>
147 <tr class="separator:a6b072ab95153097e216d4b5b933c0d8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
148 <tr class="memitem:abfe717774e572988b63fdd5a69364eb9"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_winograd_layer_transform_weights_kernel.xhtml#abfe717774e572988b63fdd5a69364eb9">get_weight_storage_size</a> (int n_output_channels, int n_input_channels) const override</td></tr>
149 <tr class="memdesc:abfe717774e572988b63fdd5a69364eb9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine how much memory (in units of T) to allocate for the transformed weights.  <a href="#abfe717774e572988b63fdd5a69364eb9">More...</a><br /></td></tr>
150 <tr class="separator:abfe717774e572988b63fdd5a69364eb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
151 <tr class="memitem:a07a976f4d6b4b62e2ffcea8b0dab6d9f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_winograd_layer_transform_weights_kernel.xhtml#a07a976f4d6b4b62e2ffcea8b0dab6d9f">get_matrix_stride</a> (const KernelShape &amp;kernel_shape) const override</td></tr>
152 <tr class="memdesc:a07a976f4d6b4b62e2ffcea8b0dab6d9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the stride between matrices in the kernel worspace.  <a href="#a07a976f4d6b4b62e2ffcea8b0dab6d9f">More...</a><br /></td></tr>
153 <tr class="separator:a07a976f4d6b4b62e2ffcea8b0dab6d9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
154 <tr class="memitem:a112b35dd205c62ea6ed1447ef226da82"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_winograd_layer_transform_weights_kernel.xhtml#a112b35dd205c62ea6ed1447ef226da82">run</a> (const <a class="el" href="classarm__compute_1_1_window.xhtml">Window</a> &amp;<a class="el" href="classarm__compute_1_1_i_kernel.xhtml#a3f5646133956f06348b310ccc3d36353">window</a>, const <a class="el" href="structarm__compute_1_1_thread_info.xhtml">ThreadInfo</a> &amp;info) override</td></tr>
155 <tr class="memdesc:a112b35dd205c62ea6ed1447ef226da82"><td class="mdescLeft">&#160;</td><td class="mdescRight">Execute the kernel on the passed window.  <a href="#a112b35dd205c62ea6ed1447ef226da82">More...</a><br /></td></tr>
156 <tr class="separator:a112b35dd205c62ea6ed1447ef226da82"><td class="memSeparator" colspan="2">&#160;</td></tr>
157 <tr class="memitem:a4370ae5fda7bd455a171fc8ed4d3f283"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_winograd_layer_transform_weights_kernel.xhtml#a4370ae5fda7bd455a171fc8ed4d3f283">is_parallelisable</a> () const override</td></tr>
158 <tr class="memdesc:a4370ae5fda7bd455a171fc8ed4d3f283"><td class="mdescLeft">&#160;</td><td class="mdescRight">Indicates whether or not the kernel is parallelisable.  <a href="#a4370ae5fda7bd455a171fc8ed4d3f283">More...</a><br /></td></tr>
159 <tr class="separator:a4370ae5fda7bd455a171fc8ed4d3f283"><td class="memSeparator" colspan="2">&#160;</td></tr>
160 <tr class="inherit_header pub_methods_classarm__compute_1_1_i_n_e_winograd_layer_transform_weights_kernel"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classarm__compute_1_1_i_n_e_winograd_layer_transform_weights_kernel')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classarm__compute_1_1_i_n_e_winograd_layer_transform_weights_kernel.xhtml">INEWinogradLayerTransformWeightsKernel&lt; T &gt;</a></td></tr>
161 <tr class="memitem:a668729f636910fd5f425cee965efee6d inherit pub_methods_classarm__compute_1_1_i_n_e_winograd_layer_transform_weights_kernel"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_n_e_winograd_layer_transform_weights_kernel.xhtml#a668729f636910fd5f425cee965efee6d">~INEWinogradLayerTransformWeightsKernel</a> ()</td></tr>
162 <tr class="separator:a668729f636910fd5f425cee965efee6d inherit pub_methods_classarm__compute_1_1_i_n_e_winograd_layer_transform_weights_kernel"><td class="memSeparator" colspan="2">&#160;</td></tr>
163 <tr class="inherit_header pub_methods_classarm__compute_1_1_i_c_p_p_kernel"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classarm__compute_1_1_i_c_p_p_kernel')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classarm__compute_1_1_i_c_p_p_kernel.xhtml">ICPPKernel</a></td></tr>
164 <tr class="memitem:a033d17a97e07cea7fe83eefcf23540f6 inherit pub_methods_classarm__compute_1_1_i_c_p_p_kernel"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_c_p_p_kernel.xhtml#a033d17a97e07cea7fe83eefcf23540f6">~ICPPKernel</a> ()=default</td></tr>
165 <tr class="memdesc:a033d17a97e07cea7fe83eefcf23540f6 inherit pub_methods_classarm__compute_1_1_i_c_p_p_kernel"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default destructor.  <a href="#a033d17a97e07cea7fe83eefcf23540f6">More...</a><br /></td></tr>
166 <tr class="separator:a033d17a97e07cea7fe83eefcf23540f6 inherit pub_methods_classarm__compute_1_1_i_c_p_p_kernel"><td class="memSeparator" colspan="2">&#160;</td></tr>
167 <tr class="inherit_header pub_methods_classarm__compute_1_1_i_kernel"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classarm__compute_1_1_i_kernel')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classarm__compute_1_1_i_kernel.xhtml">IKernel</a></td></tr>
168 <tr class="memitem:a7250cb8cbaa4104a93a2d77155085507 inherit pub_methods_classarm__compute_1_1_i_kernel"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_kernel.xhtml#a7250cb8cbaa4104a93a2d77155085507">IKernel</a> ()</td></tr>
169 <tr class="memdesc:a7250cb8cbaa4104a93a2d77155085507 inherit pub_methods_classarm__compute_1_1_i_kernel"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#a7250cb8cbaa4104a93a2d77155085507">More...</a><br /></td></tr>
170 <tr class="separator:a7250cb8cbaa4104a93a2d77155085507 inherit pub_methods_classarm__compute_1_1_i_kernel"><td class="memSeparator" colspan="2">&#160;</td></tr>
171 <tr class="memitem:a341b60d15a5e12a5b8f3825194dd3b12 inherit pub_methods_classarm__compute_1_1_i_kernel"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_kernel.xhtml#a341b60d15a5e12a5b8f3825194dd3b12">~IKernel</a> ()=default</td></tr>
172 <tr class="memdesc:a341b60d15a5e12a5b8f3825194dd3b12 inherit pub_methods_classarm__compute_1_1_i_kernel"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor.  <a href="#a341b60d15a5e12a5b8f3825194dd3b12">More...</a><br /></td></tr>
173 <tr class="separator:a341b60d15a5e12a5b8f3825194dd3b12 inherit pub_methods_classarm__compute_1_1_i_kernel"><td class="memSeparator" colspan="2">&#160;</td></tr>
174 <tr class="memitem:aa6daa9b04e2035bf007e5e5c3c4396a8 inherit pub_methods_classarm__compute_1_1_i_kernel"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="structarm__compute_1_1_border_size.xhtml">BorderSize</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_kernel.xhtml#aa6daa9b04e2035bf007e5e5c3c4396a8">border_size</a> () const </td></tr>
175 <tr class="memdesc:aa6daa9b04e2035bf007e5e5c3c4396a8 inherit pub_methods_classarm__compute_1_1_i_kernel"><td class="mdescLeft">&#160;</td><td class="mdescRight">The size of the border for that kernel.  <a href="#aa6daa9b04e2035bf007e5e5c3c4396a8">More...</a><br /></td></tr>
176 <tr class="separator:aa6daa9b04e2035bf007e5e5c3c4396a8 inherit pub_methods_classarm__compute_1_1_i_kernel"><td class="memSeparator" colspan="2">&#160;</td></tr>
177 <tr class="memitem:a3f5646133956f06348b310ccc3d36353 inherit pub_methods_classarm__compute_1_1_i_kernel"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarm__compute_1_1_window.xhtml">Window</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_kernel.xhtml#a3f5646133956f06348b310ccc3d36353">window</a> () const </td></tr>
178 <tr class="memdesc:a3f5646133956f06348b310ccc3d36353 inherit pub_methods_classarm__compute_1_1_i_kernel"><td class="mdescLeft">&#160;</td><td class="mdescRight">The maximum window the kernel can be executed on.  <a href="#a3f5646133956f06348b310ccc3d36353">More...</a><br /></td></tr>
179 <tr class="separator:a3f5646133956f06348b310ccc3d36353 inherit pub_methods_classarm__compute_1_1_i_kernel"><td class="memSeparator" colspan="2">&#160;</td></tr>
180 </table><table class="memberdecls">
181 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
182 Static Public Member Functions</h2></td></tr>
183 <tr class="memitem:a502f9b46f6aac5562a420b945981e443"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classarm__compute_1_1_status.xhtml">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_n_e_winograd_layer_transform_weights_kernel.xhtml#a502f9b46f6aac5562a420b945981e443">validate</a> (const <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml">ITensorInfo</a> *input, const <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml">ITensorInfo</a> *output, const <a class="el" href="structarm__compute_1_1_winograd_info.xhtml">WinogradInfo</a> &amp;winograd_info)</td></tr>
184 <tr class="memdesc:a502f9b46f6aac5562a420b945981e443"><td class="mdescLeft">&#160;</td><td class="mdescRight">Static function to check if given info will lead to a valid configuration of <a class="el" href="classarm__compute_1_1_n_e_winograd_layer_transform_weights_kernel.xhtml">NEWinogradLayerTransformWeightsKernel</a>.  <a href="#a502f9b46f6aac5562a420b945981e443">More...</a><br /></td></tr>
185 <tr class="separator:a502f9b46f6aac5562a420b945981e443"><td class="memSeparator" colspan="2">&#160;</td></tr>
186 </table>
187 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
188 <div class="textblock"><h3>template&lt;typename T, int OutputTileRows, int OutputTileCols, int KernelRows, int KernelCols&gt;<br />
189 class arm_compute::NEWinogradLayerTransformWeightsKernel&lt; T, OutputTileRows, OutputTileCols, KernelRows, KernelCols &gt;</h3>
190
191 <p>NEON kernel to perform Winograd weights transform. </p>
192
193 <p>Definition at line <a class="el" href="_n_e_winograd_convolution_layer_kernel_8h_source.xhtml#l00378">378</a> of file <a class="el" href="_n_e_winograd_convolution_layer_kernel_8h_source.xhtml">NEWinogradConvolutionLayerKernel.h</a>.</p>
194 </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
195 <a class="anchor" id="ad25daf413f7dd45f084ae22a25b8bbe5"></a>
196 <div class="memitem">
197 <div class="memproto">
198       <table class="memname">
199         <tr>
200           <td class="memname"><a class="el" href="classarm__compute_1_1_n_e_winograd_layer_transform_weights_kernel.xhtml">NEWinogradLayerTransformWeightsKernel</a> </td>
201           <td>(</td>
202           <td class="paramname"></td><td>)</td>
203           <td></td>
204         </tr>
205       </table>
206 </div><div class="memdoc">
207
208 <p>Default constructor. </p>
209
210 </div>
211 </div>
212 <h2 class="groupheader">Member Function Documentation</h2>
213 <a class="anchor" id="a6b072ab95153097e216d4b5b933c0d8c"></a>
214 <div class="memitem">
215 <div class="memproto">
216 <table class="mlabels">
217   <tr>
218   <td class="mlabels-left">
219       <table class="memname">
220         <tr>
221           <td class="memname">void configure </td>
222           <td>(</td>
223           <td class="paramtype">const <a class="el" href="classarm__compute_1_1_i_tensor.xhtml">ITensor</a> *&#160;</td>
224           <td class="paramname"><em>weights_hwio</em>, </td>
225         </tr>
226         <tr>
227           <td class="paramkey"></td>
228           <td></td>
229           <td class="paramtype">T *const&#160;</td>
230           <td class="paramname"><em>output</em>, </td>
231         </tr>
232         <tr>
233           <td class="paramkey"></td>
234           <td></td>
235           <td class="paramtype">const int&#160;</td>
236           <td class="paramname"><em>matrix_stride</em>, </td>
237         </tr>
238         <tr>
239           <td class="paramkey"></td>
240           <td></td>
241           <td class="paramtype">const int&#160;</td>
242           <td class="paramname"><em>n_output_channels</em>, </td>
243         </tr>
244         <tr>
245           <td class="paramkey"></td>
246           <td></td>
247           <td class="paramtype">const int&#160;</td>
248           <td class="paramname"><em>n_input_channels</em>&#160;</td>
249         </tr>
250         <tr>
251           <td></td>
252           <td>)</td>
253           <td></td><td></td>
254         </tr>
255       </table>
256   </td>
257   <td class="mlabels-right">
258 <span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
259   </tr>
260 </table>
261 </div><div class="memdoc">
262
263 <p>Configure the weights transform kernel. </p>
264 <dl class="params"><dt>Parameters</dt><dd>
265   <table class="params">
266     <tr><td class="paramdir">[in]</td><td class="paramname">weights_hwio</td><td>Pointer to the weights tensor </td></tr>
267     <tr><td class="paramdir">[in]</td><td class="paramname">output</td><td>Pointer to working space for the output tensor in the Winograd domain. </td></tr>
268     <tr><td class="paramdir">[in]</td><td class="paramname">matrix_stride</td><td>Stride across matrices in the output workspace. </td></tr>
269     <tr><td class="paramdir">[in]</td><td class="paramname">n_output_channels</td><td>Number of filters. </td></tr>
270     <tr><td class="paramdir">[in]</td><td class="paramname">n_input_channels</td><td>Number of channels in each filter. </td></tr>
271   </table>
272   </dd>
273 </dl>
274
275 <p>Implements <a class="el" href="classarm__compute_1_1_i_n_e_winograd_layer_transform_weights_kernel.xhtml#af722049ac6ad3c1c96df13005645d6c3">INEWinogradLayerTransformWeightsKernel&lt; T &gt;</a>.</p>
276
277 </div>
278 </div>
279 <a class="anchor" id="a07a976f4d6b4b62e2ffcea8b0dab6d9f"></a>
280 <div class="memitem">
281 <div class="memproto">
282 <table class="mlabels">
283   <tr>
284   <td class="mlabels-left">
285       <table class="memname">
286         <tr>
287           <td class="memname">int get_matrix_stride </td>
288           <td>(</td>
289           <td class="paramtype">const KernelShape &amp;&#160;</td>
290           <td class="paramname"><em>kernel_shape</em></td><td>)</td>
291           <td> const</td>
292         </tr>
293       </table>
294   </td>
295   <td class="mlabels-right">
296 <span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
297   </tr>
298 </table>
299 </div><div class="memdoc">
300
301 <p>Gets the stride between matrices in the kernel worspace. </p>
302 <dl class="params"><dt>Parameters</dt><dd>
303   <table class="params">
304     <tr><td class="paramdir">[in]</td><td class="paramname">kernel_shape</td><td>The shape of the weights tensor.</td></tr>
305   </table>
306   </dd>
307 </dl>
308 <dl class="section return"><dt>Returns</dt><dd>Stride expressed in bytes. </dd></dl>
309
310 <p>Implements <a class="el" href="classarm__compute_1_1_i_n_e_winograd_layer_transform_weights_kernel.xhtml#a0769fae1b815e5e48086ad25c1528dec">INEWinogradLayerTransformWeightsKernel&lt; T &gt;</a>.</p>
311
312 </div>
313 </div>
314 <a class="anchor" id="abfe717774e572988b63fdd5a69364eb9"></a>
315 <div class="memitem">
316 <div class="memproto">
317 <table class="mlabels">
318   <tr>
319   <td class="mlabels-left">
320       <table class="memname">
321         <tr>
322           <td class="memname">unsigned int get_weight_storage_size </td>
323           <td>(</td>
324           <td class="paramtype">int&#160;</td>
325           <td class="paramname"><em>n_output_channels</em>, </td>
326         </tr>
327         <tr>
328           <td class="paramkey"></td>
329           <td></td>
330           <td class="paramtype">int&#160;</td>
331           <td class="paramname"><em>n_input_channels</em>&#160;</td>
332         </tr>
333         <tr>
334           <td></td>
335           <td>)</td>
336           <td></td><td> const</td>
337         </tr>
338       </table>
339   </td>
340   <td class="mlabels-right">
341 <span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
342   </tr>
343 </table>
344 </div><div class="memdoc">
345
346 <p>Determine how much memory (in units of T) to allocate for the transformed weights. </p>
347 <dl class="params"><dt>Parameters</dt><dd>
348   <table class="params">
349     <tr><td class="paramdir">[in]</td><td class="paramname">n_output_channels</td><td>Number of output feature maps. </td></tr>
350     <tr><td class="paramdir">[in]</td><td class="paramname">n_input_channels</td><td>Number of input feature maps.</td></tr>
351   </table>
352   </dd>
353 </dl>
354 <dl class="section return"><dt>Returns</dt><dd>Storage size (in units of T) required. </dd></dl>
355
356 <p>Implements <a class="el" href="classarm__compute_1_1_i_n_e_winograd_layer_transform_weights_kernel.xhtml#ad670ceec7efb9583d3ab5ae0700bf028">INEWinogradLayerTransformWeightsKernel&lt; T &gt;</a>.</p>
357
358 </div>
359 </div>
360 <a class="anchor" id="a4370ae5fda7bd455a171fc8ed4d3f283"></a>
361 <div class="memitem">
362 <div class="memproto">
363 <table class="mlabels">
364   <tr>
365   <td class="mlabels-left">
366       <table class="memname">
367         <tr>
368           <td class="memname">bool is_parallelisable </td>
369           <td>(</td>
370           <td class="paramname"></td><td>)</td>
371           <td> const</td>
372         </tr>
373       </table>
374   </td>
375   <td class="mlabels-right">
376 <span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
377   </tr>
378 </table>
379 </div><div class="memdoc">
380
381 <p>Indicates whether or not the kernel is parallelisable. </p>
382 <p>If the kernel is parallelisable then the window returned by <a class="el" href="classarm__compute_1_1_i_kernel.xhtml#a3f5646133956f06348b310ccc3d36353" title="The maximum window the kernel can be executed on. ">window()</a> can be split into sub-windows which can then be run in parallel.</p>
383 <p>If the kernel is not parallelisable then only the window returned by <a class="el" href="classarm__compute_1_1_i_kernel.xhtml#a3f5646133956f06348b310ccc3d36353" title="The maximum window the kernel can be executed on. ">window()</a> can be passed to <a class="el" href="classarm__compute_1_1_n_e_winograd_layer_transform_weights_kernel.xhtml#a112b35dd205c62ea6ed1447ef226da82" title="Execute the kernel on the passed window. ">run()</a></p>
384 <dl class="section return"><dt>Returns</dt><dd>True if the kernel is parallelisable </dd></dl>
385
386 <p>Reimplemented from <a class="el" href="classarm__compute_1_1_i_kernel.xhtml#abfab8f0d4928e1081d9f65b77933e24a">IKernel</a>.</p>
387
388 </div>
389 </div>
390 <a class="anchor" id="ab5656bb5b6334bdbe6e606c715872828"></a>
391 <div class="memitem">
392 <div class="memproto">
393 <table class="mlabels">
394   <tr>
395   <td class="mlabels-left">
396       <table class="memname">
397         <tr>
398           <td class="memname">const char* name </td>
399           <td>(</td>
400           <td class="paramname"></td><td>)</td>
401           <td> const</td>
402         </tr>
403       </table>
404   </td>
405   <td class="mlabels-right">
406 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
407   </tr>
408 </table>
409 </div><div class="memdoc">
410
411 <p>Name of the kernel. </p>
412 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="classarm__compute_1_1_kernel.xhtml" title="Kernel class. ">Kernel</a> name </dd></dl>
413
414 <p>Implements <a class="el" href="classarm__compute_1_1_i_c_p_p_kernel.xhtml#a1a30ad8f276a2310571c36239554831a">ICPPKernel</a>.</p>
415
416 <p>Definition at line <a class="el" href="_n_e_winograd_convolution_layer_kernel_8h_source.xhtml#l00383">383</a> of file <a class="el" href="_n_e_winograd_convolution_layer_kernel_8h_source.xhtml">NEWinogradConvolutionLayerKernel.h</a>.</p>
417
418 <p>References <a class="el" href="classarm__compute_1_1_i_n_e_winograd_layer_transform_input_kernel.xhtml#a2ac7c7acdb2d7dea85085c2dff52687f">INEWinogradLayerTransformInputKernel&lt; T &gt;::configure()</a>, <a class="el" href="classarm__compute_1_1_i_n_e_winograd_layer_transform_input_kernel.xhtml#ae25b6ed77179808984b17c39e078ad96">INEWinogradLayerTransformInputKernel&lt; T &gt;::get_matrix_stride()</a>, <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a096668313a9a819d54a2e65ec21ff0cc">arm_compute::test::validation::info()</a>, <a class="el" href="classarm__compute_1_1_i_kernel.xhtml#abfab8f0d4928e1081d9f65b77933e24a">IKernel::is_parallelisable()</a>, <a class="el" href="classarm__compute_1_1_i_c_p_p_kernel.xhtml#af814ff5e96f40f1cccf809b2b4ee19ef">ICPPKernel::run()</a>, <a class="el" href="namespacearm__compute_1_1test_1_1validation.xhtml#a6813132c943295888972727864ea5c2f">arm_compute::test::validation::validate()</a>, <a class="el" href="classarm__compute_1_1_i_kernel.xhtml#a3f5646133956f06348b310ccc3d36353">IKernel::window()</a>, and <a class="el" href="_c_l_2_winograd_8cpp_source.xhtml#l00173">arm_compute::test::validation::winograd_info</a>.</p>
419 <div class="fragment"><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;    {</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;        <span class="keywordflow">return</span> <span class="stringliteral">&quot;NEWinogradLayerTransformWeightsKernel&quot;</span>;</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;    }</div></div><!-- fragment -->
420 </div>
421 </div>
422 <a class="anchor" id="a112b35dd205c62ea6ed1447ef226da82"></a>
423 <div class="memitem">
424 <div class="memproto">
425 <table class="mlabels">
426   <tr>
427   <td class="mlabels-left">
428       <table class="memname">
429         <tr>
430           <td class="memname">void run </td>
431           <td>(</td>
432           <td class="paramtype">const <a class="el" href="classarm__compute_1_1_window.xhtml">Window</a> &amp;&#160;</td>
433           <td class="paramname"><em>window</em>, </td>
434         </tr>
435         <tr>
436           <td class="paramkey"></td>
437           <td></td>
438           <td class="paramtype">const <a class="el" href="structarm__compute_1_1_thread_info.xhtml">ThreadInfo</a> &amp;&#160;</td>
439           <td class="paramname"><em>info</em>&#160;</td>
440         </tr>
441         <tr>
442           <td></td>
443           <td>)</td>
444           <td></td><td></td>
445         </tr>
446       </table>
447   </td>
448   <td class="mlabels-right">
449 <span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
450   </tr>
451 </table>
452 </div><div class="memdoc">
453
454 <p>Execute the kernel on the passed window. </p>
455 <dl class="section warning"><dt>Warning</dt><dd>If <a class="el" href="classarm__compute_1_1_n_e_winograd_layer_transform_weights_kernel.xhtml#a4370ae5fda7bd455a171fc8ed4d3f283" title="Indicates whether or not the kernel is parallelisable. ">is_parallelisable()</a> returns false then the passed window must be equal to <a class="el" href="classarm__compute_1_1_i_kernel.xhtml#a3f5646133956f06348b310ccc3d36353" title="The maximum window the kernel can be executed on. ">window()</a></dd></dl>
456 <dl class="section note"><dt>Note</dt><dd>The window has to be a region within the window returned by the <a class="el" href="classarm__compute_1_1_i_kernel.xhtml#a3f5646133956f06348b310ccc3d36353" title="The maximum window the kernel can be executed on. ">window()</a> method</dd>
457 <dd>
458 The width of the window has to be a multiple of num_elems_processed_per_iteration().</dd></dl>
459 <dl class="params"><dt>Parameters</dt><dd>
460   <table class="params">
461     <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>Region on which to execute the kernel. (Must be a region of the window returned by <a class="el" href="classarm__compute_1_1_i_kernel.xhtml#a3f5646133956f06348b310ccc3d36353" title="The maximum window the kernel can be executed on. ">window()</a>) </td></tr>
462     <tr><td class="paramdir">[in]</td><td class="paramname">info</td><td>Info about executing thread and CPU. </td></tr>
463   </table>
464   </dd>
465 </dl>
466
467 <p>Implements <a class="el" href="classarm__compute_1_1_i_c_p_p_kernel.xhtml#af814ff5e96f40f1cccf809b2b4ee19ef">ICPPKernel</a>.</p>
468
469 </div>
470 </div>
471 <a class="anchor" id="a502f9b46f6aac5562a420b945981e443"></a>
472 <div class="memitem">
473 <div class="memproto">
474 <table class="mlabels">
475   <tr>
476   <td class="mlabels-left">
477       <table class="memname">
478         <tr>
479           <td class="memname">static <a class="el" href="classarm__compute_1_1_status.xhtml">Status</a> validate </td>
480           <td>(</td>
481           <td class="paramtype">const <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml">ITensorInfo</a> *&#160;</td>
482           <td class="paramname"><em>input</em>, </td>
483         </tr>
484         <tr>
485           <td class="paramkey"></td>
486           <td></td>
487           <td class="paramtype">const <a class="el" href="classarm__compute_1_1_i_tensor_info.xhtml">ITensorInfo</a> *&#160;</td>
488           <td class="paramname"><em>output</em>, </td>
489         </tr>
490         <tr>
491           <td class="paramkey"></td>
492           <td></td>
493           <td class="paramtype">const <a class="el" href="structarm__compute_1_1_winograd_info.xhtml">WinogradInfo</a> &amp;&#160;</td>
494           <td class="paramname"><em>winograd_info</em>&#160;</td>
495         </tr>
496         <tr>
497           <td></td>
498           <td>)</td>
499           <td></td><td></td>
500         </tr>
501       </table>
502   </td>
503   <td class="mlabels-right">
504 <span class="mlabels"><span class="mlabel">static</span></span>  </td>
505   </tr>
506 </table>
507 </div><div class="memdoc">
508
509 <p>Static function to check if given info will lead to a valid configuration of <a class="el" href="classarm__compute_1_1_n_e_winograd_layer_transform_weights_kernel.xhtml">NEWinogradLayerTransformWeightsKernel</a>. </p>
510 <dl class="params"><dt>Parameters</dt><dd>
511   <table class="params">
512     <tr><td class="paramdir">[in]</td><td class="paramname">input</td><td>Source tensor info. The input is a 4D tensor with dimensions [kernel_x, kernel_y, IFM, OFM] (NCHW data layout). kernel_x must be 3 and equal to kernel_y. Data types supported: F32. </td></tr>
513     <tr><td class="paramdir">[in]</td><td class="paramname">output</td><td>Destination tensor info. The output is a 3D tensor with dimensions [OFM, IFM, 16] or [OFM, IFM, 36]. Data type supported: same as <code>input</code> </td></tr>
514     <tr><td class="paramdir">[in]</td><td class="paramname">winograd_info</td><td>Contains Winograd's information described in <a class="el" href="structarm__compute_1_1_winograd_info.xhtml">WinogradInfo</a></td></tr>
515   </table>
516   </dd>
517 </dl>
518 <dl class="section return"><dt>Returns</dt><dd>a status </dd></dl>
519
520 </div>
521 </div>
522 <hr/>The documentation for this class was generated from the following file:<ul>
523 <li>arm_compute/core/NEON/kernels/<a class="el" href="_n_e_winograd_convolution_layer_kernel_8h_source.xhtml">NEWinogradConvolutionLayerKernel.h</a></li>
524 </ul>
525 </div><!-- contents -->
526 </div><!-- doc-content -->
527 <!-- start footer part -->
528 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
529   <ul>
530     <li class="navelem"><a class="el" href="namespacearm__compute.xhtml">arm_compute</a></li><li class="navelem"><a class="el" href="classarm__compute_1_1_n_e_winograd_layer_transform_weights_kernel.xhtml">NEWinogradLayerTransformWeightsKernel</a></li>
531     <li class="footer">Generated on Wed May 23 2018 11:36:43 for Compute Library by
532     <a href="http://www.doxygen.org/index.html">
533     <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
534   </ul>
535 </div>
536 </body>
537 </html>