<!-- iframe showing the search results (closed by default) -->
<divid="MSearchResultsWindow">
<iframesrc="javascript:void(0)"frameborder="0"
name="MSearchResults"id="MSearchResults">
</iframe>
</div>
<divclass="header">
<divclass="headertitle">
<divclass="title">nlohmann::detail::make_void< Ts > Member List</div></div>
</div><!--header-->
<divclass="contents">
<p>This is the complete list of members for <aclass="el"href="../../d3/d72/structnlohmann_1_1detail_1_1make__void.html">nlohmann::detail::make_void< Ts ></a>, including all inherited members.</p>
<!-- iframe showing the search results (closed by default) -->
<divid="MSearchResultsWindow">
<iframesrc="javascript:void(0)"frameborder="0"
name="MSearchResults"id="MSearchResults">
</iframe>
</div>
<divclass="header">
<divclass="headertitle">
<divclass="title">nlohmann::detail::nonesuch Member List</div></div>
</div><!--header-->
<divclass="contents">
<p>This is the complete list of members for <aclass="el"href="../../da/d31/structnlohmann_1_1detail_1_1nonesuch.html">nlohmann::detail::nonesuch</a>, including all inherited members.</p>
<!-- iframe showing the search results (closed by default) -->
<divid="MSearchResultsWindow">
<iframesrc="javascript:void(0)"frameborder="0"
name="MSearchResults"id="MSearchResults">
</iframe>
</div>
<divclass="header">
<divclass="headertitle">
<divclass="title">nlohmann::detail::has_from_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value >> Member List</div></div>
</div><!--header-->
<divclass="contents">
<p>This is the complete list of members for <aclass="el"href="../../d0/d3d/structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01_9is3ee028c64c76c768be45996bb13fc9c5.html">nlohmann::detail::has_from_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value >></a>, including all inherited members.</p>
<tableclass="directory">
<trclass="even"><tdclass="entry"><aclass="el"href="../../d0/d3d/structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01_9is3ee028c64c76c768be45996bb13fc9c5.html#ac0718a48961f28e32604e1b16c6f2e8d">serializer</a> typedef</td><tdclass="entry"><aclass="el"href="../../d0/d3d/structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01_9is3ee028c64c76c768be45996bb13fc9c5.html">nlohmann::detail::has_from_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value >></a></td><tdclass="entry"></td></tr>
<tr><tdclass="entry"><aclass="el"href="../../d0/d3d/structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01_9is3ee028c64c76c768be45996bb13fc9c5.html#a4d1c8c5e3080360d4ba3d4701b00d442">value</a></td><tdclass="entry"><aclass="el"href="../../d0/d3d/structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01_9is3ee028c64c76c768be45996bb13fc9c5.html">nlohmann::detail::has_from_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value >></a></td><tdclass="entry"><spanclass="mlabel">static</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<divid="nav-path"class="navpath"><!-- id is needed for treeview function! -->
<pclass="definition">Definition at line <aclass="el"href="../../d5/db8/json_8hpp_source.html#l03829">3829</a> of file <aclass="el"href="../../d5/db8/json_8hpp_source.html">json.hpp</a>.</p>
</div><hr/>The documentation for this struct was generated from the following file:<ul>
<ahref="../../d3/d6b/cudnn__frontend__find__plan_8h.html">Go to the documentation of this file.</a><divclass="fragment"><divclass="line"><aname="l00001"></a><spanclass="lineno"> 1</span> <spanclass="comment">/*</span></div><divclass="line"><aname="l00002"></a><spanclass="lineno"> 2</span> <spanclass="comment"> * Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.</span></div><divclass="line"><aname="l00003"></a><spanclass="lineno"> 3</span> <spanclass="comment"> *</span></div><divclass="line"><aname="l00004"></a><spanclass="lineno"> 4</span> <spanclass="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div><divclass="line"><aname="l00005"></a><spanclass="lineno"> 5</span> <spanclass="comment"> * copy of this software and associated documentation files (the "Software"),</span></div><divclass="line"><aname="l00006"></a><spanclass="lineno"> 6</span> <spanclass="comment"> * to deal in the Software without restriction, including without limitation</span></div><divclass="line"><aname="l00007"></a><spanclass="lineno"> 7</span> <spanclass="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div><divclass="line"><aname="l00008"></a><spanclass="lineno"> 8</span> <spanclass="comment"> * and/or sell copies of the Software, and to permit persons to whom the</span></div><divclass="line"><aname="l00009"></a><spanclass="lineno"> 9</span> <spanclass="comment"> * Software is furnished to do so, subject to the following conditions:</span></div><divclass="line"><aname="l00010"></a><spanclass="lineno"> 10</span> <spanclass="comment"> *</span></div><divclass="line"><aname="l00011"></a><spanclass="lineno"> 11</span> <spanclass="comment"> * The above copyright notice and this permission notice shall be included in</span></div><divclass="line"><aname="l00012"></a><spanclass="lineno"> 12</span> <spanclass="comment"> * all copies or substantial portions of the Software.</span></div><divclass="line"><aname="l00013"></a><spanclass="lineno"> 13</span> <spanclass="comment"> *</span></div><divclass="line"><aname="l00014"></a><spanclass="lineno"> 14</span> <spanclass="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><divclass="line"><aname="l00015"></a><spanclass="lineno"> 15</span> <spanclass="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><divclass="line"><aname="l00016"></a><spanclass="lineno"> 16</span> <spanclass="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL</span></div><divclass="line"><aname="l00017"></a><spanclass="lineno"> 17</span> <spanclass="comment"> * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div><divclass="line"><aname="l00018"></a><spanclass="lineno"> 18</span> <spanclass="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div><divclass="line"><aname="l00019"></a><spanclass="lineno"> 19</span> <spanclass="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div><divclass="line"><aname="l00020"></a><spanclass="lineno"> 20</span> <spanclass="comment"> * DEALINGS IN THE SOFTWARE.</span></div><divclass="line"><aname="l00021"></a><spanclass="lineno"> 21</span> <spanclass="comment"> */</span></div><divclass="line"><aname="l00022"></a><spanclass="lineno"> 22</span> </div><divclass="line"><aname="l00023"></a><spanclass="lineno"> 23</span> <spanclass="preprocessor">#pragma once</span></div><divclass="line"><aname="l00024"></a><spanclass="lineno"> 24</span> </div><divclass="line"><aname="l00025"></a><spanclass="lineno"> 25</span> <spanclass="preprocessor">#include <<aclass="code"href="../../de/d1e/cudnn__frontend__EngineConfigGenerator_8h.html">cudnn_frontend_EngineConfigGenerator.h</a>></span></div><divclass="line"><aname="l00026"></a><spanclass="lineno"> 26</span> <spanclass="preprocessor">#include <iomanip></span></div><divclass="line"><aname="l00027"></a><spanclass="lineno"> 27</span> <spanclass="preprocessor">#include <set></span></div><divclass="line"><aname="l00028"></a><spanclass="lineno"> 28</span> </div><divclass="line"><aname="l00029"></a><spanclass="lineno"> 29</span> <spanclass="keyword">namespace </span><aclass="code"href="../../df/de1/namespacecudnn__frontend.html">cudnn_frontend</a> {</div><divclass="line"><aname="l00030"></a><spanclass="lineno"> 30</span> </div><divclass="line"><aname="l00036"></a><spanclass="lineno"> 36</span> <spanclass="keyword">template</span><CudnnFindSamplingTechnique samplingTechnique></div><divclass="line"><aname="l00037"></a><spanclass="lineno"> 37</span> <spanclass="keyword">auto</span></div><divclass="line"><aname="l00038"></a><spanclass="lineno"><aclass="line"href="../../df/de1/namespacecudnn__frontend.html#a55c20886fc567d350a36f84ead282af7"> 38</a></span> <aclass="code"href="../../df/de1/namespacecudnn__frontend.html#a55c20886fc567d350a36f84ead282af7">time_sorted_plan</a>(cudnnHandle_t handle, <aclass="code"href="../../df/de1/namespacecudnn__frontend.html#a560644a5c1e6016c509a379ca6e03f05">executionPlans_t</a> plans, <aclass="code"href="../../d0/d20/classcudnn__frontend_1_1VariantPack__v8.html">VariantPack</a><spanclass="keyword">const</span>&variantPack) -><aclass="code"href="../../df/de1/namespacecudnn__frontend.html#a560644a5c1e6016c509a379ca6e03f05">executionPlans_t</a> {</div><divclass="line"><aname="l00039"></a><spanclass="lineno"> 39</span> <aclass="code"href="../../df/de1/namespacecudnn__frontend.html#a560644a5c1e6016c509a379ca6e03f05">executionPlans_t</a> time_sorted_plans;</div><divclass="line"><aname="l00040"></a><spanclass="lineno"> 40</span> </div><divclass="line"><aname="l00041"></a><spanclass="lineno"> 41</span> <spanclass="keyword">auto</span> plan_cmp = [](<spanclass="keyword">const</span><aclass="code"href="../../d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8.html">ExecutionPlan</a>& a, <spanclass="keyword">const</span><aclass="code"href="../../d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8.html">ExecutionPlan</a>& b) {<spanclass="keywordflow">return</span> a.<aclass="code"href="../../d7/d0d/group__ExecutionPlanQuery.html#ga74f24a0cc255a72af695056c2f559af7">getExecutionTime</a>() < b.getExecutionTime();};</div><divclass="line"><aname="l00042"></a><spanclass="lineno"> 42</span>  std::set<std::reference_wrapper<ExecutionPlan>, decltype(plan_cmp)> timed_execution_plans(plan_cmp);</div><divclass="line"><aname="l00043"></a><spanclass="lineno"> 43</span> </div><divclass="line"><aname="l00044"></a><spanclass="lineno"> 44</span> <spanclass="keyword">const</span><spanclass="keywordtype">int</span> maxIterCount =</div><divclass="line"><aname="l00045"></a><spanclass="lineno"> 45</span>  (samplingTechnique == <aclass="code"href="../../df/de1/namespacecudnn__frontend.html#ab3748fa00b36beec790db7201fdd2ef3ac8ab707d81df65503b6b0ecc67675158">CudnnFindSamplingTechnique::CUDNN_FIND_SAMPLE_ONCE</a>)</div><divclass="line"><aname="l00046"></a><spanclass="lineno"> 46</span>  ? 1</div><divclass="line"><aname="l00047"></a><spanclass="lineno"> 47</span>  : (samplingTechnique == <aclass="code"href="../../df/de1/namespacecudnn__frontend.html#ab3748fa00b36beec790db7201fdd2ef3a903bfd2e4d1b8ab2a7197be752c618a6">CudnnFindSamplingTechnique::CUDNN_FIND_SAMPLE_MEDIAN_OF_THREE</a>) ? 3 : 100;</div><divclass="line"><aname="l00048"></a><spanclass="lineno"> 48</span> <spanclass="keyword">const</span><spanclass="keywordtype">float</span> threshhold = 0.95f;</div><divclass="line"><aname="l00049"></a><spanclass="lineno"> 49</span> </div><divclass="line"><aname="l00050"></a><spanclass="lineno"> 50</span>  cudaEvent_t start, stop;</div><divclass="line"><aname="l00051"></a><spanclass="lineno"> 51</span>  cudaEventCreate(&start);</div><divclass="line"><aname="l00052"></a><spanclass="lineno"> 52</span>  cudaEventCreate(&stop);</div><divclass="line"><aname="l00053"></a><spanclass="lineno"> 53</span>  cudaDeviceSynchronize();</div><divclass="line"><aname="l00054"></a><spanclass="lineno"> 54</span> </div><divclass="line"><aname="l00055"></a><spanclass="lineno"> 55</span> <spanclass="keywordflow">for</span> (<spanclass="keyword">auto</span>&plan : plans) {</div><divclass="line"><aname="l00056"></a><spanclass="lineno"> 56</span> <spanclass="keywordtype">float</span> time_ms = 0.0f;</div><divclass="line"><aname="l00057"></a><spanclass="lineno"> 57</span> <spanclass="keywordtype">float</span> final_time_ms = 0.0f;</div><divclass="line"><aname="l00058"></a><spanclass="lineno"> 58</span> <spanclass="keywordtype">float</span> min_time_ms = std::numeric_limits<float>::max();</div><divclass="line"><aname="l00059"></a><spanclass="lineno"> 59</span> </div><divclass="line"><aname="l00060"></a><spanclass="lineno"> 60</span> <spanclass="comment">// Warm-up run</span></div><divclass="line"><aname="l00061"></a><spanclass="lineno"> 61</span> <spanclass="keyword">auto</span> warmup_status = ::cudnnBackendExecute(handle, plan.get_raw_desc(), variantPack.get_raw_desc());</div><divclass="line"><aname="l00062"></a><spanclass="lineno"> 62</span> <spanclass="keywordflow">if</span> (warmup_status != CUDNN_STATUS_SUCCESS) {</div><divclass="line"><aname="l00063"></a><spanclass="lineno"> 63</span> <aclass="code"href="../../df/de1/namespacecudnn__frontend.html#ac39691550c5659acffd2386354ed18c6">getLogger</a>() <<<spanclass="stringliteral">"[cudnn_frontend] Plan "</span><< plan.getTag() <<<spanclass="stringliteral">" failed with "</span><<<aclass="code"href="../../df/de1/namespacecudnn__frontend.html#a939cf4181f94bc235363cc485beb1ce8">to_string</a>(warmup_status) << std::endl;</div><divclass="line"><aname="l00064"></a><spanclass="lineno"> 64</span> <spanclass="keywordflow">continue</span>;</div><divclass="line"><aname="l00065"></a><spanclass="lineno"> 65</span>  }</div><divclass="line"><aname="l00066"></a><spanclass="lineno"> 66</span>  cudaDeviceSynchronize();</div><divclass="line"><aname="l00067"></a><spanclass="lineno"> 67</span> </div><divclass="line"><aname="l00068"></a><spanclass="lineno"> 68</span> <spanclass="keywordflow">for</span> (<spanclass="keywordtype">int</span> i = 0; i < maxIterCount; i++) {</div><divclass="line"><aname="l00069"></a><spanclass="lineno"> 69</span>  cudaEventRecord(start);</div><divclass="line"><aname="l00070"></a><spanclass="lineno"> 70</span> </div><divclass="line"><aname="l00071"></a><spanclass="lineno"> 71</span>  ::cudnnBackendExecute(handle, plan.get_raw_desc(), variantPack.get_raw_desc());</div><divclass="line"><aname="l00072"></a><spanclass="lineno"> 72</span> </div><divclass="line"><aname="l00073"></a><spanclass="lineno"> 73</span>  cudaEventRecord(stop);</div><divclass="line"><aname="l00074"></a><spanclass="lineno"> 74</span>  cudaEventSynchronize(stop);</div><divclass="line"><aname="l00075"></a><spanclass="lineno"> 75</span>  cudaEventElapsedTime(&time_ms, start, stop);</div><divclass="line"><aname="l00076"></a><spanclass="lineno"> 76</span> </div><divclass="line"><aname="l00077"></a><spanclass="lineno"> 77</span> <spanclass="keywordflow">if</span> (samplingTechnique == <aclass="code"href="../../df/de1/namespacecudnn__frontend.html#ab3748fa00b36beec790db7201fdd2ef3a8199dfa6701edb38f52a74d9e229b43d">CudnnFindSamplingTechnique::CUDNN_FIND_SAMPLE_TILL_STABLE</a>) {</div><divclass="line"><aname="l00078"></a><spanclass="lineno"> 78</span>  final_time_ms = std::min(min_time_ms, time_ms);</div><divclass="line"><aname="l00079"></a><spanclass="lineno"> 79</span> <spanclass="keywordflow">if</span> (time_ms / min_time_ms < threshhold) {</div><divclass="line"><aname="l00080"></a><spanclass="lineno"> 80</span>  min_time_ms = final_time_ms;</div><divclass="line"><aname="l00081"></a><spanclass="lineno"> 81</span>  } <spanclass="keywordflow">else</span> {</div><divclass="line"><aname="l00082"></a><spanclass="lineno"> 82</span> <spanclass="keywordflow">break</span>;</div><divclass="line"><aname="l00083"></a><spanclass="lineno"> 83</span>  }</div><divclass="line"><aname="l00084"></a><spanclass="lineno"> 84</span>  } <spanclass="keywordflow">else</span> {</div><divclass="line"><aname="l00085"></a><spanclass="lineno"> 85</span>  final_time_ms = i == (maxIterCount / 2) ? time_ms : final_time_ms;</div><divclass="line"><aname="l00086"></a><spanclass="lineno"> 86</span>  }</div><divclass="line"><aname="l00087"></a><spanclass="lineno"> 87</span>  }</div><divclass="line"><aname="l00088"></a><spanclass="lineno"> 88</span> <aclass="code"href="../../df/de1/namespacecudnn__frontend.html#ac39691550c5659acffd2386354ed18c6">getLogger</a>() <<<spanclass="stringliteral">"[cudnn_frontend] Plan "</span><< plan.getTag() <<<spanclass="stringliteral">" took "</span><< std::setw(10) << final_time_ms << std::endl;</div><divclass="line"><aname="l00089"></a><spanclass="lineno"> 89</span>  plan.setExecutionTime(final_time_ms);</div><divclass="line"><aname="l00090"></a><spanclass="lineno"> 90</span>  timed_execution_plans.insert(plan);</div><divclass="line"><aname="l00091"></a><spanclass="lineno"> 91</span>  }</div><divclass="line"><aname="l00092"></a><spanclass="lineno"> 92</span> </div><divclass="line"><aname="l00093"></a><spanclass="lineno"> 93</span> <spanclass="keywordflow">for</span> (<aclass="code"href="../../d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8.html">ExecutionPlan</a>&plan : timed_execution_plans) {</div><divclass="line"><aname="l00094"></a><spanclass="lineno"> 94</span>  time_sorted_plans.emplace_back(std::move(plan));</div><divclass="line"><aname="l00095"></a><spanclass="lineno"> 95</span>  }</div><divclass="line"><aname="l00096"></a><spanclass="lineno"> 96</span> </div><divclass="line"><aname="l00097"></a><spanclass="lineno"> 97</span>  cudaEventDestroy(start);</div><divclass="line"><aname="l00098"></a><spanclass="lineno"> 98</span>  cudaEventDestroy(stop);</div><divclass="line"><aname="l00099"></a><spanclass="lineno"> 99</span> </div><divclass="line"><aname="l00100"></a><spanclass="lineno"> 100</span> <aclass="code"href="../../df/de1/namespacecudnn__frontend.html#ac39691550c5659acffd2386354ed18c6">getLogger</a>() <<<spanclass="stringliteral">"[cudnn_frontend] Auto-tuning returns "</span><< time_sorted_plans.size() <<<spanclass="stringliteral">" plans."</span><< std::endl;</div><divclass="line"><aname="l00101"></a><spanclass="lineno"> 101</span> </div><divclass="line"><aname="l00102"></a><spanclass="lineno"> 102</span> <spanclass="keywordflow">return</span> time_sorted_plans;</div><divclass="line"><aname="l00103"></a><spanclass="lineno"> 103</span> }</div><divclass="line"><aname="l00104"></a><spanclass="lineno"> 104</span> </div><divclass="line"><aname="l00105"></a><spanclass="lineno"> 105</span> <spanclass="keyword">template</span><CudnnFindSamplingTechnique samplingTechnique></div><divclass="line"><aname="l00106"></a><spanclass="lineno"> 106</span> <spanclass="keyword">auto</span></div><divclass="line"><aname="l00107"></a><spanclass="lineno"><aclass="line"href="../../dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html#a380e8426e6855e8e86405719aefeb905"> 107</a></span> <aclass="code"href="../../dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html#a3b291ce5e552bf0c736be227065cd8ad">EngineConfigGenerator::cudnnFindPlan</a>(cudnnHandle_t handle,</div><divclass="line"><aname="l00108"></a><spanclass="lineno"> 108</span> <aclass="code"href="../../de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html">cudnn_frontend::OperationGraph</a>&opGraph,</div><divclass="line"><aname="l00109"></a><spanclass="lineno"> 109</span> <aclass="code"href="../../d0/d20/classcudnn__frontend_1_1VariantPack__v8.html">cudnn_frontend::VariantPack</a><spanclass="keyword">const</span>&variantPack) -><aclass="code"href="../../df/de1/namespacecudnn__frontend.html#a560644a5c1e6016c509a379ca6e03f05">executionPlans_t</a> {</div><divclass="line"><aname="l00111"></a><spanclass="lineno"> 111</span> <aclass="code"href="../../df/de1/namespacecudnn__frontend.html#a560644a5c1e6016c509a379ca6e03f05">executionPlans_t</a> plans = cudnnGetPlan(handle, opGraph);</div><divclass="line"><aname="l00112"></a><spanclass="lineno"> 112</span> <spanclass="keywordflow">return</span> time_sorted_plan<samplingTechnique>(handle, std::move(plans), variantPack);</div><divclass="line"><aname="l00113"></a><spanclass="lineno"> 113</span> }</div><divclass="line"><aname="l00114"></a><spanclass="lineno"> 114</span> </div><divclass="line"><aname="l00115"></a><spanclass="lineno"> 115</span> <spanclass="keyword">template</span><CudnnFindSamplingTechnique samplingTechnique></div><divclass="line"><aname="l00116"></a><spanclass="lineno"> 116</span> <spanclass="keyword">auto</span></div><divclass="line"><aname="l00117"></a><spanclass="lineno"><aclass="line"href="../../dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html#a3b291ce5e552bf0c736be227065cd8ad"> 117</a></span> <aclass="code"href="../../dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html#a3b291ce5e552bf0c736be227065cd8ad">EngineConfigGenerator::cudnnFindPlan</a>(cudnnHandle_t handle,</div><divclass="line"><aname="l00118"></a><spanclass="lineno"> 118</span> <aclass="code"href="../../de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html">cudnn_frontend::OperationGraph</a>&opGraph,</div><divclass="line"><aname="l00119"></a><spanclass="lineno"> 119</span> <aclass="code"href="../../d0/d20/classcudnn__frontend_1_1VariantPack__v8.html">cudnn_frontend::VariantPack</a><spanclass="keyword">const</span>&variantPack,</div><divclass="line"><aname="l00120"></a><spanclass="lineno"> 120</span> <aclass="code"href="../../df/de1/namespacecudnn__frontend.html#ad31f040777311d1d1a7a2490f23e026e">Predicate</a> pred) -><aclass="code"href="../../df/de1/namespacecudnn__frontend.html#a560644a5c1e6016c509a379ca6e03f05">executionPlans_t</a> {</div><divclass="line"><aname="l00122"></a><spanclass="lineno"> 122</span> <aclass="code"href="../../df/de1/namespacecudnn__frontend.html#a560644a5c1e6016c509a379ca6e03f05">executionPlans_t</a> plans = cudnnGetPlan(handle, opGraph, pred);</div><divclass="line"><aname="l00123"></a><spanclass="lineno"> 123</span> <spanclass="keywordflow">return</span> time_sorted_plan<samplingTechnique>(handle, std::move(plans), variantPack);</div><divclass="line"><aname="l00124"></a><spanclass="lineno"> 124</span> }</div><divclass="line"><aname="l00125"></a><spanclass="lineno"> 125</span> </div><divclass="line"><aname="l00126"></a><spanclass="lineno"> 126</span> <spanclass="keyword">template</span><CudnnFindSamplingTechnique samplingTechnique></div><divclass="line"><aname="l00127"></a><spanclass="lineno"> 127</span> <spanclass="keyword">auto</span></div><divclass="line"><aname="l00128"></a><spanclass="lineno"><aclass="line"href="../../dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html#a4c600ea0cacb969cb0d7168debc5ebc6"> 128</a></span> <aclass="code"href="../../dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html#a4c600ea0cacb969cb0d7168debc5ebc6">EngineConfigGenerator::cudnnFindPlanAndCache</a>(cudnnHandle_t handle,</div><divclass="line"><aname="l00129"></a><spanclass="lineno"> 129</span> <aclass="code"href="../../de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html">cudnn_frontend::OperationGraph</a>&opGraph,</div><divclass="line"><aname="l00130"></a><spanclass="lineno"> 130</span> <aclass="code"href="../../d0/d20/classcudnn__frontend_1_1VariantPack__v8.html">cudnn_frontend::VariantPack</a><spanclass="keyword">const</span>&variantPack,</div><divclass="line"><aname="l00131"></a><spanclass="lineno"> 131</span> <aclass="code"href="../../da/df5/classcudnn__frontend_1_1ExecutionPlanCache__v2.html">cudnn_frontend::ExecutionPlanCache</a>&cache,</div><divclass="line"><aname="l00132"></a><spanclass="lineno"> 132</span> <aclass="code"href="../../df/de1/namespacecudnn__frontend.html#ad31f040777311d1d1a7a2490f23e026e">Predicate</a> pred) -><aclass="code"href="../../d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8.html">cudnn_frontend::ExecutionPlan</a> {</div><divclass="line"><aname="l00134"></a><spanclass="lineno"> 134</span> <spanclass="keyword">auto</span> sorted_plans = cudnnFindPlan<samplingTechnique>(handle, opGraph, variantPack, pred);</div><divclass="line"><aname="l00136"></a><spanclass="lineno"> 136</span> <spanclass="keywordflow">if</span> (cache.is_fastest_plan_stable(opGraph, sorted_plans.front().getTag())) {</div><divclass="line"><aname="l00137"></a><spanclass="lineno"> 137</span>  cache.add_plan_to_cache(opGraph, sorted_plans.front());</div><divclass="line"><aname="l00138"></a><spanclass="lineno"> 138</span>  }</div><divclass="line"><aname="l00139"></a><spanclass="lineno"> 139</span> <spanclass="keywordflow">return</span> sorted_plans.front();</div><divclass="line"><aname="l00140"></a><spanclass="lineno"> 140</span> }</div><divclass="line"><aname="l00141"></a><spanclass="lineno"> 141</span> </div><divclass="line"><aname="l00142"></a><spanclass="lineno"> 142</span> }</div><divclass="ttc"id="namespacecudnn__frontend_html_ab3748fa00b36beec790db7201fdd2ef3a903bfd2e4d1b8ab2a7197be752c618a6"><divclass="ttname"><ahref="../../df/de1/namespacecudnn__frontend.html#ab3748fa00b36beec790db7201fdd2ef3a903bfd2e4d1b8ab2a7197be752c618a6">cudnn_frontend::CudnnFindSamplingTechnique::CUDNN_FIND_SAMPLE_MEDIAN_OF_THREE</a></div><divclass="ttdoc">Sample 3 times and take median. </div></div>
<divclass="ttc"id="namespacecudnn__frontend_html_ac39691550c5659acffd2386354ed18c6"><divclass="ttname"><ahref="../../df/de1/namespacecudnn__frontend.html#ac39691550c5659acffd2386354ed18c6">cudnn_frontend::getLogger</a></div><divclass="ttdeci">ConditionalStreamer & getLogger()</div><divclass="ttdef"><b>Definition:</b><ahref="../../d8/dc4/cudnn__frontend__Logging_8h_source.html#l00072">cudnn_frontend_Logging.h:72</a></div></div>
<divclass="ttc"id="namespacecudnn__frontend_html_ab3748fa00b36beec790db7201fdd2ef3a8199dfa6701edb38f52a74d9e229b43d"><divclass="ttname"><ahref="../../df/de1/namespacecudnn__frontend.html#ab3748fa00b36beec790db7201fdd2ef3a8199dfa6701edb38f52a74d9e229b43d">cudnn_frontend::CudnnFindSamplingTechnique::CUDNN_FIND_SAMPLE_TILL_STABLE</a></div><divclass="ttdoc">Sample multiple times till stable. </div></div>
<divclass="ttc"id="namespacecudnn__frontend_html_ab3748fa00b36beec790db7201fdd2ef3ac8ab707d81df65503b6b0ecc67675158"><divclass="ttname"><ahref="../../df/de1/namespacecudnn__frontend.html#ab3748fa00b36beec790db7201fdd2ef3ac8ab707d81df65503b6b0ecc67675158">cudnn_frontend::CudnnFindSamplingTechnique::CUDNN_FIND_SAMPLE_ONCE</a></div><divclass="ttdoc">Sample once quick but may have unstable values. </div></div>
<!-- iframe showing the search results (closed by default) -->
<divid="MSearchResultsWindow">
<iframesrc="javascript:void(0)"frameborder="0"
name="MSearchResults"id="MSearchResults">
</iframe>
</div>
<divclass="header">
<divclass="headertitle">
<divclass="title">cudnn_frontend::PointWiseDesc_v8 Member List</div></div>
</div><!--header-->
<divclass="contents">
<p>This is the complete list of members for <aclass="el"href="../../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html">cudnn_frontend::PointWiseDesc_v8</a>, including all inherited members.</p>
<pclass="definition">Definition at line <aclass="el"href="../../d5/db8/json_8hpp_source.html#l03822">3822</a> of file <aclass="el"href="../../d5/db8/json_8hpp_source.html">json.hpp</a>.</p>
</div><hr/>The documentation for this struct was generated from the following file:<ul>
<pclass="definition">Definition at line <aclass="el"href="../../d5/db8/json_8hpp_source.html#l03207">3207</a> of file <aclass="el"href="../../d5/db8/json_8hpp_source.html">json.hpp</a>.</p>
<pclass="definition">Definition at line <aclass="el"href="../../d5/db8/json_8hpp_source.html#l03209">3209</a> of file <aclass="el"href="../../d5/db8/json_8hpp_source.html">json.hpp</a>.</p>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>