diff options
author | David Monahan <david.monahan@arm.com> | 2023-03-22 16:48:58 +0000 |
---|---|---|
committer | David Monahan <david.monahan@arm.com> | 2023-03-22 16:48:58 +0000 |
commit | ae050524109f1ce827962665436ef7430f2ac479 (patch) | |
tree | a087fe0c77570971dd7979f2757426c24e91afc7 /23.02/classarmnn_1_1_cl_softmax_workload.xhtml | |
parent | 8d2ca734165a068478df7cffa46185680b05cd20 (diff) | |
download | armnn-ae050524109f1ce827962665436ef7430f2ac479.tar.gz |
IVGCVSW-7255 Update Doxygen Documentation and publish on GitHub.
* Updating Doxygen documentation for 23.02 release.
Signed-off-by: David Monahan <david.monahan@arm.com>
Change-Id: I545574ff7664b4595d2fe6a91a3c35d2ad55df82
Diffstat (limited to '23.02/classarmnn_1_1_cl_softmax_workload.xhtml')
-rw-r--r-- | 23.02/classarmnn_1_1_cl_softmax_workload.xhtml | 99 |
1 files changed, 65 insertions, 34 deletions
diff --git a/23.02/classarmnn_1_1_cl_softmax_workload.xhtml b/23.02/classarmnn_1_1_cl_softmax_workload.xhtml index 6b3946eec4..4b03f634e2 100644 --- a/23.02/classarmnn_1_1_cl_softmax_workload.xhtml +++ b/23.02/classarmnn_1_1_cl_softmax_workload.xhtml @@ -8,7 +8,7 @@ <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.13"/> +<meta name="generator" content="Doxygen 1.8.17"/> <meta name="robots" content="NOINDEX, NOFOLLOW" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>ArmNN: ClSoftmaxWorkload Class Reference</title> @@ -19,9 +19,6 @@ <script type="text/javascript" src="resize.js"></script> <script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtree.js"></script> -<script type="text/javascript"> - $(document).ready(initResizable); -</script> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/search.js"></script> @@ -30,7 +27,8 @@ extensions: ["tex2jax.js"], jax: ["input/TeX","output/HTML-CSS"], }); -</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script> +</script> +<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> <link href="stylesheet.css" rel="stylesheet" type="text/css"/> </head> @@ -51,18 +49,21 @@ </table> </div> <!-- end header part --> -<!-- Generated by Doxygen 1.8.13 --> +<!-- Generated by Doxygen 1.8.17 --> <script type="text/javascript"> +/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ var searchBox = new SearchBox("searchBox", "search",false,'Search'); +/* @license-end */ </script> <script type="text/javascript" src="menudata.js"></script> <script type="text/javascript" src="menu.js"></script> <script type="text/javascript"> +/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(function() { initMenu('',true,false,'search.php','Search'); $(document).ready(function() { init_search(); }); }); -</script> +/* @license-end */</script> <div id="main-nav"></div> </div><!-- top --> <div id="side-nav" class="ui-resizable side-nav-resizable"> @@ -76,7 +77,9 @@ $(function() { </div> </div> <script type="text/javascript"> -$(document).ready(function(){initNavTree('classarmnn_1_1_cl_softmax_workload.xhtml','');}); +/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ +$(document).ready(function(){initNavTree('classarmnn_1_1_cl_softmax_workload.xhtml',''); initResizable(); }); +/* @license-end */ </script> <div id="doc-content"> <!-- window showing the filter options --> @@ -111,13 +114,13 @@ Inheritance diagram for ClSoftmaxWorkload:</div> <map id="ClSoftmaxWorkload_map" name="ClSoftmaxWorkload_map"> <area href="classarmnn_1_1_cl_base_workload.xhtml" alt="ClBaseWorkload< SoftmaxQueueDescriptor >" shape="rect" coords="0,112,270,136"/> <area href="classarmnn_1_1_base_workload.xhtml" alt="BaseWorkload< SoftmaxQueueDescriptor >" shape="rect" coords="0,56,270,80"/> -<area href="classarmnn_1_1_i_workload.xhtml" title="Workload interface to enqueue a layer computation. " alt="IWorkload" shape="rect" coords="0,0,270,24"/> -</map> - </div></div> +<area href="classarmnn_1_1_i_workload.xhtml" title="Workload interface to enqueue a layer computation." alt="IWorkload" shape="rect" coords="0,0,270,24"/> + </map> +</div></div> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> Public Member Functions</h2></td></tr> -<tr class="memitem:aef23ddd4fbc681c7ce0a30c083180172"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_softmax_workload.xhtml#aef23ddd4fbc681c7ce0a30c083180172">ClSoftmaxWorkload</a> (const <a class="el" href="structarmnn_1_1_softmax_queue_descriptor.xhtml">SoftmaxQueueDescriptor</a> &descriptor, const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &<a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, std::shared_ptr< arm_compute::MemoryManagerOnDemand > &memoryManager, const arm_compute::CLCompileContext &clCompileContext)</td></tr> +<tr class="memitem:aef23ddd4fbc681c7ce0a30c083180172"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_softmax_workload.xhtml#aef23ddd4fbc681c7ce0a30c083180172">ClSoftmaxWorkload</a> (const <a class="el" href="structarmnn_1_1_softmax_queue_descriptor.xhtml">SoftmaxQueueDescriptor</a> &descriptor, const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &info, std::shared_ptr< arm_compute::MemoryManagerOnDemand > &memoryManager, const arm_compute::CLCompileContext &clCompileContext)</td></tr> <tr class="separator:aef23ddd4fbc681c7ce0a30c083180172"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae071e8822437c78baea75c3aef3a263a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_softmax_workload.xhtml#ae071e8822437c78baea75c3aef3a263a">Execute</a> () const override</td></tr> <tr class="separator:ae071e8822437c78baea75c3aef3a263a"><td class="memSeparator" colspan="2"> </td></tr> @@ -144,6 +147,10 @@ Public Member Functions</h2></td></tr> <tr class="inherit_header pub_methods_classarmnn_1_1_i_workload"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classarmnn_1_1_i_workload')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classarmnn_1_1_i_workload.xhtml">IWorkload</a></td></tr> <tr class="memitem:a69c83c02ae8de866bc7a46c49e69c1ba inherit pub_methods_classarmnn_1_1_i_workload"><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_workload.xhtml#a69c83c02ae8de866bc7a46c49e69c1ba">~IWorkload</a> ()</td></tr> <tr class="separator:a69c83c02ae8de866bc7a46c49e69c1ba inherit pub_methods_classarmnn_1_1_i_workload"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a00f887eb14b9ed163d795b31c4964965 inherit pub_methods_classarmnn_1_1_i_workload"><td class="memItemLeft" align="right" valign="top">virtual arm::pipe::ProfilingGuid </td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_workload.xhtml#a00f887eb14b9ed163d795b31c4964965">GetGuid</a> () const =0</td></tr> +<tr class="separator:a00f887eb14b9ed163d795b31c4964965 inherit pub_methods_classarmnn_1_1_i_workload"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a9cc47a21a60b5e47247cde5e660e29ce inherit pub_methods_classarmnn_1_1_i_workload"><td class="memItemLeft" align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_workload.xhtml#a9cc47a21a60b5e47247cde5e660e29ce">SupportsTensorHandleReplacement</a> () const =0</td></tr> +<tr class="separator:a9cc47a21a60b5e47247cde5e660e29ce inherit pub_methods_classarmnn_1_1_i_workload"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ab81312bd5e64cbae2803de9f243bdb32 inherit pub_methods_classarmnn_1_1_i_workload"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_workload.xhtml#ab81312bd5e64cbae2803de9f243bdb32">RegisterDebugCallback</a> (const <a class="el" href="namespacearmnn.xhtml#a15f3ad9b5e4e3d46b0a6dda246a7bc28">DebugCallbackFunction</a> &)</td></tr> <tr class="separator:ab81312bd5e64cbae2803de9f243bdb32 inherit pub_methods_classarmnn_1_1_i_workload"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a2d2834d1029217934f504e3e59579081 inherit pub_methods_classarmnn_1_1_i_workload"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classarmnn_1_1_optional.xhtml">armnn::Optional</a>< <a class="el" href="structarmnn_1_1_memory_requirements.xhtml">armnn::MemoryRequirements</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_workload.xhtml#a2d2834d1029217934f504e3e59579081">GetMemoryRequirements</a> ()</td></tr> @@ -203,21 +210,29 @@ Additional Inherited Members</h2></td></tr> </div><div class="memdoc"> <p class="definition">Definition at line <a class="el" href="_cl_softmax_workload_8cpp_source.xhtml#l00028">28</a> of file <a class="el" href="_cl_softmax_workload_8cpp_source.xhtml">ClSoftmaxWorkload.cpp</a>.</p> - -<p class="reference">References <a class="el" href="_profiling_8hpp_source.xhtml#l00227">ARMNN_REPORT_PROFILING_WORKLOAD_DESC</a>, <a class="el" href="_profiling_8hpp_source.xhtml#l00220">ARMNN_SCOPED_PROFILING_EVENT</a>, <a class="el" href="_arm_compute_utils_8hpp_source.xhtml#l00264">armnn::ComputeAclAxis()</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00172">SoftmaxDescriptor::m_Axis</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00170">SoftmaxDescriptor::m_Beta</a>, <a class="el" href="_workload_8hpp_source.xhtml#l00083">BaseWorkload< SoftmaxQueueDescriptor >::m_Data</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00026">QueueDescriptor::m_Inputs</a>, <a class="el" href="include_2armnn_2backends_2_workload_info_8hpp_source.xhtml#l00018">WorkloadInfo::m_InputTensorInfos</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00027">QueueDescriptor::m_Outputs</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00066">QueueDescriptorWithParameters< LayerDescriptor >::m_Parameters</a>, <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Undefined</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l00475">QueueDescriptor::ValidateInputsOutputs()</a>.</p> -<div class="fragment"><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  : ClBaseWorkload<SoftmaxQueueDescriptor>(descriptor, <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>)</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  , m_SoftmaxLayer(memoryManager)</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="comment">// Report Profiling Details</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="_profiling_8hpp.xhtml#a786492a3881a4c760ab1eec2149f4aba">ARMNN_REPORT_PROFILING_WORKLOAD_DESC</a>(<span class="stringliteral">"ClSoftmaxWorkload_Construct"</span>,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  descriptor.m_Parameters,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  this->GetGuid());</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="classarmnn_1_1_base_workload.xhtml#afb8d2c8817c75de9d01a4c0e0d5c160b">m_Data</a>.<a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a765d2cee4ccce5b9467e0c2b6d25b84a">ValidateInputsOutputs</a>(<span class="stringliteral">"ClSoftmaxWorkload"</span>, 1, 1);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  arm_compute::ICLTensor& input = <span class="keyword">static_cast<</span>ClTensorHandle*<span class="keyword">></span>(<a class="code" href="classarmnn_1_1_base_workload.xhtml#afb8d2c8817c75de9d01a4c0e0d5c160b">m_Data</a>.<a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a4b50e46a6810018f3edecfb68b2a76b3">m_Inputs</a>[0])->GetTensor();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  arm_compute::ICLTensor& output = <span class="keyword">static_cast<</span>ClTensorHandle*<span class="keyword">></span>(<a class="code" href="classarmnn_1_1_base_workload.xhtml#afb8d2c8817c75de9d01a4c0e0d5c160b">m_Data</a>.<a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a6abd491bb99ffe88bd472c1ae5a1ed1a">m_Outputs</a>[0])->GetTensor();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">int</span> aclAxis = <a class="code" href="namespacearmnn.xhtml#a44a3b98b37a25c995aa9e4dae7d7b456">ComputeAclAxis</a>(<a class="code" href="classarmnn_1_1_base_workload.xhtml#afb8d2c8817c75de9d01a4c0e0d5c160b">m_Data</a>.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_softmax_descriptor.xhtml#a214c3636fdf0ea5bac8edb42d0e6c7f0">m_Axis</a>, <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.m_InputTensorInfos[0]);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="_profiling_8hpp.xhtml#a5ccc65e2c464ac05ce311fdae7ede03a">ARMNN_SCOPED_PROFILING_EVENT</a>(<a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Compute::Undefined</a>, <span class="stringliteral">"ClSoftmaxWorkload_configure"</span>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_SoftmaxLayer.configure(clCompileContext, &input, &output, <a class="code" href="classarmnn_1_1_base_workload.xhtml#afb8d2c8817c75de9d01a4c0e0d5c160b">m_Data</a>.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_softmax_descriptor.xhtml#a8275d51ef9a584feb95726ea0522f6e5">m_Beta</a>, aclAxis);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> }</div><div class="ttc" id="namespacearmnn_xhtml_a44a3b98b37a25c995aa9e4dae7d7b456"><div class="ttname"><a href="namespacearmnn.xhtml#a44a3b98b37a25c995aa9e4dae7d7b456">armnn::ComputeAclAxis</a></div><div class="ttdeci">int ComputeAclAxis(const int &armnnAxis, const armnn::TensorInfo &tensor)</div><div class="ttdoc">Function to convert ArmNN axis (left to right) to ACL axis (right to left) ranging from [-rank...</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.xhtml#l00264">ArmComputeUtils.hpp:264</a></div></div> -<div class="ttc" id="structarmnn_1_1_softmax_descriptor_xhtml_a214c3636fdf0ea5bac8edb42d0e6c7f0"><div class="ttname"><a href="structarmnn_1_1_softmax_descriptor.xhtml#a214c3636fdf0ea5bac8edb42d0e6c7f0">armnn::SoftmaxDescriptor::m_Axis</a></div><div class="ttdeci">int m_Axis</div><div class="ttdoc">Scalar, defaulted to the last index (-1), specifying the dimension the activation will be performed o...</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00172">Descriptors.hpp:172</a></div></div> -<div class="ttc" id="structarmnn_1_1_softmax_descriptor_xhtml_a8275d51ef9a584feb95726ea0522f6e5"><div class="ttname"><a href="structarmnn_1_1_softmax_descriptor.xhtml#a8275d51ef9a584feb95726ea0522f6e5">armnn::SoftmaxDescriptor::m_Beta</a></div><div class="ttdeci">float m_Beta</div><div class="ttdoc">Exponentiation value. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00170">Descriptors.hpp:170</a></div></div> -<div class="ttc" id="structarmnn_1_1_queue_descriptor_xhtml_a765d2cee4ccce5b9467e0c2b6d25b84a"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor.xhtml#a765d2cee4ccce5b9467e0c2b6d25b84a">armnn::QueueDescriptor::ValidateInputsOutputs</a></div><div class="ttdeci">void ValidateInputsOutputs(const std::string &descName, unsigned int numExpectedIn, unsigned int numExpectedOut) const</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8cpp_source.xhtml#l00475">WorkloadData.cpp:475</a></div></div> -<div class="ttc" id="structarmnn_1_1_queue_descriptor_with_parameters_xhtml_aad91b9bbf7aa365d304febe79a3d1333"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#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.xhtml#l00066">WorkloadData.hpp:66</a></div></div> -<div class="ttc" id="_profiling_8hpp_xhtml_a5ccc65e2c464ac05ce311fdae7ede03a"><div class="ttname"><a href="_profiling_8hpp.xhtml#a5ccc65e2c464ac05ce311fdae7ede03a">ARMNN_SCOPED_PROFILING_EVENT</a></div><div class="ttdeci">#define ARMNN_SCOPED_PROFILING_EVENT(backendId, name)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_8hpp_source.xhtml#l00220">Profiling.hpp:220</a></div></div> -<div class="ttc" id="classarmnn_1_1_base_workload_xhtml_afb8d2c8817c75de9d01a4c0e0d5c160b"><div class="ttname"><a href="classarmnn_1_1_base_workload.xhtml#afb8d2c8817c75de9d01a4c0e0d5c160b">armnn::BaseWorkload< SoftmaxQueueDescriptor >::m_Data</a></div><div class="ttdeci">SoftmaxQueueDescriptor m_Data</div><div class="ttdef"><b>Definition:</b> <a href="_workload_8hpp_source.xhtml#l00083">Workload.hpp:83</a></div></div> -<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div> -<div class="ttc" id="structarmnn_1_1_queue_descriptor_xhtml_a6abd491bb99ffe88bd472c1ae5a1ed1a"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor.xhtml#a6abd491bb99ffe88bd472c1ae5a1ed1a">armnn::QueueDescriptor::m_Outputs</a></div><div class="ttdeci">std::vector< ITensorHandle * > m_Outputs</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00027">WorkloadData.hpp:27</a></div></div> -<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div> -<div class="ttc" id="_profiling_8hpp_xhtml_a786492a3881a4c760ab1eec2149f4aba"><div class="ttname"><a href="_profiling_8hpp.xhtml#a786492a3881a4c760ab1eec2149f4aba">ARMNN_REPORT_PROFILING_WORKLOAD_DESC</a></div><div class="ttdeci">#define ARMNN_REPORT_PROFILING_WORKLOAD_DESC(name, desc, infos, guid)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_8hpp_source.xhtml#l00227">Profiling.hpp:227</a></div></div> -<div class="ttc" id="structarmnn_1_1_queue_descriptor_xhtml_a4b50e46a6810018f3edecfb68b2a76b3"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor.xhtml#a4b50e46a6810018f3edecfb68b2a76b3">armnn::QueueDescriptor::m_Inputs</a></div><div class="ttdeci">std::vector< ITensorHandle * > m_Inputs</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00026">WorkloadData.hpp:26</a></div></div> +<div class="fragment"><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  : ClBaseWorkload<SoftmaxQueueDescriptor>(descriptor, info)</div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  , m_SoftmaxLayer(memoryManager)</div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="comment">// Report Profiling Details</span></div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="_profiling_8hpp.xhtml#a786492a3881a4c760ab1eec2149f4aba">ARMNN_REPORT_PROFILING_WORKLOAD_DESC</a>(<span class="stringliteral">"ClSoftmaxWorkload_Construct"</span>,</div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  descriptor.m_Parameters,</div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  info,</div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  this->GetGuid());</div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  </div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="classarmnn_1_1_base_workload.xhtml#afb8d2c8817c75de9d01a4c0e0d5c160b">m_Data</a>.<a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a765d2cee4ccce5b9467e0c2b6d25b84a">ValidateInputsOutputs</a>(<span class="stringliteral">"ClSoftmaxWorkload"</span>, 1, 1);</div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  </div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  arm_compute::ICLTensor& input = <span class="keyword">static_cast<</span>ClTensorHandle*<span class="keyword">></span>(<a class="code" href="classarmnn_1_1_base_workload.xhtml#afb8d2c8817c75de9d01a4c0e0d5c160b">m_Data</a>.<a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a4b50e46a6810018f3edecfb68b2a76b3">m_Inputs</a>[0])->GetTensor();</div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  arm_compute::ICLTensor& output = <span class="keyword">static_cast<</span>ClTensorHandle*<span class="keyword">></span>(<a class="code" href="classarmnn_1_1_base_workload.xhtml#afb8d2c8817c75de9d01a4c0e0d5c160b">m_Data</a>.<a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a6abd491bb99ffe88bd472c1ae5a1ed1a">m_Outputs</a>[0])->GetTensor();</div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  </div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">int</span> aclAxis = <a class="code" href="namespacearmnn.xhtml#a44a3b98b37a25c995aa9e4dae7d7b456">ComputeAclAxis</a>(<a class="code" href="classarmnn_1_1_base_workload.xhtml#afb8d2c8817c75de9d01a4c0e0d5c160b">m_Data</a>.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_softmax_descriptor.xhtml#a214c3636fdf0ea5bac8edb42d0e6c7f0">m_Axis</a>, <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.m_InputTensorInfos[0]);</div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  {</div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="_profiling_8hpp.xhtml#a5ccc65e2c464ac05ce311fdae7ede03a">ARMNN_SCOPED_PROFILING_EVENT</a>(<a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Compute::Undefined</a>, <span class="stringliteral">"ClSoftmaxWorkload_configure"</span>);</div> +<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_SoftmaxLayer.configure(clCompileContext, &input, &output, <a class="code" href="classarmnn_1_1_base_workload.xhtml#afb8d2c8817c75de9d01a4c0e0d5c160b">m_Data</a>.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_softmax_descriptor.xhtml#a8275d51ef9a584feb95726ea0522f6e5">m_Beta</a>, aclAxis);</div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> }</div> </div><!-- fragment --> +<p class="reference">References <a class="el" href="_profiling_8hpp_source.xhtml#l00227">ARMNN_REPORT_PROFILING_WORKLOAD_DESC</a>, <a class="el" href="_profiling_8hpp_source.xhtml#l00220">ARMNN_SCOPED_PROFILING_EVENT</a>, <a class="el" href="_arm_compute_utils_8hpp_source.xhtml#l00264">armnn::ComputeAclAxis()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::info</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00172">SoftmaxDescriptor::m_Axis</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00170">SoftmaxDescriptor::m_Beta</a>, <a class="el" href="_workload_8hpp_source.xhtml#l00083">BaseWorkload< SoftmaxQueueDescriptor >::m_Data</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00026">QueueDescriptor::m_Inputs</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00027">QueueDescriptor::m_Outputs</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00066">QueueDescriptorWithParameters< LayerDescriptor >::m_Parameters</a>, <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Undefined</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l00475">QueueDescriptor::ValidateInputsOutputs()</a>.</p> + </div> </div> <h2 class="groupheader">Member Function Documentation</h2> @@ -247,13 +262,13 @@ Additional Inherited Members</h2></td></tr> <p>Implements <a class="el" href="classarmnn_1_1_i_workload.xhtml#a72ae00e6604850c8798c5e0d825ee7e4">IWorkload</a>.</p> <p class="definition">Definition at line <a class="el" href="_cl_softmax_workload_8cpp_source.xhtml#l00053">53</a> of file <a class="el" href="_cl_softmax_workload_8cpp_source.xhtml">ClSoftmaxWorkload.cpp</a>.</p> - -<p class="reference">References <a class="el" href="_cl_workload_utils_8hpp_source.xhtml#l00028">ARMNN_SCOPED_PROFILING_EVENT_CL_GUID</a>, <a class="el" href="_exceptions_8hpp_source.xhtml#l00203">CHECK_LOCATION</a>, <a class="el" href="_workload_8hpp_source.xhtml#l00061">BaseWorkload< SoftmaxQueueDescriptor >::GetGuid()</a>, and <a class="el" href="_cl_workload_utils_8hpp_source.xhtml#l00160">armnn::RunClFunction()</a>.</p> -<div class="fragment"><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="_cl_workload_utils_8hpp.xhtml#ae96fe8349d05e83e891129d63d8e2263">ARMNN_SCOPED_PROFILING_EVENT_CL_GUID</a>(<span class="stringliteral">"ClSoftmaxWorkload_Execute"</span>, this-><a class="code" href="classarmnn_1_1_base_workload.xhtml#aaff95a48875d8fb4a616352906660ca9">GetGuid</a>());</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="namespacearmnn.xhtml#aff5bee79757341daf750c7dd7c123a15">RunClFunction</a>(m_SoftmaxLayer, <a class="code" href="_exceptions_8hpp.xhtml#aa3be76aec4ce713822a5ea1ecbb7bc61">CHECK_LOCATION</a>());</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> }</div><div class="ttc" id="_cl_workload_utils_8hpp_xhtml_ae96fe8349d05e83e891129d63d8e2263"><div class="ttname"><a href="_cl_workload_utils_8hpp.xhtml#ae96fe8349d05e83e891129d63d8e2263">ARMNN_SCOPED_PROFILING_EVENT_CL_GUID</a></div><div class="ttdeci">#define ARMNN_SCOPED_PROFILING_EVENT_CL_GUID(name, guid)</div><div class="ttdef"><b>Definition:</b> <a href="_cl_workload_utils_8hpp_source.xhtml#l00028">ClWorkloadUtils.hpp:28</a></div></div> -<div class="ttc" id="namespacearmnn_xhtml_aff5bee79757341daf750c7dd7c123a15"><div class="ttname"><a href="namespacearmnn.xhtml#aff5bee79757341daf750c7dd7c123a15">armnn::RunClFunction</a></div><div class="ttdeci">void RunClFunction(arm_compute::IFunction &function, const CheckLocation &location)</div><div class="ttdef"><b>Definition:</b> <a href="_cl_workload_utils_8hpp_source.xhtml#l00160">ClWorkloadUtils.hpp:160</a></div></div> -<div class="ttc" id="classarmnn_1_1_base_workload_xhtml_aaff95a48875d8fb4a616352906660ca9"><div class="ttname"><a href="classarmnn_1_1_base_workload.xhtml#aaff95a48875d8fb4a616352906660ca9">armnn::BaseWorkload< SoftmaxQueueDescriptor >::GetGuid</a></div><div class="ttdeci">arm::pipe::ProfilingGuid GetGuid() const final</div><div class="ttdef"><b>Definition:</b> <a href="_workload_8hpp_source.xhtml#l00061">Workload.hpp:61</a></div></div> -<div class="ttc" id="_exceptions_8hpp_xhtml_aa3be76aec4ce713822a5ea1ecbb7bc61"><div class="ttname"><a href="_exceptions_8hpp.xhtml#aa3be76aec4ce713822a5ea1ecbb7bc61">CHECK_LOCATION</a></div><div class="ttdeci">#define CHECK_LOCATION()</div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.xhtml#l00203">Exceptions.hpp:203</a></div></div> +<div class="fragment"><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> {</div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="_cl_workload_utils_8hpp.xhtml#ae96fe8349d05e83e891129d63d8e2263">ARMNN_SCOPED_PROFILING_EVENT_CL_GUID</a>(<span class="stringliteral">"ClSoftmaxWorkload_Execute"</span>, this-><a class="code" href="classarmnn_1_1_base_workload.xhtml#aaff95a48875d8fb4a616352906660ca9">GetGuid</a>());</div> +<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="namespacearmnn.xhtml#aff5bee79757341daf750c7dd7c123a15">RunClFunction</a>(m_SoftmaxLayer, <a class="code" href="_exceptions_8hpp.xhtml#aa3be76aec4ce713822a5ea1ecbb7bc61">CHECK_LOCATION</a>());</div> +<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> }</div> </div><!-- fragment --> +<p class="reference">References <a class="el" href="_cl_workload_utils_8hpp_source.xhtml#l00028">ARMNN_SCOPED_PROFILING_EVENT_CL_GUID</a>, <a class="el" href="_exceptions_8hpp_source.xhtml#l00203">CHECK_LOCATION</a>, <a class="el" href="_workload_8hpp_source.xhtml#l00061">BaseWorkload< SoftmaxQueueDescriptor >::GetGuid()</a>, and <a class="el" href="_cl_workload_utils_8hpp_source.xhtml#l00160">armnn::RunClFunction()</a>.</p> + </div> </div> <hr/>The documentation for this class was generated from the following files:<ul> @@ -262,13 +277,29 @@ Additional Inherited Members</h2></td></tr> </ul> </div><!-- contents --> </div><!-- doc-content --> +<div class="ttc" id="aclassarmnn_1_1_base_workload_xhtml_aaff95a48875d8fb4a616352906660ca9"><div class="ttname"><a href="classarmnn_1_1_base_workload.xhtml#aaff95a48875d8fb4a616352906660ca9">armnn::BaseWorkload< SoftmaxQueueDescriptor >::GetGuid</a></div><div class="ttdeci">arm::pipe::ProfilingGuid GetGuid() const final</div><div class="ttdef"><b>Definition:</b> <a href="_workload_8hpp_source.xhtml#l00061">Workload.hpp:61</a></div></div> +<div class="ttc" id="astructarmnn_1_1_queue_descriptor_xhtml_a765d2cee4ccce5b9467e0c2b6d25b84a"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor.xhtml#a765d2cee4ccce5b9467e0c2b6d25b84a">armnn::QueueDescriptor::ValidateInputsOutputs</a></div><div class="ttdeci">void ValidateInputsOutputs(const std::string &descName, unsigned int numExpectedIn, unsigned int numExpectedOut) const</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8cpp_source.xhtml#l00475">WorkloadData.cpp:475</a></div></div> +<div class="ttc" id="a_exceptions_8hpp_xhtml_aa3be76aec4ce713822a5ea1ecbb7bc61"><div class="ttname"><a href="_exceptions_8hpp.xhtml#aa3be76aec4ce713822a5ea1ecbb7bc61">CHECK_LOCATION</a></div><div class="ttdeci">#define CHECK_LOCATION()</div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.xhtml#l00203">Exceptions.hpp:203</a></div></div> +<div class="ttc" id="anamespacearmnn_xhtml_a44a3b98b37a25c995aa9e4dae7d7b456"><div class="ttname"><a href="namespacearmnn.xhtml#a44a3b98b37a25c995aa9e4dae7d7b456">armnn::ComputeAclAxis</a></div><div class="ttdeci">int ComputeAclAxis(const int &armnnAxis, const armnn::TensorInfo &tensor)</div><div class="ttdoc">Function to convert ArmNN axis (left to right) to ACL axis (right to left) ranging from [-rank,...</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.xhtml#l00264">ArmComputeUtils.hpp:264</a></div></div> +<div class="ttc" id="aclassarmnn_1_1_base_workload_xhtml_afb8d2c8817c75de9d01a4c0e0d5c160b"><div class="ttname"><a href="classarmnn_1_1_base_workload.xhtml#afb8d2c8817c75de9d01a4c0e0d5c160b">armnn::BaseWorkload< SoftmaxQueueDescriptor >::m_Data</a></div><div class="ttdeci">SoftmaxQueueDescriptor m_Data</div><div class="ttdef"><b>Definition:</b> <a href="_workload_8hpp_source.xhtml#l00083">Workload.hpp:83</a></div></div> +<div class="ttc" id="astructarmnn_1_1_softmax_descriptor_xhtml_a214c3636fdf0ea5bac8edb42d0e6c7f0"><div class="ttname"><a href="structarmnn_1_1_softmax_descriptor.xhtml#a214c3636fdf0ea5bac8edb42d0e6c7f0">armnn::SoftmaxDescriptor::m_Axis</a></div><div class="ttdeci">int m_Axis</div><div class="ttdoc">Scalar, defaulted to the last index (-1), specifying the dimension the activation will be performed o...</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00172">Descriptors.hpp:172</a></div></div> +<div class="ttc" id="a_profiling_8hpp_xhtml_a5ccc65e2c464ac05ce311fdae7ede03a"><div class="ttname"><a href="_profiling_8hpp.xhtml#a5ccc65e2c464ac05ce311fdae7ede03a">ARMNN_SCOPED_PROFILING_EVENT</a></div><div class="ttdeci">#define ARMNN_SCOPED_PROFILING_EVENT(backendId, name)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_8hpp_source.xhtml#l00220">Profiling.hpp:220</a></div></div> +<div class="ttc" id="anamespacearmnn_xhtml_aff5bee79757341daf750c7dd7c123a15"><div class="ttname"><a href="namespacearmnn.xhtml#aff5bee79757341daf750c7dd7c123a15">armnn::RunClFunction</a></div><div class="ttdeci">void RunClFunction(arm_compute::IFunction &function, const CheckLocation &location)</div><div class="ttdef"><b>Definition:</b> <a href="_cl_workload_utils_8hpp_source.xhtml#l00160">ClWorkloadUtils.hpp:160</a></div></div> +<div class="ttc" id="astructarmnn_1_1_softmax_descriptor_xhtml_a8275d51ef9a584feb95726ea0522f6e5"><div class="ttname"><a href="structarmnn_1_1_softmax_descriptor.xhtml#a8275d51ef9a584feb95726ea0522f6e5">armnn::SoftmaxDescriptor::m_Beta</a></div><div class="ttdeci">float m_Beta</div><div class="ttdoc">Exponentiation value.</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00170">Descriptors.hpp:170</a></div></div> +<div class="ttc" id="anamespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div><div class="ttdeci">@ Undefined</div></div> +<div class="ttc" id="astructarmnn_1_1_queue_descriptor_with_parameters_xhtml_aad91b9bbf7aa365d304febe79a3d1333"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#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.xhtml#l00066">WorkloadData.hpp:66</a></div></div> +<div class="ttc" id="a_profiling_8hpp_xhtml_a786492a3881a4c760ab1eec2149f4aba"><div class="ttname"><a href="_profiling_8hpp.xhtml#a786492a3881a4c760ab1eec2149f4aba">ARMNN_REPORT_PROFILING_WORKLOAD_DESC</a></div><div class="ttdeci">#define ARMNN_REPORT_PROFILING_WORKLOAD_DESC(name, desc, infos, guid)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_8hpp_source.xhtml#l00227">Profiling.hpp:227</a></div></div> +<div class="ttc" id="astructarmnn_1_1_queue_descriptor_xhtml_a6abd491bb99ffe88bd472c1ae5a1ed1a"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor.xhtml#a6abd491bb99ffe88bd472c1ae5a1ed1a">armnn::QueueDescriptor::m_Outputs</a></div><div class="ttdeci">std::vector< ITensorHandle * > m_Outputs</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00027">WorkloadData.hpp:27</a></div></div> +<div class="ttc" id="a_cl_workload_utils_8hpp_xhtml_ae96fe8349d05e83e891129d63d8e2263"><div class="ttname"><a href="_cl_workload_utils_8hpp.xhtml#ae96fe8349d05e83e891129d63d8e2263">ARMNN_SCOPED_PROFILING_EVENT_CL_GUID</a></div><div class="ttdeci">#define ARMNN_SCOPED_PROFILING_EVENT_CL_GUID(name, guid)</div><div class="ttdef"><b>Definition:</b> <a href="_cl_workload_utils_8hpp_source.xhtml#l00028">ClWorkloadUtils.hpp:28</a></div></div> +<div class="ttc" id="astructarmnn_1_1_queue_descriptor_xhtml_a4b50e46a6810018f3edecfb68b2a76b3"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor.xhtml#a4b50e46a6810018f3edecfb68b2a76b3">armnn::QueueDescriptor::m_Inputs</a></div><div class="ttdeci">std::vector< ITensorHandle * > m_Inputs</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00026">WorkloadData.hpp:26</a></div></div> +<div class="ttc" id="anamespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div><div class="ttdeci">@ info</div></div> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> <li class="navelem"><a class="el" href="namespacearmnn.xhtml">armnn</a></li><li class="navelem"><a class="el" href="classarmnn_1_1_cl_softmax_workload.xhtml">ClSoftmaxWorkload</a></li> - <li class="footer">Generated on Fri Feb 24 2023 10:24:29 for ArmNN by + <li class="footer">Generated on Wed Mar 22 2023 15:53:05 for ArmNN by <a href="http://www.doxygen.org/index.html"> - <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li> </ul> </div> </body> |