aboutsummaryrefslogtreecommitdiff
path: root/21.02/_cl_context_control_8cpp_source.xhtml
blob: 6965651bb66531c18826e56cf6012b9239e4f317 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
<!-- Copyright (c) 2020 ARM Limited. -->
<!--                                 -->
<!-- SPDX-License-Identifier: MIT    -->
<!--                                 -->
<!-- HTML header for doxygen 1.8.13-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="robots" content="NOINDEX, NOFOLLOW" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmNN: src/backends/cl/ClContextControl.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <img alt="ArmNN" src="Arm_NN_horizontal_blue.png" style="max-width: 10rem; margin-top: .5rem; margin-left 10px"/>
  <td style="padding-left: 0.5em;">
   <div id="projectname">
   &#160;<span id="projectnumber">21.02</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('_cl_context_control_8cpp_source.xhtml','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">ClContextControl.cpp</div>  </div>
</div><!--header-->
<div class="contents">
<a href="_cl_context_control_8cpp.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// Copyright © 2017 Arm Ltd. All rights reserved.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// SPDX-License-Identifier: MIT</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></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="preprocessor">#include &quot;<a class="code" href="_cl_context_control_8hpp.xhtml">ClContextControl.hpp</a>&quot;</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_exceptions_8hpp.xhtml">armnn/Exceptions.hpp</a>&gt;</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;</div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_leak_checking_8hpp.xhtml">LeakChecking.hpp</a>&gt;</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_assert_8hpp.xhtml">armnn/utility/Assert.hpp</a>&gt;</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_ignore_unused_8hpp.xhtml">armnn/utility/IgnoreUnused.hpp</a>&gt;</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="preprocessor">#include &lt;arm_compute/core/CL/CLKernelLibrary.h&gt;</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;arm_compute/runtime/CL/CLScheduler.h&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;fmt/format.h&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacecl.xhtml">cl</a></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;{</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="keyword">class </span>Context;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="keyword">class </span>CommandQueue;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="keyword">class </span>Device;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;}</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacearmnn.xhtml">armnn</a></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;{</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="classarmnn_1_1_cl_context_control.xhtml#a743aa7675f0efe29e0d3b9ec9971fc7c">   30</a></span>&#160;ClContextControl::ClContextControl(arm_compute::CLTuner *tuner,</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;                                   arm_compute::CLGEMMHeuristicsHandle* heuristicsHandle,</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;                                   <span class="keywordtype">bool</span> profilingEnabled)</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    : m_Tuner(tuner)</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;    , m_HeuristicsHandle(heuristicsHandle)</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;    , m_ProfilingEnabled(profilingEnabled)</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;    <span class="comment">// Ignore m_ProfilingEnabled if unused to avoid compiling problems when ArmCompute is disabled.</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;    <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(m_ProfilingEnabled);</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;    <span class="keywordflow">try</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;    {</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;        std::vector&lt;cl::Platform&gt; platforms;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;        cl::Platform::get(&amp;platforms);</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;        <span class="comment">// Selects default platform for the first element.</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;        cl::Platform::setDefault(platforms[0]);</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;        std::vector&lt;cl::Device&gt; devices;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;        platforms[0].getDevices(CL_DEVICE_TYPE_GPU, &amp;devices);</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;        <span class="comment">// Selects default device for the first element.</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;        cl::Device::setDefault(devices[0]);</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    }</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    <span class="keywordflow">catch</span> (<span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">cl::Error</a>&amp; clError)</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    {</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;        <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_cl_runtime_unavailable_exception.xhtml">ClRuntimeUnavailableException</a>(fmt::format(</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;            <span class="stringliteral">&quot;Could not initialize the CL runtime. Error description: {0}. CL error code: {1}&quot;</span>,</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;            clError.what(), clError.err()));</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    }</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    <span class="comment">// Removes the use of global CL context.</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    cl::Context::setDefault(cl::Context{});</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;    <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(cl::Context::getDefault()() == NULL);</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    <span class="comment">// Removes the use of global CL command queue.</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    cl::CommandQueue::setDefault(cl::CommandQueue{});</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(cl::CommandQueue::getDefault()() == NULL);</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    <span class="comment">// Always load the OpenCL runtime.</span></div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;    <a class="code" href="classarmnn_1_1_cl_context_control.xhtml#a80ef362b80b514620da9fd8f6a3ba518">LoadOpenClRuntime</a>();</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;}</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classarmnn_1_1_cl_context_control.xhtml#a9d4f5387dafdafbb86aac00586c58a79">   73</a></span>&#160;<a class="code" href="classarmnn_1_1_cl_context_control.xhtml#a9d4f5387dafdafbb86aac00586c58a79">ClContextControl::~ClContextControl</a>()</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;{</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    <span class="comment">// Load the OpencCL runtime without the tuned parameters to free the memory for them.</span></div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    <span class="keywordflow">try</span></div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    {</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;        <a class="code" href="classarmnn_1_1_cl_context_control.xhtml#a48f639543a69fe342fec2021b9dfd1d4">UnloadOpenClRuntime</a>();</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    }</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    <span class="keywordflow">catch</span> (<span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">cl::Error</a>&amp; clError)</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    {</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;        <span class="comment">// This should not happen, it is ignored if it does.</span></div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;        <span class="comment">// Coverity fix: BOOST_LOG_TRIVIAL (previously used here to report the error) may throw an</span></div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;        <span class="comment">// exception of type std::length_error.</span></div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;        <span class="comment">// Using stderr instead in this context as there is no point in nesting try-catch blocks here.</span></div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;        std::cerr &lt;&lt; <span class="stringliteral">&quot;A CL error occurred unloading the runtime tuner parameters: &quot;</span></div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;                  &lt;&lt; clError.what() &lt;&lt; <span class="stringliteral">&quot;. CL error code is: &quot;</span> &lt;&lt; clError.err() &lt;&lt; std::endl;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    }</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;}</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classarmnn_1_1_cl_context_control.xhtml#a80ef362b80b514620da9fd8f6a3ba518">   92</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classarmnn_1_1_cl_context_control.xhtml#a80ef362b80b514620da9fd8f6a3ba518">ClContextControl::LoadOpenClRuntime</a>()</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;{</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;    DoLoadOpenClRuntime(<span class="keyword">true</span>);</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;}</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="classarmnn_1_1_cl_context_control.xhtml#a48f639543a69fe342fec2021b9dfd1d4">   97</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classarmnn_1_1_cl_context_control.xhtml#a48f639543a69fe342fec2021b9dfd1d4">ClContextControl::UnloadOpenClRuntime</a>()</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;{</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    DoLoadOpenClRuntime(<span class="keyword">false</span>);</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;}</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;<span class="keywordtype">void</span> ClContextControl::DoLoadOpenClRuntime(<span class="keywordtype">bool</span> updateTunedParameters)</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;{</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    cl::Device device = cl::Device::getDefault();</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    cl::Context context;</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    cl::CommandQueue commandQueue;</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <span class="keywordflow">if</span> (arm_compute::CLScheduler::get().is_initialised() &amp;&amp; arm_compute::CLScheduler::get().context()() != NULL)</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    {</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;        <span class="comment">// Wait for all queued CL requests to finish before reinitialising it.</span></div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;        arm_compute::CLScheduler::get().sync();</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    }</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <span class="keywordflow">try</span></div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    {</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;        arm_compute::CLKernelLibrary::get().clear_programs_cache();</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;        <span class="comment">// Initialise the scheduler with a dummy context to release the LLVM data (which only happens when there are no</span></div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;        <span class="comment">// context references); it is initialised again, with a proper context, later.</span></div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;        arm_compute::CLScheduler::get().init(context, commandQueue, device);</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;        arm_compute::CLKernelLibrary::get().init(<span class="stringliteral">&quot;.&quot;</span>, context, device);</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;        {</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;            <span class="comment">//</span></div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;            <span class="comment">// Here we replace the context with a new one in which</span></div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;            <span class="comment">// the memory leak checks show it as an extra allocation but</span></div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;            <span class="comment">// because of the scope of the leak checks, it doesn&#39;t count</span></div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;            <span class="comment">// the disposal of the original object. On the other hand it</span></div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;            <span class="comment">// does count the creation of this context which it flags</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;            <span class="comment">// as a memory leak. By adding the following line we prevent</span></div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;            <span class="comment">// this to happen.</span></div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;            <span class="comment">//</span></div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;            <a class="code" href="_leak_checking_8hpp.xhtml#a9aaa2dcae10ed75233b511c29bccc086">ARMNN_DISABLE_LEAK_CHECKING_IN_SCOPE</a>();</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;            context = cl::Context(device);</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;        }</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;        <span class="comment">// NOTE: In this specific case profiling has to be enabled on the command queue</span></div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;        <span class="comment">// in order for the CLTuner to work.</span></div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;        <span class="keywordtype">bool</span> profilingNeededForClTuner = updateTunedParameters &amp;&amp; m_Tuner &amp;&amp;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;            m_Tuner-&gt;tune_new_kernels();</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;        <span class="keywordflow">if</span> (m_ProfilingEnabled || profilingNeededForClTuner)</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;        {</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;            <span class="comment">// Create a new queue with profiling enabled.</span></div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;            commandQueue = cl::CommandQueue(context, device, CL_QUEUE_PROFILING_ENABLE);</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;        }</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;        {</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;            <span class="comment">// Use default queue.</span></div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;            commandQueue = cl::CommandQueue(context, device);</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;        }</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    }</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;    <span class="keywordflow">catch</span> (<span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">cl::Error</a>&amp; clError)</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    {</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;        <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_cl_runtime_unavailable_exception.xhtml">ClRuntimeUnavailableException</a>(fmt::format(</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;            <span class="stringliteral">&quot;Could not initialize the CL runtime. Error description: {0}. CL error code: {1}&quot;</span>,</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;            clError.what(), clError.err()));</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    }</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    <span class="comment">// Note the first argument (path to cl source code) will be ignored as they should be embedded in the armcompute.</span></div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    arm_compute::CLKernelLibrary::get().init(<span class="stringliteral">&quot;.&quot;</span>, context, device);</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;    arm_compute::CLScheduler::get().init(context, commandQueue, device, m_Tuner, m_HeuristicsHandle);</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;}</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="classarmnn_1_1_cl_context_control.xhtml#a8f6d5a750a23d418fee0210de4e85c13">  164</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classarmnn_1_1_cl_context_control.xhtml#a8f6d5a750a23d418fee0210de4e85c13">ClContextControl::ClearClCache</a>()</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;{</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    DoLoadOpenClRuntime(<span class="keyword">true</span>);</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;}</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_gpu_acc_tuned_parameters.xhtml#aab5b1541a77a293348a19f5885a4245e">  169</a></span>&#160;<a class="code" href="classarmnn_1_1_i_gpu_acc_tuned_parameters.xhtml">armnn::IGpuAccTunedParameters</a>* <a class="code" href="classarmnn_1_1_i_gpu_acc_tuned_parameters.xhtml#aab5b1541a77a293348a19f5885a4245e">IGpuAccTunedParameters::CreateRaw</a>(<a class="code" href="classarmnn_1_1_i_gpu_acc_tuned_parameters.xhtml#a46c8a310cf4c094f8c80e1cb8dc1f911">armnn::IGpuAccTunedParameters::Mode</a> mode,</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;                                                                 <a class="code" href="classarmnn_1_1_i_gpu_acc_tuned_parameters.xhtml#a707090747256af276c389e0cf1cb0a9a">armnn::IGpuAccTunedParameters::TuningLevel</a> tuningLevel)</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;{</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classarmnn_1_1_cl_tuned_parameters.xhtml">ClTunedParameters</a>(mode, tuningLevel);</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="line"><a name="l00175"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_gpu_acc_tuned_parameters.xhtml#a44a119f8130b33053df7b48615729868">  175</a></span>&#160;<a class="code" href="namespacearmnn.xhtml#a2d3a708a26ac6d77bf8f15506e89a25a">armnn::IGpuAccTunedParametersPtr</a> <a class="code" href="classarmnn_1_1_i_gpu_acc_tuned_parameters.xhtml#a44a119f8130b33053df7b48615729868">IGpuAccTunedParameters::Create</a>(<a class="code" href="classarmnn_1_1_i_gpu_acc_tuned_parameters.xhtml#a46c8a310cf4c094f8c80e1cb8dc1f911">armnn::IGpuAccTunedParameters::Mode</a> mode,</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;                                                                <a class="code" href="classarmnn_1_1_i_gpu_acc_tuned_parameters.xhtml#a707090747256af276c389e0cf1cb0a9a">armnn::IGpuAccTunedParameters::TuningLevel</a> tuningLevel)</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;{</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a2d3a708a26ac6d77bf8f15506e89a25a">IGpuAccTunedParametersPtr</a>(CreateRaw(mode, tuningLevel), &amp;<a class="code" href="classarmnn_1_1_i_gpu_acc_tuned_parameters.xhtml#a2c9ba55e7d8c02cb8596149e4e94e009">IGpuAccTunedParameters::Destroy</a>);</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;}</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_gpu_acc_tuned_parameters.xhtml#a2c9ba55e7d8c02cb8596149e4e94e009">  181</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classarmnn_1_1_i_gpu_acc_tuned_parameters.xhtml#a2c9ba55e7d8c02cb8596149e4e94e009">IGpuAccTunedParameters::Destroy</a>(<a class="code" href="classarmnn_1_1_i_gpu_acc_tuned_parameters.xhtml">IGpuAccTunedParameters</a>* params)</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;{</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    <span class="keyword">delete</span> params;</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;}</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classarmnn_1_1_cl_tuned_parameters.xhtml#a73cc0aa02d5ea2b86e235fda9ecc643c">  186</a></span>&#160;<a class="code" href="classarmnn_1_1_cl_tuned_parameters.xhtml#a73cc0aa02d5ea2b86e235fda9ecc643c">ClTunedParameters::ClTunedParameters</a>(<a class="code" href="classarmnn_1_1_i_gpu_acc_tuned_parameters.xhtml#a46c8a310cf4c094f8c80e1cb8dc1f911">armnn::IGpuAccTunedParameters::Mode</a> mode,</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;                                     <a class="code" href="classarmnn_1_1_i_gpu_acc_tuned_parameters.xhtml#a707090747256af276c389e0cf1cb0a9a">armnn::IGpuAccTunedParameters::TuningLevel</a> tuningLevel)</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    : m_Mode(mode)</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;    , m_TuningLevel(tuningLevel)</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;    , m_Tuner(mode == <a class="code" href="classarmnn_1_1_cl_tuned_parameters.xhtml">ClTunedParameters</a>::<a class="code" href="classarmnn_1_1_i_gpu_acc_tuned_parameters.xhtml#a46c8a310cf4c094f8c80e1cb8dc1f911">Mode</a>::UpdateTunedParameters)</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;{</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;}</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="classarmnn_1_1_cl_tuned_parameters.xhtml#a889d1f94053989d53d14a401d38cbe66">  194</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classarmnn_1_1_cl_tuned_parameters.xhtml#a889d1f94053989d53d14a401d38cbe66">ClTunedParameters::Load</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename)</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;{</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;    <span class="keywordflow">try</span></div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;    {</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;        <a class="code" href="classarmnn_1_1_cl_tuned_parameters.xhtml#af6747d9aa587bd8b4ded70fbdcbe1d4a">m_Tuner</a>.load_from_file(filename);</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;    }</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;    <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    {</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;        <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_exception.xhtml">armnn::Exception</a>(std::string(<span class="stringliteral">&quot;Failed to load tuned parameters file &#39;&quot;</span>) + filename + <span class="stringliteral">&quot;&#39;: &quot;</span> +</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;                               e.what());</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    }</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;}</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="classarmnn_1_1_cl_tuned_parameters.xhtml#abba27f4c1828aae6b0103bf1bc093f2c">  207</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classarmnn_1_1_cl_tuned_parameters.xhtml#abba27f4c1828aae6b0103bf1bc093f2c">ClTunedParameters::Save</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename)<span class="keyword"> const</span></div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;    <span class="keywordflow">try</span></div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;    {</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;        <a class="code" href="classarmnn_1_1_cl_tuned_parameters.xhtml#af6747d9aa587bd8b4ded70fbdcbe1d4a">m_Tuner</a>.save_to_file(filename);</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;    }</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e)</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;    {</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;        <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_exception.xhtml">armnn::Exception</a>(std::string(<span class="stringliteral">&quot;Failed to save tuned parameters file to &#39;&quot;</span>) + filename + <span class="stringliteral">&quot;&#39;: &quot;</span> +</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;                               e.what());</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    }</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;}</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;} <span class="comment">// namespace armnn</span></div><div class="ttc" id="classarmnn_1_1_i_gpu_acc_tuned_parameters_xhtml_aab5b1541a77a293348a19f5885a4245e"><div class="ttname"><a href="classarmnn_1_1_i_gpu_acc_tuned_parameters.xhtml#aab5b1541a77a293348a19f5885a4245e">armnn::IGpuAccTunedParameters::CreateRaw</a></div><div class="ttdeci">static IGpuAccTunedParameters * CreateRaw(Mode mode, TuningLevel tunerMode)</div><div class="ttdoc">Creates an IClTunedParameters with the given mode. </div><div class="ttdef"><b>Definition:</b> <a href="_cl_context_control_8cpp_source.xhtml#l00169">ClContextControl.cpp:169</a></div></div>
<div class="ttc" id="namespacecl_xhtml"><div class="ttname"><a href="namespacecl.xhtml">cl</a></div><div class="ttdef"><b>Definition:</b> <a href="_loaded_network_8hpp_source.xhtml#l00024">LoadedNetwork.hpp:24</a></div></div>
<div class="ttc" id="_ignore_unused_8hpp_xhtml"><div class="ttname"><a href="_ignore_unused_8hpp.xhtml">IgnoreUnused.hpp</a></div></div>
<div class="ttc" id="_leak_checking_8hpp_xhtml_a9aaa2dcae10ed75233b511c29bccc086"><div class="ttname"><a href="_leak_checking_8hpp.xhtml#a9aaa2dcae10ed75233b511c29bccc086">ARMNN_DISABLE_LEAK_CHECKING_IN_SCOPE</a></div><div class="ttdeci">#define ARMNN_DISABLE_LEAK_CHECKING_IN_SCOPE()</div><div class="ttdef"><b>Definition:</b> <a href="_leak_checking_8hpp_source.xhtml#l00093">LeakChecking.hpp:93</a></div></div>
<div class="ttc" id="_cl_context_control_8hpp_xhtml"><div class="ttname"><a href="_cl_context_control_8hpp.xhtml">ClContextControl.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_gpu_acc_tuned_parameters_xhtml_a2c9ba55e7d8c02cb8596149e4e94e009"><div class="ttname"><a href="classarmnn_1_1_i_gpu_acc_tuned_parameters.xhtml#a2c9ba55e7d8c02cb8596149e4e94e009">armnn::IGpuAccTunedParameters::Destroy</a></div><div class="ttdeci">static void Destroy(IGpuAccTunedParameters *params)</div><div class="ttdef"><b>Definition:</b> <a href="_cl_context_control_8cpp_source.xhtml#l00181">ClContextControl.cpp:181</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_gpu_acc_tuned_parameters_xhtml_a44a119f8130b33053df7b48615729868"><div class="ttname"><a href="classarmnn_1_1_i_gpu_acc_tuned_parameters.xhtml#a44a119f8130b33053df7b48615729868">armnn::IGpuAccTunedParameters::Create</a></div><div class="ttdeci">static IGpuAccTunedParametersPtr Create(Mode mode, TuningLevel tunerMode)</div><div class="ttdef"><b>Definition:</b> <a href="_cl_context_control_8cpp_source.xhtml#l00175">ClContextControl.cpp:175</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml"><div class="ttname"><a href="namespacearmnn.xhtml">armnn</a></div><div class="ttdoc">Copyright (c) 2021 ARM Limited and Contributors. </div><div class="ttdef"><b>Definition:</b> <a href="01__00__software__tools_8dox_source.xhtml#l00006">01_00_software_tools.dox:6</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
<div class="ttc" id="classarmnn_1_1_cl_tuned_parameters_xhtml_a889d1f94053989d53d14a401d38cbe66"><div class="ttname"><a href="classarmnn_1_1_cl_tuned_parameters.xhtml#a889d1f94053989d53d14a401d38cbe66">armnn::ClTunedParameters::Load</a></div><div class="ttdeci">virtual void Load(const char *filename)</div><div class="ttdoc">Loads an existing set of tuned parameters from the given file. </div><div class="ttdef"><b>Definition:</b> <a href="_cl_context_control_8cpp_source.xhtml#l00194">ClContextControl.cpp:194</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_gpu_acc_tuned_parameters_xhtml_a46c8a310cf4c094f8c80e1cb8dc1f911"><div class="ttname"><a href="classarmnn_1_1_i_gpu_acc_tuned_parameters.xhtml#a46c8a310cf4c094f8c80e1cb8dc1f911">armnn::IGpuAccTunedParameters::Mode</a></div><div class="ttdeci">Mode</div><div class="ttdef"><b>Definition:</b> <a href="_i_runtime_8hpp_source.xhtml#l00198">IRuntime.hpp:198</a></div></div>
<div class="ttc" id="classarmnn_1_1_cl_context_control_xhtml_a8f6d5a750a23d418fee0210de4e85c13"><div class="ttname"><a href="classarmnn_1_1_cl_context_control.xhtml#a8f6d5a750a23d418fee0210de4e85c13">armnn::ClContextControl::ClearClCache</a></div><div class="ttdeci">void ClearClCache()</div><div class="ttdef"><b>Definition:</b> <a href="_cl_context_control_8cpp_source.xhtml#l00164">ClContextControl.cpp:164</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd"><div class="ttname"><a href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">armnn::LogSeverity::Error</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_gpu_acc_tuned_parameters_xhtml_a707090747256af276c389e0cf1cb0a9a"><div class="ttname"><a href="classarmnn_1_1_i_gpu_acc_tuned_parameters.xhtml#a707090747256af276c389e0cf1cb0a9a">armnn::IGpuAccTunedParameters::TuningLevel</a></div><div class="ttdeci">TuningLevel</div><div class="ttdef"><b>Definition:</b> <a href="_i_runtime_8hpp_source.xhtml#l00204">IRuntime.hpp:204</a></div></div>
<div class="ttc" id="_assert_8hpp_xhtml_a5698be69cbd5dfe6c28fcd9867e8cbed"><div class="ttname"><a href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a></div><div class="ttdeci">#define ARMNN_ASSERT(COND)</div><div class="ttdef"><b>Definition:</b> <a href="_assert_8hpp_source.xhtml#l00014">Assert.hpp:14</a></div></div>
<div class="ttc" id="classarmnn_1_1_cl_context_control_xhtml_a9d4f5387dafdafbb86aac00586c58a79"><div class="ttname"><a href="classarmnn_1_1_cl_context_control.xhtml#a9d4f5387dafdafbb86aac00586c58a79">armnn::ClContextControl::~ClContextControl</a></div><div class="ttdeci">virtual ~ClContextControl()</div><div class="ttdef"><b>Definition:</b> <a href="_cl_context_control_8cpp_source.xhtml#l00073">ClContextControl.cpp:73</a></div></div>
<div class="ttc" id="classarmnn_1_1_cl_tuned_parameters_xhtml"><div class="ttname"><a href="classarmnn_1_1_cl_tuned_parameters.xhtml">armnn::ClTunedParameters</a></div><div class="ttdef"><b>Definition:</b> <a href="_cl_context_control_8hpp_source.xhtml#l00045">ClContextControl.hpp:45</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a2d3a708a26ac6d77bf8f15506e89a25a"><div class="ttname"><a href="namespacearmnn.xhtml#a2d3a708a26ac6d77bf8f15506e89a25a">armnn::IGpuAccTunedParametersPtr</a></div><div class="ttdeci">std::shared_ptr&lt; IGpuAccTunedParameters &gt; IGpuAccTunedParametersPtr</div><div class="ttdoc">The following API is replaced by the backend options API. </div><div class="ttdef"><b>Definition:</b> <a href="_i_runtime_8hpp_source.xhtml#l00182">IRuntime.hpp:182</a></div></div>
<div class="ttc" id="classarmnn_1_1_cl_tuned_parameters_xhtml_af6747d9aa587bd8b4ded70fbdcbe1d4a"><div class="ttname"><a href="classarmnn_1_1_cl_tuned_parameters.xhtml#af6747d9aa587bd8b4ded70fbdcbe1d4a">armnn::ClTunedParameters::m_Tuner</a></div><div class="ttdeci">arm_compute::CLTuner m_Tuner</div><div class="ttdef"><b>Definition:</b> <a href="_cl_context_control_8hpp_source.xhtml#l00056">ClContextControl.hpp:56</a></div></div>
<div class="ttc" id="_leak_checking_8hpp_xhtml"><div class="ttname"><a href="_leak_checking_8hpp.xhtml">LeakChecking.hpp</a></div></div>
<div class="ttc" id="_assert_8hpp_xhtml"><div class="ttname"><a href="_assert_8hpp.xhtml">Assert.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_gpu_acc_tuned_parameters_xhtml"><div class="ttname"><a href="classarmnn_1_1_i_gpu_acc_tuned_parameters.xhtml">armnn::IGpuAccTunedParameters</a></div><div class="ttdoc">Manages a set of GpuAcc parameters which have been tuned for maximum performance. ...</div><div class="ttdef"><b>Definition:</b> <a href="_i_runtime_8hpp_source.xhtml#l00195">IRuntime.hpp:195</a></div></div>
<div class="ttc" id="classarmnn_1_1_cl_context_control_xhtml_a80ef362b80b514620da9fd8f6a3ba518"><div class="ttname"><a href="classarmnn_1_1_cl_context_control.xhtml#a80ef362b80b514620da9fd8f6a3ba518">armnn::ClContextControl::LoadOpenClRuntime</a></div><div class="ttdeci">void LoadOpenClRuntime()</div><div class="ttdef"><b>Definition:</b> <a href="_cl_context_control_8cpp_source.xhtml#l00092">ClContextControl.cpp:92</a></div></div>
<div class="ttc" id="classarmnn_1_1_exception_xhtml"><div class="ttname"><a href="classarmnn_1_1_exception.xhtml">armnn::Exception</a></div><div class="ttdoc">Base class for all ArmNN exceptions so that users can filter to just those. </div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.xhtml#l00046">Exceptions.hpp:46</a></div></div>
<div class="ttc" id="_exceptions_8hpp_xhtml"><div class="ttname"><a href="_exceptions_8hpp.xhtml">Exceptions.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_cl_context_control_xhtml_a48f639543a69fe342fec2021b9dfd1d4"><div class="ttname"><a href="classarmnn_1_1_cl_context_control.xhtml#a48f639543a69fe342fec2021b9dfd1d4">armnn::ClContextControl::UnloadOpenClRuntime</a></div><div class="ttdeci">void UnloadOpenClRuntime()</div><div class="ttdef"><b>Definition:</b> <a href="_cl_context_control_8cpp_source.xhtml#l00097">ClContextControl.cpp:97</a></div></div>
<div class="ttc" id="classarmnn_1_1_cl_tuned_parameters_xhtml_abba27f4c1828aae6b0103bf1bc093f2c"><div class="ttname"><a href="classarmnn_1_1_cl_tuned_parameters.xhtml#abba27f4c1828aae6b0103bf1bc093f2c">armnn::ClTunedParameters::Save</a></div><div class="ttdeci">virtual void Save(const char *filename) const</div><div class="ttdoc">Saves the current set of tuned parameters to the given file. </div><div class="ttdef"><b>Definition:</b> <a href="_cl_context_control_8cpp_source.xhtml#l00207">ClContextControl.cpp:207</a></div></div>
<div class="ttc" id="classarmnn_1_1_cl_runtime_unavailable_exception_xhtml"><div class="ttname"><a href="classarmnn_1_1_cl_runtime_unavailable_exception.xhtml">armnn::ClRuntimeUnavailableException</a></div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.xhtml#l00074">Exceptions.hpp:74</a></div></div>
<div class="ttc" id="classarmnn_1_1_cl_tuned_parameters_xhtml_a73cc0aa02d5ea2b86e235fda9ecc643c"><div class="ttname"><a href="classarmnn_1_1_cl_tuned_parameters.xhtml#a73cc0aa02d5ea2b86e235fda9ecc643c">armnn::ClTunedParameters::ClTunedParameters</a></div><div class="ttdeci">ClTunedParameters(armnn::IGpuAccTunedParameters::Mode mode, armnn::IGpuAccTunedParameters::TuningLevel tuningLevel)</div><div class="ttdef"><b>Definition:</b> <a href="_cl_context_control_8cpp_source.xhtml#l00186">ClContextControl.cpp:186</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.xhtml">src</a></li><li class="navelem"><a class="el" href="dir_0f3cdec46afbc61a1ded8e1687c9c9a0.xhtml">backends</a></li><li class="navelem"><a class="el" href="dir_1ad86c6d39ab715a831555571b9e98a5.xhtml">cl</a></li><li class="navelem"><a class="el" href="_cl_context_control_8cpp.xhtml">ClContextControl.cpp</a></li>
    <li class="footer">Generated on Fri Mar 19 2021 15:26:02 for ArmNN by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  </ul>
</div>
</body>
</html>