blob: 4cba5dff374cebdd9f9219265f27ca67337d489d [file] [log] [blame]
<!-- HTML header for doxygen 1.8.15-->
<!-- Remember to use version doxygen 1.8.15 +-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.15"/>
<meta name="robots" content="NOINDEX, NOFOLLOW" /> <!-- Prevent indexing by search engines -->
<title>Compute Library: GemmTuner Namespace Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(initResizable);
/* @license-end */</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script><script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<img alt="Compute Library" src="https://raw.githubusercontent.com/ARM-software/ComputeLibrary/gh-pages/ACL_logo.png" style="max-width: 100%;margin-top: 15px;margin-left: 10px"/>
<td style="padding-left: 0.5em;">
<div id="projectname">
&#160;<span id="projectnumber">19.11</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.15 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('namespace_gemm_tuner.xhtml','');});
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">GemmTuner Namespace Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_gemm_tuner_1_1_benchmark_result.xhtml">BenchmarkResult</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_gemm_tuner_1_1_g_e_m_m_benchmark_result_recorder.xhtml">GEMMBenchmarkResultRecorder</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_gemm_tuner_1_1_g_e_m_m_config_distribution.xhtml">GEMMConfigDistribution</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_gemm_tuner_1_1_g_e_m_m_param.xhtml">GEMMParam</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_gemm_tuner_1_1_measurement.xhtml">Measurement</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_gemm_tuner_1_1_native_g_e_m_m_config.xhtml">NativeGEMMConfig</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_gemm_tuner_1_1_reshaped_g_e_m_m_config.xhtml">ReshapedGEMMConfig</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_gemm_tuner_1_1_reshaped_only_r_h_s_g_e_m_m_config.xhtml">ReshapedOnlyRHSGEMMConfig</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a38da4cefc89939b02e38ec9027a110b2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespace_gemm_tuner.xhtml#a547e317a8765ca62ed005b0bf03fec15">BenchmarkResultCSVRow</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_gemm_tuner.xhtml#a38da4cefc89939b02e38ec9027a110b2">benchmark_result_2_csv_row</a> (<a class="el" href="class_gemm_tuner_1_1_benchmark_result.xhtml">BenchmarkResult</a> result)</td></tr>
<tr class="separator:a38da4cefc89939b02e38ec9027a110b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae93eefdf5d69cd7bbd361324c613dff3"><td class="memItemLeft" align="right" valign="top">Dict[str, str]&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_gemm_tuner.xhtml#ae93eefdf5d69cd7bbd361324c613dff3">parse_benchmark_commandline</a> (str commandline)</td></tr>
<tr class="memdesc:ae93eefdf5d69cd7bbd361324c613dff3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Functions. <a href="#ae93eefdf5d69cd7bbd361324c613dff3">More...</a><br /></td></tr>
<tr class="separator:ae93eefdf5d69cd7bbd361324c613dff3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a635fc68bfeadd9692faead4d667a90a9"><td class="memItemLeft" align="right" valign="top">Generator[<a class="el" href="class_gemm_tuner_1_1_benchmark_result.xhtml">BenchmarkResult</a>, None, None]&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_gemm_tuner.xhtml#a635fc68bfeadd9692faead4d667a90a9">extract_benchmark_results</a> (Dict json_results, measurement_method=&quot;avg&quot;)</td></tr>
<tr class="separator:a635fc68bfeadd9692faead4d667a90a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9bf6647cc58e534561aa91a422229e4"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_gemm_tuner.xhtml#ab9bf6647cc58e534561aa91a422229e4">parse_json</a> (dir_name)</td></tr>
<tr class="separator:ab9bf6647cc58e534561aa91a422229e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b19960927373ea2b5afd6a4ccb654ac"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_gemm_tuner.xhtml#a2b19960927373ea2b5afd6a4ccb654ac">main</a> (<a class="el" href="namespace_gemm_tuner.xhtml#a8187411843a6284ffb964ef3fb9fcab3">args</a>)</td></tr>
<tr class="memdesc:a2b19960927373ea2b5afd6a4ccb654ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Main. <a href="#a2b19960927373ea2b5afd6a4ccb654ac">More...</a><br /></td></tr>
<tr class="separator:a2b19960927373ea2b5afd6a4ccb654ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:acf7192c608527efb8f8dedf0a3f2e706"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_gemm_tuner.xhtml#acf7192c608527efb8f8dedf0a3f2e706">Strategy</a> = Enum(&quot;Strategy&quot;, [&quot;Native&quot;, &quot;ReshapedOnlyRHS&quot;, &quot;Reshaped&quot;])</td></tr>
<tr class="memdesc:acf7192c608527efb8f8dedf0a3f2e706"><td class="mdescLeft">&#160;</td><td class="mdescRight">Types. <a href="#acf7192c608527efb8f8dedf0a3f2e706">More...</a><br /></td></tr>
<tr class="separator:acf7192c608527efb8f8dedf0a3f2e706"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a696b6940cef01d03e1fc064d8be3727b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_gemm_tuner.xhtml#a696b6940cef01d03e1fc064d8be3727b">GEMMConfigT</a> = Union[<a class="el" href="class_gemm_tuner_1_1_native_g_e_m_m_config.xhtml">NativeGEMMConfig</a>, <a class="el" href="class_gemm_tuner_1_1_reshaped_only_r_h_s_g_e_m_m_config.xhtml">ReshapedOnlyRHSGEMMConfig</a>, <a class="el" href="class_gemm_tuner_1_1_reshaped_g_e_m_m_config.xhtml">ReshapedGEMMConfig</a>]</td></tr>
<tr class="separator:a696b6940cef01d03e1fc064d8be3727b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a547e317a8765ca62ed005b0bf03fec15"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_gemm_tuner.xhtml#a547e317a8765ca62ed005b0bf03fec15">BenchmarkResultCSVRow</a></td></tr>
<tr class="separator:a547e317a8765ca62ed005b0bf03fec15"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c0f164b66e196f940f4b9e206d586d5"><td class="memItemLeft" align="right" valign="top">dictionary&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_gemm_tuner.xhtml#a3c0f164b66e196f940f4b9e206d586d5">GEMM_CONFIG_FACTORY</a></td></tr>
<tr class="separator:a3c0f164b66e196f940f4b9e206d586d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8424a0c14384f40c0a9c89289e90262"><td class="memItemLeft" align="right" valign="top">dictionary&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_gemm_tuner.xhtml#ae8424a0c14384f40c0a9c89289e90262">EXAMPLE_FILE_2_STRATEGY</a></td></tr>
<tr class="separator:ae8424a0c14384f40c0a9c89289e90262"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abfd6c8b5e818f3a2a5dac6717b853018"><td class="memItemLeft" align="right" valign="top">dictionary&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_gemm_tuner.xhtml#abfd6c8b5e818f3a2a5dac6717b853018">GEMM_EXAMPLE_ARGS_FACTORY</a></td></tr>
<tr class="separator:abfd6c8b5e818f3a2a5dac6717b853018"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f8b815490a02d3feccad7c5472ba4e2"><td class="memItemLeft" align="right" valign="top">string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_gemm_tuner.xhtml#a2f8b815490a02d3feccad7c5472ba4e2">BENCHMARK_RESULT_JSON_EXTENSION</a> = &quot;gemmtuner_benchmark&quot;</td></tr>
<tr class="separator:a2f8b815490a02d3feccad7c5472ba4e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a90eee7a4677ca8b1ed116364a24367f9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_gemm_tuner.xhtml#a90eee7a4677ca8b1ed116364a24367f9">parser</a> = argparse.ArgumentParser(description=&quot;CL GEMM Tuner&quot;)</td></tr>
<tr class="separator:a90eee7a4677ca8b1ed116364a24367f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0bede79c5f4cbed9c2cd932a0ace201"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_gemm_tuner.xhtml#ab0bede79c5f4cbed9c2cd932a0ace201">dest</a></td></tr>
<tr class="separator:ab0bede79c5f4cbed9c2cd932a0ace201"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d8a64ff78fc562acbd80da81ed531b2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_gemm_tuner.xhtml#a6d8a64ff78fc562acbd80da81ed531b2">metavar</a></td></tr>
<tr class="separator:a6d8a64ff78fc562acbd80da81ed531b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f4ab7bf743142dae2e459aa18f9f1d4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_gemm_tuner.xhtml#a2f4ab7bf743142dae2e459aa18f9f1d4">action</a></td></tr>
<tr class="separator:a2f4ab7bf743142dae2e459aa18f9f1d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7aead736a07eaf25623ad7bfa1f0ee2d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_gemm_tuner.xhtml#a7aead736a07eaf25623ad7bfa1f0ee2d">type</a></td></tr>
<tr class="separator:a7aead736a07eaf25623ad7bfa1f0ee2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a81ae9faedaa69e3e28e2960a0548df8d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_gemm_tuner.xhtml#a81ae9faedaa69e3e28e2960a0548df8d">help</a></td></tr>
<tr class="separator:a81ae9faedaa69e3e28e2960a0548df8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae81948490ddf54e80a22593640178350"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_gemm_tuner.xhtml#ae81948490ddf54e80a22593640178350">required</a></td></tr>
<tr class="separator:ae81948490ddf54e80a22593640178350"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:affb1327b18bf08a379d19eef89cf1ed1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_gemm_tuner.xhtml#affb1327b18bf08a379d19eef89cf1ed1">default</a></td></tr>
<tr class="separator:affb1327b18bf08a379d19eef89cf1ed1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8187411843a6284ffb964ef3fb9fcab3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_gemm_tuner.xhtml#a8187411843a6284ffb964ef3fb9fcab3">args</a> = parser.parse_args()</td></tr>
<tr class="separator:a8187411843a6284ffb964ef3fb9fcab3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a05b240734aa0ab5756d163cc6b03d6e1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_gemm_tuner.xhtml#a05b240734aa0ab5756d163cc6b03d6e1">logging_level</a> = logging.DEBUG if args.debug else logging.INFO</td></tr>
<tr class="separator:a05b240734aa0ab5756d163cc6b03d6e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afde8e18a788ccc92fc61cab298bca7e3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_gemm_tuner.xhtml#afde8e18a788ccc92fc61cab298bca7e3">level</a></td></tr>
<tr class="separator:afde8e18a788ccc92fc61cab298bca7e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a id="a38da4cefc89939b02e38ec9027a110b2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a38da4cefc89939b02e38ec9027a110b2">&#9670;&nbsp;</a></span>benchmark_result_2_csv_row()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"> <a class="el" href="namespace_gemm_tuner.xhtml#a547e317a8765ca62ed005b0bf03fec15">BenchmarkResultCSVRow</a> GemmTuner.benchmark_result_2_csv_row </td>
<td>(</td>
<td class="paramtype"><a class="el" href="class_gemm_tuner_1_1_benchmark_result.xhtml">BenchmarkResult</a>&#160;</td>
<td class="paramname"><em>result</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Convert a BenchmarkResult into its CSV row form </pre>
<p class="definition">Definition at line <a class="el" href="_gemm_tuner_8py_source.xhtml#l00168">168</a> of file <a class="el" href="_gemm_tuner_8py_source.xhtml">GemmTuner.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="keyword">def </span><a class="code" href="namespace_gemm_tuner.xhtml#a38da4cefc89939b02e38ec9027a110b2">benchmark_result_2_csv_row</a>(result: BenchmarkResult) -&gt; BenchmarkResultCSVRow:</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="stringliteral">&quot;&quot;&quot; Convert a BenchmarkResult into its CSV row form &quot;&quot;&quot;</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespace_gemm_tuner.xhtml#a547e317a8765ca62ed005b0bf03fec15">BenchmarkResultCSVRow</a>(</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; *(result.gemm_param + (result.strategy.name, str(result.gemm_config)) + result.measurement)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; )</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;</div><div class="ttc" id="namespace_gemm_tuner_xhtml_a38da4cefc89939b02e38ec9027a110b2"><div class="ttname"><a href="namespace_gemm_tuner.xhtml#a38da4cefc89939b02e38ec9027a110b2">GemmTuner.benchmark_result_2_csv_row</a></div><div class="ttdeci">BenchmarkResultCSVRow benchmark_result_2_csv_row(BenchmarkResult result)</div><div class="ttdef"><b>Definition:</b> <a href="_gemm_tuner_8py_source.xhtml#l00168">GemmTuner.py:168</a></div></div>
<div class="ttc" id="namespace_gemm_tuner_xhtml_a547e317a8765ca62ed005b0bf03fec15"><div class="ttname"><a href="namespace_gemm_tuner.xhtml#a547e317a8765ca62ed005b0bf03fec15">GemmTuner.BenchmarkResultCSVRow</a></div><div class="ttdeci">BenchmarkResultCSVRow</div><div class="ttdef"><b>Definition:</b> <a href="_gemm_tuner_8py_source.xhtml#l00163">GemmTuner.py:163</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_gemm_tuner_8py_source.xhtml#l00163">BenchmarkResultCSVRow</a>.</p>
<p class="reference">Referenced by <a class="el" href="_gemm_tuner_8py_source.xhtml#l00247">GEMMBenchmarkResultRecorder.save_to_csvs()</a>.</p>
</div>
</div>
<a id="a635fc68bfeadd9692faead4d667a90a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a635fc68bfeadd9692faead4d667a90a9">&#9670;&nbsp;</a></span>extract_benchmark_results()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"> Generator[<a class="el" href="class_gemm_tuner_1_1_benchmark_result.xhtml">BenchmarkResult</a>, None, None] GemmTuner.extract_benchmark_results </td>
<td>(</td>
<td class="paramtype">Dict&#160;</td>
<td class="paramname"><em>json_results</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>measurement_method</em> = <code>&quot;avg&quot;</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Parse the benchmark result and extract relevant information, namely:
GEMM param,
Strategy,
GEMM config,
Measurements
</pre>
<p class="definition">Definition at line <a class="el" href="_gemm_tuner_8py_source.xhtml#l00417">417</a> of file <a class="el" href="_gemm_tuner_8py_source.xhtml">GemmTuner.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;<span class="keyword">def </span><a class="code" href="namespace_gemm_tuner.xhtml#a635fc68bfeadd9692faead4d667a90a9">extract_benchmark_results</a>(</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; json_results: Dict, measurement_method=<span class="stringliteral">&quot;avg&quot;</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;) -&gt; Generator[BenchmarkResult, <span class="keywordtype">None</span>, <span class="keywordtype">None</span>]:</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="stringliteral">&quot;&quot;&quot; Parse the benchmark result and extract relevant information, namely:</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;<span class="stringliteral"> GEMM param,</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;<span class="stringliteral"> Strategy,</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;<span class="stringliteral"> GEMM config,</span></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;<span class="stringliteral"> Measurements</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">for</span> json_res <span class="keywordflow">in</span> json_results:</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="comment"># Get example test and test data.</span></div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="comment"># There should only be 1 test per run</span></div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; example_tests = list(json_res[<span class="stringliteral">&quot;tests&quot;</span>].items())</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keyword">assert</span> len(example_tests) == 1</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; example_fn, example_test_data = example_tests[0]</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="comment"># Process example file name</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; example_fn = example_fn.split(os.path.sep)[-1]</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="comment"># Get strategy</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; strategy = EXAMPLE_FILE_2_STRATEGY[example_fn]</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="comment"># Get gemm params + gemm configs from example args</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; benchmark_args = <a class="code" href="namespace_gemm_tuner.xhtml#ae93eefdf5d69cd7bbd361324c613dff3">parse_benchmark_commandline</a>(json_res[<span class="stringliteral">&quot;CommandLine&quot;</span>])</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; Gemm_Example_Args_T = GEMM_EXAMPLE_ARGS_FACTORY[strategy]</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; example_args = Gemm_Example_Args_T(*(benchmark_args[<span class="stringliteral">&quot;example_args&quot;</span>].split(<span class="stringliteral">&quot;,&quot;</span>)))</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="comment"># Gemm_Example_Arg consists of GEMMParam first and then GEMMConfig (in that order)</span></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; gemm_param_fields_len = len(GEMMParam._fields)</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; gemm_param = GEMMParam.parse_from_strs(*example_args[:gemm_param_fields_len])</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; GEMMConfig = GEMM_CONFIG_FACTORY[strategy]</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; gemm_config = GEMMConfig.parse_from_strs(*example_args[gemm_param_fields_len:])</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="comment"># Get OpenCL_Time_Ms stats</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; measurements = list(example_test_data[<span class="stringliteral">&quot;measurements&quot;</span>].items())</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="comment"># There should only be 1 instrument per run</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keyword">assert</span> len(measurements) == 1</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; measurement_instrument, data = measurements.pop()</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="comment"># Get instrument name and assert that it is the one we expect</span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; measurement_instrument_name = measurement_instrument.split(<span class="stringliteral">&quot;/&quot;</span>)[0]</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keyword">assert</span> measurement_instrument_name == <span class="stringliteral">&quot;OpenCLTimer&quot;</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="comment"># Take either the minimum or the average of the raw data as the measurement value</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">if</span> measurement_method == <span class="stringliteral">&quot;min&quot;</span>:</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; measurement_val = min(data[<span class="stringliteral">&quot;raw&quot;</span>])</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">elif</span> measurement_method == <span class="stringliteral">&quot;avg&quot;</span>:</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; measurement_val = <a class="code" href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a>(data[<span class="stringliteral">&quot;raw&quot;</span>]) / len(data[<span class="stringliteral">&quot;raw&quot;</span>])</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">else</span>:</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">raise</span> ValueError(<span class="stringliteral">&quot;Invalid measurement method: {}&quot;</span>.format(measurement_method))</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; measurement = Measurement(measurement_val)</div><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="keywordflow">yield</span> BenchmarkResult(gemm_param, strategy, gemm_config, measurement)</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;</div><div class="ttc" id="reduction__operation_8cl_xhtml_ab0df00f5333da51860deb93deb44a782"><div class="ttname"><a href="reduction__operation_8cl.xhtml#ab0df00f5333da51860deb93deb44a782">sum</a></div><div class="ttdeci">DATA_TYPE sum(__global const DATA_TYPE *input)</div><div class="ttdoc">Calculate sum of a vector.</div><div class="ttdef"><b>Definition:</b> <a href="reduction__operation_8cl_source.xhtml#l00065">reduction_operation.cl:65</a></div></div>
<div class="ttc" id="namespace_gemm_tuner_xhtml_ae93eefdf5d69cd7bbd361324c613dff3"><div class="ttname"><a href="namespace_gemm_tuner.xhtml#ae93eefdf5d69cd7bbd361324c613dff3">GemmTuner.parse_benchmark_commandline</a></div><div class="ttdeci">Dict[str, str] parse_benchmark_commandline(str commandline)</div><div class="ttdoc">Functions.</div><div class="ttdef"><b>Definition:</b> <a href="_gemm_tuner_8py_source.xhtml#l00400">GemmTuner.py:400</a></div></div>
<div class="ttc" id="namespace_gemm_tuner_xhtml_a635fc68bfeadd9692faead4d667a90a9"><div class="ttname"><a href="namespace_gemm_tuner.xhtml#a635fc68bfeadd9692faead4d667a90a9">GemmTuner.extract_benchmark_results</a></div><div class="ttdeci">Generator[BenchmarkResult, None, None] extract_benchmark_results(Dict json_results, measurement_method=&quot;avg&quot;)</div><div class="ttdef"><b>Definition:</b> <a href="_gemm_tuner_8py_source.xhtml#l00417">GemmTuner.py:417</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_gemm_tuner_8py_source.xhtml#l00400">parse_benchmark_commandline()</a>, and <a class="el" href="reduction__operation_8cl_source.xhtml#l00065">sum()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_gemm_tuner_8py_source.xhtml#l00483">main()</a>.</p>
</div>
</div>
<a id="a2b19960927373ea2b5afd6a4ccb654ac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2b19960927373ea2b5afd6a4ccb654ac">&#9670;&nbsp;</a></span>main()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def GemmTuner.main </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>args</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Main. </p>
<p class="definition">Definition at line <a class="el" href="_gemm_tuner_8py_source.xhtml#l00483">483</a> of file <a class="el" href="_gemm_tuner_8py_source.xhtml">GemmTuner.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;<span class="keyword">def </span><a class="code" href="namespace_gemm_tuner.xhtml#a2b19960927373ea2b5afd6a4ccb654ac">main</a>(args):</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; logging.info(<span class="stringliteral">&quot;Searching best gemm configurations from {}&quot;</span>.format(args.benchmark_results_dir))</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; benchmark_results = <a class="code" href="namespace_gemm_tuner.xhtml#a635fc68bfeadd9692faead4d667a90a9">extract_benchmark_results</a>(<a class="code" href="namespace_gemm_tuner.xhtml#ab9bf6647cc58e534561aa91a422229e4">parse_json</a>(args.benchmark_results_dir))</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="comment"># Add all benchmark results to the recorder</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; benchmark_result_recorder = GEMMBenchmarkResultRecorder(tol=args.tolerance)</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordflow">for</span> benchmark_result <span class="keywordflow">in</span> benchmark_results:</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; benchmark_result_recorder.add(benchmark_result)</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">if</span> args.debug:</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; recorder_sum_level = GEMMBenchmarkResultRecorder.SummaryLevel.Detailed</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">else</span>:</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; recorder_sum_level = GEMMBenchmarkResultRecorder.SummaryLevel.Short</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="comment"># Print overall summary of the recorded results</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; logging.info(benchmark_result_recorder.summary(sum_level=recorder_sum_level))</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="comment"># Get GEMM configuration distributions for each strategy</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; all_config_dists = benchmark_result_recorder.get_config_distributions()</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; logging.info(<span class="stringliteral">&quot;=== Result ===&quot;</span>)</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">for</span> strategy, config_dist <span class="keywordflow">in</span> all_config_dists.items():</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; logging.info(<span class="stringliteral">&quot;Strategy: {}&quot;</span>.format(strategy.name))</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; logging.debug(<span class="stringliteral">&quot;GEMM Config, Votes&quot;</span>)</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keywordflow">for</span> config, freq <span class="keywordflow">in</span> config_dist.frequency():</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; logging.debug(<span class="stringliteral">&quot;{}, {}&quot;</span>.format(config, freq))</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; logging.info(</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="stringliteral">&quot;Best GEMM Config: {} with std: {}&quot;</span>.format(config_dist.best_config(), config_dist.std())</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;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="comment"># Save the recorded results to csv files in output directory</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">if</span> args.output_dir <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; benchmark_result_recorder.save_to_csvs(args.output_dir, only_best_config=(<span class="keywordflow">not</span> args.debug))</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;</div><div class="ttc" id="namespace_gemm_tuner_xhtml_ab9bf6647cc58e534561aa91a422229e4"><div class="ttname"><a href="namespace_gemm_tuner.xhtml#ab9bf6647cc58e534561aa91a422229e4">GemmTuner.parse_json</a></div><div class="ttdeci">def parse_json(dir_name)</div><div class="ttdef"><b>Definition:</b> <a href="_gemm_tuner_8py_source.xhtml#l00470">GemmTuner.py:470</a></div></div>
<div class="ttc" id="namespace_gemm_tuner_xhtml_a635fc68bfeadd9692faead4d667a90a9"><div class="ttname"><a href="namespace_gemm_tuner.xhtml#a635fc68bfeadd9692faead4d667a90a9">GemmTuner.extract_benchmark_results</a></div><div class="ttdeci">Generator[BenchmarkResult, None, None] extract_benchmark_results(Dict json_results, measurement_method=&quot;avg&quot;)</div><div class="ttdef"><b>Definition:</b> <a href="_gemm_tuner_8py_source.xhtml#l00417">GemmTuner.py:417</a></div></div>
<div class="ttc" id="namespace_gemm_tuner_xhtml_a2b19960927373ea2b5afd6a4ccb654ac"><div class="ttname"><a href="namespace_gemm_tuner.xhtml#a2b19960927373ea2b5afd6a4ccb654ac">GemmTuner.main</a></div><div class="ttdeci">def main(args)</div><div class="ttdoc">Main.</div><div class="ttdef"><b>Definition:</b> <a href="_gemm_tuner_8py_source.xhtml#l00483">GemmTuner.py:483</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_gemm_tuner_8py_source.xhtml#l00417">extract_benchmark_results()</a>, and <a class="el" href="_gemm_tuner_8py_source.xhtml#l00470">parse_json()</a>.</p>
</div>
</div>
<a id="ae93eefdf5d69cd7bbd361324c613dff3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae93eefdf5d69cd7bbd361324c613dff3">&#9670;&nbsp;</a></span>parse_benchmark_commandline()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"> Dict[str, str] GemmTuner.parse_benchmark_commandline </td>
<td>(</td>
<td class="paramtype">str&#160;</td>
<td class="paramname"><em>commandline</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Functions. </p>
<pre class="fragment">Parse the benchmark example command-line string into a dictionary of command-line agruments
</pre>
<p class="definition">Definition at line <a class="el" href="_gemm_tuner_8py_source.xhtml#l00400">400</a> of file <a class="el" href="_gemm_tuner_8py_source.xhtml">GemmTuner.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;<span class="keyword">def </span><a class="code" href="namespace_gemm_tuner.xhtml#ae93eefdf5d69cd7bbd361324c613dff3">parse_benchmark_commandline</a>(commandline: str) -&gt; Dict[str, str]:</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="stringliteral">&quot;&quot;&quot; Parse the benchmark example command-line string into a dictionary of command-line agruments</span></div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; args = commandline.split()</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="comment"># Discard program name</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; args = args[1:]</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="comment"># Split into a list of (argument name, argument value)</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; args = <a class="code" href="namespacearm__compute_1_1utils.xhtml#a9c3303817ba653b5d1e78efb88d02bcf">map</a>(<span class="keyword">lambda</span> arg: arg.split(<span class="stringliteral">&quot;=&quot;</span>), args)</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="keyword">def </span>transform(_name):</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="comment"># Strip &#39;-&#39;/&quot;--&quot; if it exists</span></div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; _name = _name.lstrip(<span class="stringliteral">&quot;-&quot;</span>)</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">return</span> _name</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="keywordflow">return</span> {transform(name): val <span class="keywordflow">for</span> name, val <span class="keywordflow">in</span> args}</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;</div><div class="ttc" id="namespace_gemm_tuner_xhtml_ae93eefdf5d69cd7bbd361324c613dff3"><div class="ttname"><a href="namespace_gemm_tuner.xhtml#ae93eefdf5d69cd7bbd361324c613dff3">GemmTuner.parse_benchmark_commandline</a></div><div class="ttdeci">Dict[str, str] parse_benchmark_commandline(str commandline)</div><div class="ttdoc">Functions.</div><div class="ttdef"><b>Definition:</b> <a href="_gemm_tuner_8py_source.xhtml#l00400">GemmTuner.py:400</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1utils_xhtml_a9c3303817ba653b5d1e78efb88d02bcf"><div class="ttname"><a href="namespacearm__compute_1_1utils.xhtml#a9c3303817ba653b5d1e78efb88d02bcf">arm_compute::utils::map</a></div><div class="ttdeci">void map(T &amp;tensor, bool blocking)</div><div class="ttdoc">Maps a tensor if needed.</div><div class="ttdef"><b>Definition:</b> <a href="utils_2_utils_8h_source.xhtml#l00212">Utils.h:212</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="utils_2_utils_8h_source.xhtml#l00212">arm_compute::utils.map()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_gemm_tuner_8py_source.xhtml#l00417">extract_benchmark_results()</a>.</p>
</div>
</div>
<a id="ab9bf6647cc58e534561aa91a422229e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab9bf6647cc58e534561aa91a422229e4">&#9670;&nbsp;</a></span>parse_json()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def GemmTuner.parse_json </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>dir_name</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Glob all benchmark result json files and parse them into json objects (dicts).
</pre>
<p class="definition">Definition at line <a class="el" href="_gemm_tuner_8py_source.xhtml#l00470">470</a> of file <a class="el" href="_gemm_tuner_8py_source.xhtml">GemmTuner.py</a>.</p>
<div class="fragment"><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;<span class="keyword">def </span><a class="code" href="namespace_gemm_tuner.xhtml#ab9bf6647cc58e534561aa91a422229e4">parse_json</a>(dir_name):</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="stringliteral">&quot;&quot;&quot; Glob all benchmark result json files and parse them into json objects (dicts).</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;<span class="stringliteral"> &quot;&quot;&quot;</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">for</span> res_fn <span class="keywordflow">in</span> Path(dir_name).rglob(<span class="stringliteral">&quot;*.{}&quot;</span>.format(BENCHMARK_RESULT_JSON_EXTENSION)):</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keyword">with</span> open(res_fn) <span class="keyword">as</span> res_fp:</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">yield</span> json.load(res_fp)</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;</div><div class="ttc" id="namespace_gemm_tuner_xhtml_ab9bf6647cc58e534561aa91a422229e4"><div class="ttname"><a href="namespace_gemm_tuner.xhtml#ab9bf6647cc58e534561aa91a422229e4">GemmTuner.parse_json</a></div><div class="ttdeci">def parse_json(dir_name)</div><div class="ttdef"><b>Definition:</b> <a href="_gemm_tuner_8py_source.xhtml#l00470">GemmTuner.py:470</a></div></div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="_gemm_tuner_8py_source.xhtml#l00483">main()</a>.</p>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="a2f4ab7bf743142dae2e459aa18f9f1d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2f4ab7bf743142dae2e459aa18f9f1d4">&#9670;&nbsp;</a></span>action</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">action</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_gemm_tuner_8py_source.xhtml#l00526">526</a> of file <a class="el" href="_gemm_tuner_8py_source.xhtml">GemmTuner.py</a>.</p>
</div>
</div>
<a id="a8187411843a6284ffb964ef3fb9fcab3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8187411843a6284ffb964ef3fb9fcab3">&#9670;&nbsp;</a></span>args</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">args = parser.parse_args()</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_gemm_tuner_8py_source.xhtml#l00555">555</a> of file <a class="el" href="_gemm_tuner_8py_source.xhtml">GemmTuner.py</a>.</p>
<p class="reference">Referenced by <a class="el" href="graph_2_graph_8h_source.xhtml#l00235">Graph.add_node()</a>, <a class="el" href="_command_line_parser_8h_source.xhtml#l00103">CommandLineParser.add_option()</a>, <a class="el" href="_command_line_parser_8h_source.xhtml#l00110">CommandLineParser.add_positional_option()</a>, <a class="el" href="tests_2framework_2_utils_8h_source.xhtml#l00079">arm_compute::test.apply()</a>, <a class="el" href="tests_2framework_2_utils_8h_source.xhtml#l00072">arm_compute::test::framework.apply_impl()</a>, <a class="el" href="_c_l_2_helper_8h_source.xhtml#l00050">CLSynthetizeFunction&lt; CLGEMMMatrixMultiplyReshapedOnlyRHSKernel &gt;.configure()</a>, <a class="el" href="_n_e_o_n_2_helper_8h_source.xhtml#l00063">NESynthetizeFunction&lt; K &gt;.configure()</a>, <a class="el" href="_n_e_o_n_2_helper_8h_source.xhtml#l00082">NESynthetizeFunctionWithZeroConstantBorder&lt; K, bordersize &gt;.configure()</a>, <a class="el" href="_c_l_2_helper_8h_source.xhtml#l00091">CLSynthetizeFunctionWithZeroConstantBorder&lt; K, bordersize &gt;.configure()</a>, <a class="el" href="_n_e_o_n_2_helper_8h_source.xhtml#l00102">NESynthetizeFunctionWithZeroConstantKernelBorder&lt; K &gt;.configure()</a>, <a class="el" href="_c_l_2_helper_8h_source.xhtml#l00112">CLSynthetizeFunctionInitOutputWithZeroAndWithZeroConstantBorder&lt; K, bordersize &gt;.configure()</a>, <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00074">arm_compute.create_configure_kernel()</a>, <a class="el" href="arm__compute_2graph_2backends_2_utils_8h_source.xhtml#l00045">arm_compute::graph::backends.create_named_function()</a>, <a class="el" href="arm__compute_2graph_2backends_2_utils_8h_source.xhtml#l00061">arm_compute::graph::backends.create_named_memory_managed_function()</a>, <a class="el" href="gemm__implementation_8hpp_source.xhtml#l00059">GemmImplementation&lt; Top, Tret, OutputStage &gt;.do_instantiate()</a>, <a class="el" href="gemm__implementation_8hpp_source.xhtml#l00091">GemmImplementation&lt; Top, Tret, Nothing &gt;.do_instantiate()</a>, <a class="el" href="gemm__implementation_8hpp_source.xhtml#l00051">GemmImplementation&lt; Top, Tret, OutputStage &gt;.do_is_recommended()</a>, <a class="el" href="gemm__implementation_8hpp_source.xhtml#l00083">GemmImplementation&lt; Top, Tret, Nothing &gt;.do_is_recommended()</a>, <a class="el" href="gemm__implementation_8hpp_source.xhtml#l00043">GemmImplementation&lt; Top, Tret, OutputStage &gt;.do_is_supported()</a>, <a class="el" href="gemm__implementation_8hpp_source.xhtml#l00075">GemmImplementation&lt; Top, Tret, Nothing &gt;.do_is_supported()</a>, <a class="el" href="gemm__implementation_8hpp_source.xhtml#l00119">arm_gemm.find_implementation()</a>, <a class="el" href="_utility_8h_source.xhtml#l00119">arm_compute::utility.for_each()</a>, <a class="el" href="_validate_8h_source.xhtml#l00114">arm_compute::detail.for_each_error()</a>, <a class="el" href="gemm__implementation_8hpp_source.xhtml#l00193">arm_gemm.gemm()</a>, <a class="el" href="gemm__interleaved_8hpp_source.xhtml#l00324">GemmInterleaved&lt; strategy, To, Tr &gt;.GemmInterleaved()</a>, <a class="el" href="gemv__batched_8hpp_source.xhtml#l00039">GemvBatched&lt; To, Tr &gt;.GemvBatched()</a>, <a class="el" href="gemv__pretransposed_8hpp_source.xhtml#l00071">GemvPretransposed&lt; strategy, To, Tr &gt;.GemvPretransposed()</a>, <a class="el" href="gemm__implementation_8hpp_source.xhtml#l00171">arm_gemm.get_compatible_kernels()</a>, <a class="el" href="gemm__implementation_8hpp_source.xhtml#l00204">arm_gemm.get_gemm_method()</a>, <a class="el" href="core_2utils_2logging_2_logger_8h_source.xhtml#l00162">Logger.log()</a>, <a class="el" href="_toolchain_support_8h_source.xhtml#l00480">arm_compute::support::cpp14.make_unique()</a>, <a class="el" href="utils_2_type_printer_8h_source.xhtml#l02214">arm_compute.operator&lt;&lt;()</a>, <a class="el" href="quantize__wrapper_8hpp_source.xhtml#l00128">QuantizeWrapper&lt; To, Tr, Tgemm &gt;.QuantizeWrapper()</a>, <a class="el" href="_toolchain_support_8h_source.xhtml#l00387">arm_compute::support::cpp11.snprintf()</a>, <a class="el" href="_toolchain_support_8h_source.xhtml#l00302">arm_compute::support::cpp11.stof()</a>, <a class="el" href="arm__compute_2core_2utils_2logging_2_helpers_8h_source.xhtml#l00048">arm_compute::logging.string_with_format()</a>, <a class="el" href="utils_2_type_printer_8h_source.xhtml#l02264">arm_compute.to_string()</a>, and <a class="el" href="_c_l_2_helper_8h_source.xhtml#l00074">CLSynthetizeFunction&lt; CLGEMMMatrixMultiplyReshapedOnlyRHSKernel &gt;.validate()</a>.</p>
</div>
</div>
<a id="a2f8b815490a02d3feccad7c5472ba4e2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2f8b815490a02d3feccad7c5472ba4e2">&#9670;&nbsp;</a></span>BENCHMARK_RESULT_JSON_EXTENSION</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">string BENCHMARK_RESULT_JSON_EXTENSION = &quot;gemmtuner_benchmark&quot;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_gemm_tuner_8py_source.xhtml#l00393">393</a> of file <a class="el" href="_gemm_tuner_8py_source.xhtml">GemmTuner.py</a>.</p>
</div>
</div>
<a id="a547e317a8765ca62ed005b0bf03fec15"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a547e317a8765ca62ed005b0bf03fec15">&#9670;&nbsp;</a></span>BenchmarkResultCSVRow</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">BenchmarkResultCSVRow</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;= namedtuple(</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160; <span class="stringliteral">&quot;BenchmarkResultCSVRow&quot;</span>, GEMMParam._fields + (<span class="stringliteral">&quot;Strategy&quot;</span>, <span class="stringliteral">&quot;GEMMConfig&quot;</span>) + Measurement._fields</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;)</div></div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="_gemm_tuner_8py_source.xhtml#l00163">163</a> of file <a class="el" href="_gemm_tuner_8py_source.xhtml">GemmTuner.py</a>.</p>
<p class="reference">Referenced by <a class="el" href="_gemm_tuner_8py_source.xhtml#l00168">benchmark_result_2_csv_row()</a>.</p>
</div>
</div>
<a id="affb1327b18bf08a379d19eef89cf1ed1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#affb1327b18bf08a379d19eef89cf1ed1">&#9670;&nbsp;</a></span>default</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">default</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_gemm_tuner_8py_source.xhtml#l00548">548</a> of file <a class="el" href="_gemm_tuner_8py_source.xhtml">GemmTuner.py</a>.</p>
</div>
</div>
<a id="ab0bede79c5f4cbed9c2cd932a0ace201"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab0bede79c5f4cbed9c2cd932a0ace201">&#9670;&nbsp;</a></span>dest</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">dest</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_gemm_tuner_8py_source.xhtml#l00524">524</a> of file <a class="el" href="_gemm_tuner_8py_source.xhtml">GemmTuner.py</a>.</p>
</div>
</div>
<a id="ae8424a0c14384f40c0a9c89289e90262"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae8424a0c14384f40c0a9c89289e90262">&#9670;&nbsp;</a></span>EXAMPLE_FILE_2_STRATEGY</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">dictionary EXAMPLE_FILE_2_STRATEGY</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;= {</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160; <span class="stringliteral">&quot;benchmark_cl_gemm_native&quot;</span>: Strategy.Native,</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160; <span class="stringliteral">&quot;benchmark_cl_gemm_reshaped_rhs_only&quot;</span>: Strategy.ReshapedOnlyRHS,</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160; <span class="stringliteral">&quot;benchmark_cl_gemm_reshaped&quot;</span>: Strategy.Reshaped,</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;}</div></div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="_gemm_tuner_8py_source.xhtml#l00367">367</a> of file <a class="el" href="_gemm_tuner_8py_source.xhtml">GemmTuner.py</a>.</p>
</div>
</div>
<a id="a3c0f164b66e196f940f4b9e206d586d5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3c0f164b66e196f940f4b9e206d586d5">&#9670;&nbsp;</a></span>GEMM_CONFIG_FACTORY</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">dictionary GEMM_CONFIG_FACTORY</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;= {</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160; Strategy.Native: NativeGEMMConfig,</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160; Strategy.ReshapedOnlyRHS: ReshapedOnlyRHSGEMMConfig,</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160; Strategy.Reshaped: ReshapedGEMMConfig,</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;}</div></div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="_gemm_tuner_8py_source.xhtml#l00359">359</a> of file <a class="el" href="_gemm_tuner_8py_source.xhtml">GemmTuner.py</a>.</p>
</div>
</div>
<a id="abfd6c8b5e818f3a2a5dac6717b853018"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abfd6c8b5e818f3a2a5dac6717b853018">&#9670;&nbsp;</a></span>GEMM_EXAMPLE_ARGS_FACTORY</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">dictionary GEMM_EXAMPLE_ARGS_FACTORY</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;= {</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160; strategy: namedtuple(</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160; <span class="stringliteral">&quot;{}_Gemm_Example_Args&quot;</span>.format(strategy_name),</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160; GEMMParam._fields + GEMM_CONFIG_FACTORY[strategy]._fields,</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160; )</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160; <span class="keywordflow">for</span> strategy_name, strategy <span class="keywordflow">in</span> Strategy.__members__.items()</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160; <span class="keywordflow">if</span> strategy_name == strategy.name</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;}</div></div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="_gemm_tuner_8py_source.xhtml#l00383">383</a> of file <a class="el" href="_gemm_tuner_8py_source.xhtml">GemmTuner.py</a>.</p>
</div>
</div>
<a id="a696b6940cef01d03e1fc064d8be3727b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a696b6940cef01d03e1fc064d8be3727b">&#9670;&nbsp;</a></span>GEMMConfigT</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">GEMMConfigT = Union[<a class="el" href="class_gemm_tuner_1_1_native_g_e_m_m_config.xhtml">NativeGEMMConfig</a>, <a class="el" href="class_gemm_tuner_1_1_reshaped_only_r_h_s_g_e_m_m_config.xhtml">ReshapedOnlyRHSGEMMConfig</a>, <a class="el" href="class_gemm_tuner_1_1_reshaped_g_e_m_m_config.xhtml">ReshapedGEMMConfig</a>]</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_gemm_tuner_8py_source.xhtml#l00146">146</a> of file <a class="el" href="_gemm_tuner_8py_source.xhtml">GemmTuner.py</a>.</p>
</div>
</div>
<a id="a81ae9faedaa69e3e28e2960a0548df8d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a81ae9faedaa69e3e28e2960a0548df8d">&#9670;&nbsp;</a></span>help</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">help</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_gemm_tuner_8py_source.xhtml#l00528">528</a> of file <a class="el" href="_gemm_tuner_8py_source.xhtml">GemmTuner.py</a>.</p>
<p class="reference">Referenced by <a class="el" href="_option_8h_source.xhtml#l00125">Option.set_help()</a>.</p>
</div>
</div>
<a id="afde8e18a788ccc92fc61cab298bca7e3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afde8e18a788ccc92fc61cab298bca7e3">&#9670;&nbsp;</a></span>level</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">level</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_gemm_tuner_8py_source.xhtml#l00557">557</a> of file <a class="el" href="_gemm_tuner_8py_source.xhtml">GemmTuner.py</a>.</p>
<p class="reference">Referenced by <a class="el" href="_c_l_l_k_tracker_kernel_8cpp_source.xhtml#l00041">CLLKTrackerInitKernel.configure()</a>, <a class="el" href="_c_l_l_k_tracker_kernel_8cpp_source.xhtml#l00123">CLLKTrackerStage0Kernel.configure()</a>, <a class="el" href="_c_l_l_k_tracker_kernel_8cpp_source.xhtml#l00213">CLLKTrackerStage1Kernel.configure()</a>, <a class="el" href="validation_2_c_l_2_gaussian_pyramid_8cpp_source.xhtml#l00073">arm_compute::test::validation.DATA_TEST_CASE()</a>, <a class="el" href="_open_g_l_e_s_8cpp_source.xhtml#l00815">glFramebufferTexture2D()</a>, <a class="el" href="_open_g_l_e_s_8cpp_source.xhtml#l00763">glTexImage2D()</a>, <a class="el" href="_exceptions_8cpp_source.xhtml#l00068">arm_compute::test::framework.operator&lt;&lt;()</a>, <a class="el" href="validation_2reference_2_optical_flow_8cpp_source.xhtml#l00246">arm_compute::test::validation::reference.optical_flow()</a>, <a class="el" href="_n_e_optical_flow_8cpp_source.xhtml#l00125">NEOpticalFlow.run()</a>, <a class="el" href="_c_l_optical_flow_8cpp_source.xhtml#l00148">CLOpticalFlow.run()</a>, and <a class="el" href="_exceptions_8cpp_source.xhtml#l00100">arm_compute::test::framework.to_string()</a>.</p>
</div>
</div>
<a id="a05b240734aa0ab5756d163cc6b03d6e1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a05b240734aa0ab5756d163cc6b03d6e1">&#9670;&nbsp;</a></span>logging_level</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">logging_level = logging.DEBUG if args.debug else logging.INFO</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_gemm_tuner_8py_source.xhtml#l00556">556</a> of file <a class="el" href="_gemm_tuner_8py_source.xhtml">GemmTuner.py</a>.</p>
</div>
</div>
<a id="a6d8a64ff78fc562acbd80da81ed531b2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6d8a64ff78fc562acbd80da81ed531b2">&#9670;&nbsp;</a></span>metavar</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">metavar</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_gemm_tuner_8py_source.xhtml#l00525">525</a> of file <a class="el" href="_gemm_tuner_8py_source.xhtml">GemmTuner.py</a>.</p>
</div>
</div>
<a id="a90eee7a4677ca8b1ed116364a24367f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a90eee7a4677ca8b1ed116364a24367f9">&#9670;&nbsp;</a></span>parser</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">parser = argparse.ArgumentParser(description=&quot;CL GEMM Tuner&quot;)</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_gemm_tuner_8py_source.xhtml#l00520">520</a> of file <a class="el" href="_gemm_tuner_8py_source.xhtml">GemmTuner.py</a>.</p>
<p class="reference">Referenced by <a class="el" href="_common_graph_options_8cpp_source.xhtml#l00115">CommonGraphOptions.CommonGraphOptions()</a>, <a class="el" href="graph__validate__utils_8h_source.xhtml#l00230">CommonGraphValidateOptions.CommonGraphValidateOptions()</a>, <a class="el" href="_common_options_8cpp_source.xhtml#l00038">CommonOptions.CommonOptions()</a>, <a class="el" href="graph__validate__utils_8h_source.xhtml#l00640">GraphValidateExample&lt; DepthwiseConvolutionLayer, DepthConvolutionOptions, DepthConvolutionVerifyAccessor &gt;.do_setup()</a>, <a class="el" href="main_8cpp_source.xhtml#l00093">main()</a>, and <a class="el" href="benchmark__examples_2_run_example_8cpp_source.xhtml#l00096">arm_compute::utils.run_example()</a>.</p>
</div>
</div>
<a id="ae81948490ddf54e80a22593640178350"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae81948490ddf54e80a22593640178350">&#9670;&nbsp;</a></span>required</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">required</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_gemm_tuner_8py_source.xhtml#l00532">532</a> of file <a class="el" href="_gemm_tuner_8py_source.xhtml">GemmTuner.py</a>.</p>
<p class="reference">Referenced by <a class="el" href="_i_access_window_8h_source.xhtml#l00047">arm_compute.adjust_down()</a>, and <a class="el" href="_i_access_window_8h_source.xhtml#l00063">arm_compute.adjust_up()</a>.</p>
</div>
</div>
<a id="acf7192c608527efb8f8dedf0a3f2e706"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acf7192c608527efb8f8dedf0a3f2e706">&#9670;&nbsp;</a></span>Strategy</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Strategy = Enum(&quot;Strategy&quot;, [&quot;Native&quot;, &quot;ReshapedOnlyRHS&quot;, &quot;Reshaped&quot;])</td>
</tr>
</table>
</div><div class="memdoc">
<p>Types. </p>
<p class="definition">Definition at line <a class="el" href="_gemm_tuner_8py_source.xhtml#l00041">41</a> of file <a class="el" href="_gemm_tuner_8py_source.xhtml">GemmTuner.py</a>.</p>
</div>
</div>
<a id="a7aead736a07eaf25623ad7bfa1f0ee2d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7aead736a07eaf25623ad7bfa1f0ee2d">&#9670;&nbsp;</a></span>type</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">type</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_gemm_tuner_8py_source.xhtml#l00527">527</a> of file <a class="el" href="_gemm_tuner_8py_source.xhtml">GemmTuner.py</a>.</p>
<p class="reference">Referenced by <a class="el" href="_common_options_8cpp_source.xhtml#l00038">CommonOptions.CommonOptions()</a>, <a class="el" href="_n_e_threshold_8cpp_source.xhtml#l00033">NEThreshold.configure()</a>, <a class="el" href="_c_l_threshold_8cpp_source.xhtml#l00033">CLThreshold.configure()</a>, <a class="el" href="_c_l_threshold_kernel_8cpp_source.xhtml#l00037">CLThresholdKernel.configure()</a>, <a class="el" href="_c_l_normalization_layer_kernel_8cpp_source.xhtml#l00107">CLNormalizationLayerKernel.configure()</a>, <a class="el" href="_n_e_function_factory_8cpp_source.xhtml#l00186">NEFunctionFactory.create()</a>, <a class="el" href="_g_c_functions_factory_8cpp_source.xhtml#l00232">GCFunctionFactory.create()</a>, <a class="el" href="_scheduler_factory_8cpp_source.xhtml#l00051">SchedulerFactory.create()</a>, <a class="el" href="_c_l_functions_factory_8cpp_source.xhtml#l00221">CLFunctionFactory.create()</a>, <a class="el" href="_image_loader_8h_source.xhtml#l00509">ImageLoaderFactory.create()</a>, <a class="el" href="_c_l_kernel_library_8cpp_source.xhtml#l01070">CLKernelLibrary.create_kernel()</a>, <a class="el" href="_c_l_2_threshold_8cpp_source.xhtml#l00042">arm_compute::test::validation.DATA_TEST_CASE()</a>, <a class="el" href="validation_2reference_2_g_e_m_m_lowp_8cpp_source.xhtml#l00141">arm_compute::test::validation::reference.gemmlowp_matrix_multiply_core()</a>, <a class="el" href="utils_2_utils_8cpp_source.xhtml#l00161">arm_compute::utils.get_image_type_from_file()</a>, <a class="el" href="_framework_8cpp_source.xhtml#l00634">Framework.get_profiler()</a>, <a class="el" href="_open_g_l_e_s_8cpp_source.xhtml#l00347">glCreateShader()</a>, <a class="el" href="_open_g_l_e_s_8cpp_source.xhtml#l00763">glTexImage2D()</a>, <a class="el" href="src_2core_2_tensor_info_8cpp_source.xhtml#l00112">TensorInfo.init()</a>, <a class="el" href="src_2core_2_tensor_info_8cpp_source.xhtml#l00181">TensorInfo.init_auto_padding()</a>, <a class="el" href="_toolchain_support_8h_source.xhtml#l00493">arm_compute::support::cpp14.make_unique()</a>, <a class="el" href="_graph_8cpp_source.xhtml#l00174">Graph.nodes()</a>, <a class="el" href="validation_2reference_2_normalization_layer_8cpp_source.xhtml#l00037">arm_compute::test::validation::reference.normalization_layer()</a>, <a class="el" href="_dataset_modes_8h_source.xhtml#l00048">arm_compute::test::framework.operator &amp;()</a>, <a class="el" href="_validation_8h_source.xhtml#l00335">compare&lt; RelativeTolerance&lt; U &gt; &gt;.operator bool()</a>, <a class="el" href="_dataset_modes_8h_source.xhtml#l00054">arm_compute::test::framework.operator|()</a>, <a class="el" href="_dataset_modes_8h_source.xhtml#l00060">arm_compute::test::framework.operator|=()</a>, <a class="el" href="validation_2reference_2_pooling_layer_8cpp_source.xhtml#l00041">arm_compute::test::validation::reference.pooling_layer_internal()</a>, <a class="el" href="src_2core_2_utils_8cpp_source.xhtml#l00243">arm_compute.string_from_norm_type()</a>, <a class="el" href="src_2core_2_utils_8cpp_source.xhtml#l00255">arm_compute.string_from_pooling_type()</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00786">arm_compute::test.sync_if_necessary()</a>, <a class="el" href="tests_2_utils_8h_source.xhtml#l00803">arm_compute::test.sync_tensor_if_necessary()</a>, <a class="el" href="reference_2_threshold_8cpp_source.xhtml#l00035">arm_compute::test::validation::reference.threshold()</a>, <a class="el" href="tests_2_type_printer_8h_source.xhtml#l00064">arm_compute.to_string()</a>, <a class="el" href="_g_c_node_validator_8cpp_source.xhtml#l00095">GCNodeValidator.validate()</a>, <a class="el" href="_c_l_node_validator_8cpp_source.xhtml#l00041">CLNodeValidator.validate()</a>, <a class="el" href="_n_e_node_validator_8cpp_source.xhtml#l00041">NENodeValidator.validate()</a>, and <a class="el" href="_validation_8h_source.xhtml#l00456">arm_compute::test::validation.validate_wrap()</a>.</p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespace_gemm_tuner.xhtml">GemmTuner</a></li>
<li class="footer">Generated on Thu Nov 28 2019 16:53:21 for Compute Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
</div>
</body>
</html>