<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.13">
  <compounddef id="d9/dd3/cudnn__frontend__ExecutionPlanCache_8h" kind="file" language="C++">
    <compoundname>cudnn_frontend_ExecutionPlanCache.h</compoundname>
    <includes local="no">tuple</includes>
    <includes local="no">unordered_map</includes>
    <includes local="no">map</includes>
    <includes local="no">memory</includes>
    <includes local="no">mutex</includes>
    <includes refid="db/d7d/cudnn__frontend__OperationGraph_8h" local="no">cudnn_frontend_OperationGraph.h</includes>
    <includes refid="d6/d51/cudnn__frontend__ExecutionPlan_8h" local="no">cudnn_frontend_ExecutionPlan.h</includes>
    <includedby refid="de/d0c/cudnn__frontend_8h" local="yes">cudnn_frontend.h</includedby>
    <incdepgraph>
      <node id="352">
        <label>functional</label>
      </node>
      <node id="370">
        <label>limits</label>
      </node>
      <node id="375">
        <label>cudnn_frontend_Engine.h</label>
        <link refid="de/d6d/cudnn__frontend__Engine_8h"/>
        <childnode refid="350" relation="include">
        </childnode>
        <childnode refid="351" relation="include">
        </childnode>
        <childnode refid="352" relation="include">
        </childnode>
        <childnode refid="347" relation="include">
        </childnode>
        <childnode refid="353" relation="include">
        </childnode>
        <childnode refid="354" relation="include">
        </childnode>
        <childnode refid="355" relation="include">
        </childnode>
        <childnode refid="356" relation="include">
        </childnode>
        <childnode refid="357" relation="include">
        </childnode>
        <childnode refid="349" relation="include">
        </childnode>
        <childnode refid="360" relation="include">
        </childnode>
      </node>
      <node id="371">
        <label>cudnn_frontend_MatMulDesc.h</label>
        <link refid="d6/d32/cudnn__frontend__MatMulDesc_8h"/>
        <childnode refid="350" relation="include">
        </childnode>
        <childnode refid="351" relation="include">
        </childnode>
        <childnode refid="352" relation="include">
        </childnode>
        <childnode refid="347" relation="include">
        </childnode>
        <childnode refid="353" relation="include">
        </childnode>
        <childnode refid="354" relation="include">
        </childnode>
        <childnode refid="356" relation="include">
        </childnode>
        <childnode refid="357" relation="include">
        </childnode>
        <childnode refid="360" relation="include">
        </childnode>
      </node>
      <node id="356">
        <label>cudnn.h</label>
      </node>
      <node id="369">
        <label>cudnn_frontend_PointWiseDesc.h</label>
        <link refid="da/d5f/cudnn__frontend__PointWiseDesc_8h"/>
        <childnode refid="350" relation="include">
        </childnode>
        <childnode refid="351" relation="include">
        </childnode>
        <childnode refid="352" relation="include">
        </childnode>
        <childnode refid="347" relation="include">
        </childnode>
        <childnode refid="353" relation="include">
        </childnode>
        <childnode refid="354" relation="include">
        </childnode>
        <childnode refid="370" relation="include">
        </childnode>
        <childnode refid="356" relation="include">
        </childnode>
        <childnode refid="357" relation="include">
        </childnode>
        <childnode refid="360" relation="include">
        </childnode>
      </node>
      <node id="362">
        <label>string</label>
      </node>
      <node id="346">
        <label>map</label>
      </node>
      <node id="365">
        <label>cudnn_frontend_Logging.h</label>
        <link refid="d8/dc4/cudnn__frontend__Logging_8h"/>
        <childnode refid="366" relation="include">
        </childnode>
        <childnode refid="367" relation="include">
        </childnode>
        <childnode refid="368" relation="include">
        </childnode>
        <childnode refid="363" relation="include">
        </childnode>
      </node>
      <node id="373">
        <label>cudnn_frontend_Tensor.h</label>
        <link refid="d3/d98/cudnn__frontend__Tensor_8h"/>
        <childnode refid="350" relation="include">
        </childnode>
        <childnode refid="351" relation="include">
        </childnode>
        <childnode refid="352" relation="include">
        </childnode>
        <childnode refid="347" relation="include">
        </childnode>
        <childnode refid="353" relation="include">
        </childnode>
        <childnode refid="354" relation="include">
        </childnode>
        <childnode refid="360" relation="include">
        </childnode>
      </node>
      <node id="361">
        <label>exception</label>
      </node>
      <node id="367">
        <label>fstream</label>
      </node>
      <node id="364">
        <label>ostream</label>
      </node>
      <node id="343">
        <label>cudnn_frontend_ExecutionPlanCache.h</label>
        <link refid="d9/dd3/cudnn__frontend__ExecutionPlanCache_8h"/>
        <childnode refid="344" relation="include">
        </childnode>
        <childnode refid="345" relation="include">
        </childnode>
        <childnode refid="346" relation="include">
        </childnode>
        <childnode refid="347" relation="include">
        </childnode>
        <childnode refid="348" relation="include">
        </childnode>
        <childnode refid="349" relation="include">
        </childnode>
        <childnode refid="374" relation="include">
        </childnode>
      </node>
      <node id="358">
        <label>cudnn_frontend_Operation.h</label>
        <link refid="da/d5a/cudnn__frontend__Operation_8h"/>
        <childnode refid="350" relation="include">
        </childnode>
        <childnode refid="351" relation="include">
        </childnode>
        <childnode refid="352" relation="include">
        </childnode>
        <childnode refid="347" relation="include">
        </childnode>
        <childnode refid="353" relation="include">
        </childnode>
        <childnode refid="354" relation="include">
        </childnode>
        <childnode refid="356" relation="include">
        </childnode>
        <childnode refid="357" relation="include">
        </childnode>
        <childnode refid="359" relation="include">
        </childnode>
        <childnode refid="369" relation="include">
        </childnode>
        <childnode refid="371" relation="include">
        </childnode>
        <childnode refid="372" relation="include">
        </childnode>
        <childnode refid="373" relation="include">
        </childnode>
        <childnode refid="360" relation="include">
        </childnode>
      </node>
      <node id="374">
        <label>cudnn_frontend_ExecutionPlan.h</label>
        <link refid="d6/d51/cudnn__frontend__ExecutionPlan_8h"/>
        <childnode refid="350" relation="include">
        </childnode>
        <childnode refid="351" relation="include">
        </childnode>
        <childnode refid="352" relation="include">
        </childnode>
        <childnode refid="347" relation="include">
        </childnode>
        <childnode refid="353" relation="include">
        </childnode>
        <childnode refid="354" relation="include">
        </childnode>
        <childnode refid="356" relation="include">
        </childnode>
        <childnode refid="357" relation="include">
        </childnode>
        <childnode refid="375" relation="include">
        </childnode>
        <childnode refid="360" relation="include">
        </childnode>
      </node>
      <node id="344">
        <label>tuple</label>
      </node>
      <node id="355">
        <label>vector</label>
      </node>
      <node id="359">
        <label>cudnn_frontend_ConvDesc.h</label>
        <link refid="d1/de7/cudnn__frontend__ConvDesc_8h"/>
        <childnode refid="350" relation="include">
        </childnode>
        <childnode refid="351" relation="include">
        </childnode>
        <childnode refid="352" relation="include">
        </childnode>
        <childnode refid="347" relation="include">
        </childnode>
        <childnode refid="353" relation="include">
        </childnode>
        <childnode refid="354" relation="include">
        </childnode>
        <childnode refid="356" relation="include">
        </childnode>
        <childnode refid="357" relation="include">
        </childnode>
        <childnode refid="360" relation="include">
        </childnode>
      </node>
      <node id="349">
        <label>cudnn_frontend_OperationGraph.h</label>
        <link refid="db/d7d/cudnn__frontend__OperationGraph_8h"/>
        <childnode refid="350" relation="include">
        </childnode>
        <childnode refid="351" relation="include">
        </childnode>
        <childnode refid="352" relation="include">
        </childnode>
        <childnode refid="347" relation="include">
        </childnode>
        <childnode refid="353" relation="include">
        </childnode>
        <childnode refid="354" relation="include">
        </childnode>
        <childnode refid="355" relation="include">
        </childnode>
        <childnode refid="356" relation="include">
        </childnode>
        <childnode refid="357" relation="include">
        </childnode>
        <childnode refid="358" relation="include">
        </childnode>
        <childnode refid="360" relation="include">
        </childnode>
      </node>
      <node id="357">
        <label>cudnn_backend.h</label>
      </node>
      <node id="354">
        <label>utility</label>
      </node>
      <node id="351">
        <label>array</label>
      </node>
      <node id="353">
        <label>sstream</label>
      </node>
      <node id="372">
        <label>cudnn_frontend_ReductionDesc.h</label>
        <link refid="db/da7/cudnn__frontend__ReductionDesc_8h"/>
        <childnode refid="350" relation="include">
        </childnode>
        <childnode refid="351" relation="include">
        </childnode>
        <childnode refid="352" relation="include">
        </childnode>
        <childnode refid="347" relation="include">
        </childnode>
        <childnode refid="353" relation="include">
        </childnode>
        <childnode refid="354" relation="include">
        </childnode>
        <childnode refid="356" relation="include">
        </childnode>
        <childnode refid="357" relation="include">
        </childnode>
        <childnode refid="360" relation="include">
        </childnode>
      </node>
      <node id="366">
        <label>iostream</label>
      </node>
      <node id="345">
        <label>unordered_map</label>
      </node>
      <node id="348">
        <label>mutex</label>
      </node>
      <node id="350">
        <label>algorithm</label>
      </node>
      <node id="368">
        <label>cstring</label>
      </node>
      <node id="360">
        <label>cudnn_frontend_utils.h</label>
        <link refid="df/d17/cudnn__frontend__utils_8h"/>
        <childnode refid="361" relation="include">
        </childnode>
        <childnode refid="362" relation="include">
        </childnode>
        <childnode refid="355" relation="include">
        </childnode>
        <childnode refid="363" relation="include">
        </childnode>
        <childnode refid="365" relation="include">
        </childnode>
      </node>
      <node id="347">
        <label>memory</label>
      </node>
      <node id="363">
        <label>cudnn_backend_base.h</label>
        <link refid="dc/d11/cudnn__backend__base_8h"/>
        <childnode refid="364" relation="include">
        </childnode>
        <childnode refid="356" relation="include">
        </childnode>
      </node>
    </incdepgraph>
    <invincdepgraph>
      <node id="380">
        <label>cudnn_frontend_get_plan.h</label>
        <link refid="d2/d3b/cudnn__frontend__get__plan_8h"/>
      </node>
      <node id="378">
        <label>cudnn_frontend_EngineConfigGenerator.h</label>
        <link refid="de/d1e/cudnn__frontend__EngineConfigGenerator_8h"/>
        <childnode refid="379" relation="include">
        </childnode>
        <childnode refid="380" relation="include">
        </childnode>
      </node>
      <node id="376">
        <label>cudnn_frontend_ExecutionPlanCache.h</label>
        <link refid="d9/dd3/cudnn__frontend__ExecutionPlanCache_8h"/>
        <childnode refid="377" relation="include">
        </childnode>
      </node>
      <node id="377">
        <label>cudnn_frontend.h</label>
        <link refid="de/d0c/cudnn__frontend_8h"/>
        <childnode refid="378" relation="include">
        </childnode>
      </node>
      <node id="379">
        <label>cudnn_frontend_find_plan.h</label>
        <link refid="d3/d6b/cudnn__frontend__find__plan_8h"/>
      </node>
    </invincdepgraph>
    <innerclass refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1" prot="public">cudnn_frontend::ExecutionPlanCache_v1</innerclass>
    <innerclass refid="d4/d73/structcudnn__frontend_1_1ExecutionPlanCache__v1_1_1compare" prot="protected">cudnn_frontend::ExecutionPlanCache_v1::compare</innerclass>
    <innerclass refid="da/df5/classcudnn__frontend_1_1ExecutionPlanCache__v2" prot="public">cudnn_frontend::ExecutionPlanCache_v2</innerclass>
    <innernamespace refid="df/de1/namespacecudnn__frontend">cudnn_frontend</innernamespace>
    <briefdescription>
    </briefdescription>
    <detaileddescription>
    </detaileddescription>
    <programlisting>
<codeline lineno="1"><highlight class="comment">/*</highlight></codeline>
<codeline lineno="2"><highlight class="comment"><sp/>*<sp/>Copyright<sp/>(c)<sp/>2021,<sp/>NVIDIA<sp/>CORPORATION.<sp/>All<sp/>rights<sp/>reserved.</highlight></codeline>
<codeline lineno="3"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="4"><highlight class="comment"><sp/>*<sp/>Permission<sp/>is<sp/>hereby<sp/>granted,<sp/>free<sp/>of<sp/>charge,<sp/>to<sp/>any<sp/>person<sp/>obtaining<sp/>a</highlight></codeline>
<codeline lineno="5"><highlight class="comment"><sp/>*<sp/>copy<sp/>of<sp/>this<sp/>software<sp/>and<sp/>associated<sp/>documentation<sp/>files<sp/>(the<sp/>&quot;Software&quot;),</highlight></codeline>
<codeline lineno="6"><highlight class="comment"><sp/>*<sp/>to<sp/>deal<sp/>in<sp/>the<sp/>Software<sp/>without<sp/>restriction,<sp/>including<sp/>without<sp/>limitation</highlight></codeline>
<codeline lineno="7"><highlight class="comment"><sp/>*<sp/>the<sp/>rights<sp/>to<sp/>use,<sp/>copy,<sp/>modify,<sp/>merge,<sp/>publish,<sp/>distribute,<sp/>sublicense,</highlight></codeline>
<codeline lineno="8"><highlight class="comment"><sp/>*<sp/>and/or<sp/>sell<sp/>copies<sp/>of<sp/>the<sp/>Software,<sp/>and<sp/>to<sp/>permit<sp/>persons<sp/>to<sp/>whom<sp/>the</highlight></codeline>
<codeline lineno="9"><highlight class="comment"><sp/>*<sp/>Software<sp/>is<sp/>furnished<sp/>to<sp/>do<sp/>so,<sp/>subject<sp/>to<sp/>the<sp/>following<sp/>conditions:</highlight></codeline>
<codeline lineno="10"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="11"><highlight class="comment"><sp/>*<sp/>The<sp/>above<sp/>copyright<sp/>notice<sp/>and<sp/>this<sp/>permission<sp/>notice<sp/>shall<sp/>be<sp/>included<sp/>in</highlight></codeline>
<codeline lineno="12"><highlight class="comment"><sp/>*<sp/>all<sp/>copies<sp/>or<sp/>substantial<sp/>portions<sp/>of<sp/>the<sp/>Software.</highlight></codeline>
<codeline lineno="13"><highlight class="comment"><sp/>*</highlight></codeline>
<codeline lineno="14"><highlight class="comment"><sp/>*<sp/>THE<sp/>SOFTWARE<sp/>IS<sp/>PROVIDED<sp/>&quot;AS<sp/>IS&quot;,<sp/>WITHOUT<sp/>WARRANTY<sp/>OF<sp/>ANY<sp/>KIND,<sp/>EXPRESS<sp/>OR</highlight></codeline>
<codeline lineno="15"><highlight class="comment"><sp/>*<sp/>IMPLIED,<sp/>INCLUDING<sp/>BUT<sp/>NOT<sp/>LIMITED<sp/>TO<sp/>THE<sp/>WARRANTIES<sp/>OF<sp/>MERCHANTABILITY,</highlight></codeline>
<codeline lineno="16"><highlight class="comment"><sp/>*<sp/>FITNESS<sp/>FOR<sp/>A<sp/>PARTICULAR<sp/>PURPOSE<sp/>AND<sp/>NONINFRINGEMENT.<sp/><sp/>IN<sp/>NO<sp/>EVENT<sp/>SHALL</highlight></codeline>
<codeline lineno="17"><highlight class="comment"><sp/>*<sp/>THE<sp/>AUTHORS<sp/>OR<sp/>COPYRIGHT<sp/>HOLDERS<sp/>BE<sp/>LIABLE<sp/>FOR<sp/>ANY<sp/>CLAIM,<sp/>DAMAGES<sp/>OR<sp/>OTHER</highlight></codeline>
<codeline lineno="18"><highlight class="comment"><sp/>*<sp/>LIABILITY,<sp/>WHETHER<sp/>IN<sp/>AN<sp/>ACTION<sp/>OF<sp/>CONTRACT,<sp/>TORT<sp/>OR<sp/>OTHERWISE,<sp/>ARISING</highlight></codeline>
<codeline lineno="19"><highlight class="comment"><sp/>*<sp/>FROM,<sp/>OUT<sp/>OF<sp/>OR<sp/>IN<sp/>CONNECTION<sp/>WITH<sp/>THE<sp/>SOFTWARE<sp/>OR<sp/>THE<sp/>USE<sp/>OR<sp/>OTHER</highlight></codeline>
<codeline lineno="20"><highlight class="comment"><sp/>*<sp/>DEALINGS<sp/>IN<sp/>THE<sp/>SOFTWARE.</highlight></codeline>
<codeline lineno="21"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="22"><highlight class="normal"></highlight></codeline>
<codeline lineno="23"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;tuple&gt;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="24"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;unordered_map&gt;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="25"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;map&gt;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="26"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;memory&gt;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="27"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;mutex&gt;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="28"><highlight class="normal"></highlight></codeline>
<codeline lineno="29"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;<ref refid="db/d7d/cudnn__frontend__OperationGraph_8h" kindref="compound">cudnn_frontend_OperationGraph.h</ref>&gt;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="30"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;<ref refid="d6/d51/cudnn__frontend__ExecutionPlan_8h" kindref="compound">cudnn_frontend_ExecutionPlan.h</ref>&gt;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="31"><highlight class="normal"></highlight></codeline>
<codeline lineno="37"></codeline>
<codeline lineno="40"><highlight class="comment">/***</highlight></codeline>
<codeline lineno="41"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>device_id_0<sp/>Operation_Graph0<sp/>(conv_fprop)</highlight></codeline>
<codeline lineno="42"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="43"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>|<sp/>Feature_vector_type0_val0<sp/><sp/><sp/>|<sp/><sp/>Plan<sp/>A0<sp/><sp/><sp/>|</highlight></codeline>
<codeline lineno="44"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>|<sp/>Feature_vector_type0_val1<sp/><sp/><sp/>|<sp/><sp/>Plan<sp/>B0<sp/><sp/><sp/>|</highlight></codeline>
<codeline lineno="45"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>===============================================================================</highlight></codeline>
<codeline lineno="46"><highlight class="comment"><sp/>*<sp/></highlight></codeline>
<codeline lineno="47"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>device_id_0<sp/>Operation_Graph1<sp/>(dgrad)<sp/><sp/></highlight></codeline>
<codeline lineno="48"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="49"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>|<sp/>Feature_vector_type1_val0<sp/><sp/><sp/>|<sp/><sp/>Plan<sp/>A1<sp/><sp/><sp/>|</highlight></codeline>
<codeline lineno="50"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>|<sp/>Feature_vector_type1_val1<sp/><sp/><sp/>|<sp/><sp/>Plan<sp/>B1<sp/><sp/><sp/>|</highlight></codeline>
<codeline lineno="51"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>===============================================================================</highlight></codeline>
<codeline lineno="52"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/></highlight></codeline>
<codeline lineno="53"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>device_id_0<sp/>Operation_Graph2<sp/>(wgrad)<sp/><sp/></highlight></codeline>
<codeline lineno="54"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="55"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>|<sp/>Feature_vector_type2_val0<sp/><sp/><sp/>|<sp/><sp/>Plan<sp/>B2<sp/><sp/><sp/>|<sp/><sp/></highlight></codeline>
<codeline lineno="56"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>===============================================================================</highlight></codeline>
<codeline lineno="57"><highlight class="comment"><sp/>*<sp/></highlight></codeline>
<codeline lineno="58"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>device_id_1<sp/>Operation_Graph0<sp/>(conv_fprop)</highlight></codeline>
<codeline lineno="59"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="60"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>|<sp/>Feature_vector_type0_val0<sp/><sp/><sp/>|<sp/><sp/>Plan<sp/>A0<sp/><sp/><sp/>|</highlight></codeline>
<codeline lineno="61"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>|<sp/>Feature_vector_type0_val1<sp/><sp/><sp/>|<sp/><sp/>Plan<sp/>B0<sp/><sp/><sp/>|</highlight></codeline>
<codeline lineno="62"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>===============================================================================</highlight></codeline>
<codeline lineno="63"><highlight class="comment"><sp/>*<sp/></highlight></codeline>
<codeline lineno="64"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>device_id_1<sp/>Operation_Graph1<sp/>(dgrad)<sp/><sp/></highlight></codeline>
<codeline lineno="65"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="66"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>|<sp/>Feature_vector_type1_val0<sp/><sp/><sp/>|<sp/><sp/>Plan<sp/>A1<sp/><sp/><sp/>|</highlight></codeline>
<codeline lineno="67"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>|<sp/>Feature_vector_type1_val1<sp/><sp/><sp/>|<sp/><sp/>Plan<sp/>B1<sp/><sp/><sp/>|</highlight></codeline>
<codeline lineno="68"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>===============================================================================</highlight></codeline>
<codeline lineno="69"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/></highlight></codeline>
<codeline lineno="70"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>device_id_1<sp/>Operation_Graph2<sp/>(wgrad)<sp/><sp/></highlight></codeline>
<codeline lineno="71"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>-------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="72"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>|<sp/>Feature_vector_type2_val0<sp/><sp/><sp/>|<sp/><sp/>Plan<sp/>B2<sp/><sp/><sp/>|<sp/><sp/></highlight></codeline>
<codeline lineno="73"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/>===============================================================================</highlight></codeline>
<codeline lineno="74"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="75"><highlight class="normal"></highlight></codeline>
<codeline lineno="76"><highlight class="normal"></highlight><highlight class="keyword">namespace<sp/></highlight><highlight class="normal"><ref refid="df/de1/namespacecudnn__frontend" kindref="compound">cudnn_frontend</ref><sp/>{</highlight></codeline>
<codeline lineno="77"><highlight class="normal"></highlight></codeline>
<codeline lineno="79" refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1" refkind="compound"><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1" kindref="compound">ExecutionPlanCache_v1</ref><sp/>{</highlight></codeline>
<codeline lineno="80"><highlight class="normal"></highlight></codeline>
<codeline lineno="81"><highlight class="normal"><sp/><sp/><sp/></highlight><highlight class="keyword">protected</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="82" refid="d4/d73/structcudnn__frontend_1_1ExecutionPlanCache__v1_1_1compare" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="d4/d73/structcudnn__frontend_1_1ExecutionPlanCache__v1_1_1compare" kindref="compound">compare</ref><sp/>{</highlight></codeline>
<codeline lineno="83" refid="d4/d73/structcudnn__frontend_1_1ExecutionPlanCache__v1_1_1compare_1a7b5136a809e5d8f70b5bcc4cc1a1449e" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/><ref refid="d4/d73/structcudnn__frontend_1_1ExecutionPlanCache__v1_1_1compare_1a7b5136a809e5d8f70b5bcc4cc1a1449e" kindref="member">operator ()</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="df/de1/namespacecudnn__frontend_1a360ee0c724a479660a6bd0815af46ac1" kindref="member">feature_vector_t</ref><sp/>&amp;<sp/>fv1,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="df/de1/namespacecudnn__frontend_1a360ee0c724a479660a6bd0815af46ac1" kindref="member">feature_vector_t</ref><sp/>&amp;fv2)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
<codeline lineno="84"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(uint32_t<sp/>i<sp/>=<sp/>0u;<sp/>i<sp/>&lt;<sp/>fv1.size();<sp/>i++)<sp/>{</highlight></codeline>
<codeline lineno="85"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(fv1[i]<sp/>&lt;<sp/>fv2[i])<sp/>{</highlight></codeline>
<codeline lineno="86"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">true</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="87"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="88"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="89"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="90"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="91"><highlight class="normal"></highlight></codeline>
<codeline lineno="92" refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1_1a968bccc60a1acf84c58befe06da7c553" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>std::string<sp/><ref refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1_1a968bccc60a1acf84c58befe06da7c553" kindref="member">name</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;plan_cache_[unnamed]&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="93"><highlight class="normal"></highlight></codeline>
<codeline lineno="96" refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1_1a48b14498b68c2ad2030e38a6ccb98c15" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">using</highlight><highlight class="normal"><sp/><ref refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1_1a48b14498b68c2ad2030e38a6ccb98c15" kindref="member">FeatureVectorToPlanMap</ref><sp/>=<sp/>std::map&lt;cudnn_frontend::feature_vector_t,<sp/>cudnn_frontend::ExecutionPlan,<sp/>cudnn_frontend::ExecutionPlanCache_v1::compare&gt;;</highlight></codeline>
<codeline lineno="97" refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1_1a13e174d7eceaa7b06b7e206683d084c5" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1_1a48b14498b68c2ad2030e38a6ccb98c15" kindref="member">FeatureVectorToPlanMap</ref><sp/><sp/><ref refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1_1a13e174d7eceaa7b06b7e206683d084c5" kindref="member">cache</ref>;</highlight></codeline>
<codeline lineno="98"><highlight class="normal"></highlight></codeline>
<codeline lineno="99" refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1_1a43ca7f73d6656423a3c0fc232d6ab4b5" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">mutable</highlight><highlight class="normal"><sp/>std::mutex<sp/><ref refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1_1a43ca7f73d6656423a3c0fc232d6ab4b5" kindref="member">cache_mutex</ref>;</highlight></codeline>
<codeline lineno="100"><highlight class="normal"></highlight></codeline>
<codeline lineno="101"><highlight class="normal"><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="102"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">virtual</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/></highlight></codeline>
<codeline lineno="103" refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1_1a3cf1a9252e9f57d933f6b1918bf26571" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1_1a3cf1a9252e9f57d933f6b1918bf26571" kindref="member">is_fastest_plan_stable</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="de/dd9/classcudnn__frontend_1_1OperationGraph__v8" kindref="compound">cudnn_frontend::OperationGraph</ref><sp/>&amp;op_graph,</highlight></codeline>
<codeline lineno="104"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::string<sp/>&amp;<sp/>tag)<sp/>{</highlight></codeline>
<codeline lineno="105"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">true</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="106"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="107"><highlight class="normal"></highlight></codeline>
<codeline lineno="108" refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1_1a0a60f67637646017b056301c3d1424db" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1_1a0a60f67637646017b056301c3d1424db" kindref="member">add_plan_to_cache</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="de/dd9/classcudnn__frontend_1_1OperationGraph__v8" kindref="compound">cudnn_frontend::OperationGraph</ref><sp/>&amp;op_graph,</highlight></codeline>
<codeline lineno="109"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8" kindref="compound">cudnn_frontend::ExecutionPlan</ref><sp/>&amp;plan)<sp/>{</highlight></codeline>
<codeline lineno="110"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::lock_guard&lt;std::mutex&gt;<sp/>guard(cache_mutex);</highlight></codeline>
<codeline lineno="111"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>cache.insert(std::make_pair(op_graph.<ref refid="de/dd9/classcudnn__frontend_1_1OperationGraph__v8_1a323f652e94a96660d0186be02561d09f" kindref="member">getFeatureVector</ref>(),plan));</highlight></codeline>
<codeline lineno="112"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="df/de1/namespacecudnn__frontend_1ac39691550c5659acffd2386354ed18c6" kindref="member">getLogger</ref>()<sp/>&lt;&lt;<sp/></highlight><highlight class="stringliteral">&quot;[cudnn_frontend]<sp/>Added<sp/>to<sp/>&quot;</highlight><highlight class="normal"><sp/>&lt;&lt;<sp/>name<sp/>&lt;&lt;<sp/></highlight><highlight class="stringliteral">&quot;<sp/>&quot;</highlight><highlight class="normal"><sp/>&lt;&lt;<sp/>op_graph.<ref refid="de/dd9/classcudnn__frontend_1_1OperationGraph__v8_1a19fd5ed99ab4053c8a178bd33843460a" kindref="member">getTag</ref>()<sp/>&lt;&lt;<sp/>std::endl;</highlight></codeline>
<codeline lineno="113"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="114"><highlight class="normal"></highlight></codeline>
<codeline lineno="115" refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1_1aa5bc2d3bd9e86b2f17cfea2d3ee41d65" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1_1aa5bc2d3bd9e86b2f17cfea2d3ee41d65" kindref="member">ExecutionPlanCache_v1</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*<sp/>name_)<sp/>{</highlight></codeline>
<codeline lineno="116"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>name<sp/>=<sp/>name_;</highlight></codeline>
<codeline lineno="117"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="118"><highlight class="normal"></highlight></codeline>
<codeline lineno="119" refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1_1a818a43f69d0fe6068a0cbfe623367753" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::string<sp/>&amp;<sp/><ref refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1_1a818a43f69d0fe6068a0cbfe623367753" kindref="member">get_name</ref>()</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
<codeline lineno="120"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1_1a968bccc60a1acf84c58befe06da7c553" kindref="member">name</ref>;</highlight></codeline>
<codeline lineno="121"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="122"><highlight class="normal"></highlight></codeline>
<codeline lineno="123"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>Plan<sp/>is<sp/>the<sp/>output<sp/>here.</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="124" refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1_1a86e9eeaddb1da051c26f386469a3e293" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/><ref refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1_1a86e9eeaddb1da051c26f386469a3e293" kindref="member">get_plan_from_cache</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="de/dd9/classcudnn__frontend_1_1OperationGraph__v8" kindref="compound">cudnn_frontend::OperationGraph</ref><sp/>&amp;op_graph,<sp/></highlight></codeline>
<codeline lineno="125"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8" kindref="compound">cudnn_frontend::ExecutionPlan</ref><sp/>*&amp;plan)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
<codeline lineno="126"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>{</highlight></codeline>
<codeline lineno="127"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::lock_guard&lt;std::mutex&gt;<sp/>guard(cache_mutex);</highlight></codeline>
<codeline lineno="128"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/>it<sp/>=<sp/>cache.find(op_graph.<ref refid="de/dd9/classcudnn__frontend_1_1OperationGraph__v8_1a323f652e94a96660d0186be02561d09f" kindref="member">getFeatureVector</ref>());</highlight></codeline>
<codeline lineno="129"><highlight class="normal"></highlight></codeline>
<codeline lineno="130"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(it<sp/>==<sp/>cache.end())<sp/>{</highlight></codeline>
<codeline lineno="131"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="df/de1/namespacecudnn__frontend_1ac39691550c5659acffd2386354ed18c6" kindref="member">getLogger</ref>()<sp/>&lt;&lt;<sp/></highlight><highlight class="stringliteral">&quot;[cudnn_frontend]<sp/>Cached<sp/>Plan<sp/>Not<sp/>Found<sp/>in<sp/>&quot;</highlight><highlight class="normal"><sp/>&lt;&lt;<sp/>name<sp/>&lt;&lt;<sp/>std::endl;</highlight></codeline>
<codeline lineno="132"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">false</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="133"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="134"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>plan<sp/>=<sp/>&amp;(it-&gt;second);</highlight></codeline>
<codeline lineno="135"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="136"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="df/de1/namespacecudnn__frontend_1ac39691550c5659acffd2386354ed18c6" kindref="member">getLogger</ref>()<sp/>&lt;&lt;<sp/></highlight><highlight class="stringliteral">&quot;[cudnn_frontend]<sp/>Cached<sp/>Plan<sp/>Found<sp/>in<sp/>&quot;</highlight><highlight class="normal"><sp/>&lt;&lt;<sp/>name<sp/>&lt;&lt;<sp/>std::endl;</highlight></codeline>
<codeline lineno="137"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">true</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="138"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="139"><highlight class="normal">};</highlight></codeline>
<codeline lineno="140"><highlight class="normal"></highlight></codeline>
<codeline lineno="141" refid="da/df5/classcudnn__frontend_1_1ExecutionPlanCache__v2" refkind="compound"><highlight class="normal"></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="da/df5/classcudnn__frontend_1_1ExecutionPlanCache__v2" kindref="compound">ExecutionPlanCache_v2</ref><sp/>:<sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal"><sp/><ref refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1" kindref="compound">ExecutionPlanCache_v1</ref><sp/>{</highlight></codeline>
<codeline lineno="142"><highlight class="normal"></highlight></codeline>
<codeline lineno="143" refid="da/df5/classcudnn__frontend_1_1ExecutionPlanCache__v2_1a284ee8506331e454a8f42550197b88cd" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">using</highlight><highlight class="normal"><sp/><ref refid="da/df5/classcudnn__frontend_1_1ExecutionPlanCache__v2_1a284ee8506331e454a8f42550197b88cd" kindref="member">SaturationTracker</ref><sp/>=<sp/>std::map&lt;std::pair&lt;cudnn_frontend::feature_vector_t,<sp/>std::string&gt;,<sp/>int32_t&gt;;</highlight></codeline>
<codeline lineno="144" refid="da/df5/classcudnn__frontend_1_1ExecutionPlanCache__v2_1a41550a4eec664cb3df6d9a676af0a110" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="da/df5/classcudnn__frontend_1_1ExecutionPlanCache__v2_1a284ee8506331e454a8f42550197b88cd" kindref="member">SaturationTracker</ref><sp/><ref refid="da/df5/classcudnn__frontend_1_1ExecutionPlanCache__v2_1a41550a4eec664cb3df6d9a676af0a110" kindref="member">tracker</ref>;</highlight></codeline>
<codeline lineno="145"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline>
<codeline lineno="146" refid="da/df5/classcudnn__frontend_1_1ExecutionPlanCache__v2_1ac1dbd7a4c056ab5b1225672c39bf69d0" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/>int32_t<sp/>saturationCount<sp/>=<sp/>1;</highlight></codeline>
<codeline lineno="147"><highlight class="normal"></highlight></codeline>
<codeline lineno="148"><highlight class="normal"><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="149"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">virtual</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/></highlight></codeline>
<codeline lineno="150" refid="da/df5/classcudnn__frontend_1_1ExecutionPlanCache__v2_1a75f65c7d922d206acf28d88bff53e4fe" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="da/df5/classcudnn__frontend_1_1ExecutionPlanCache__v2_1a75f65c7d922d206acf28d88bff53e4fe" kindref="member">is_fastest_plan_stable</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="de/dd9/classcudnn__frontend_1_1OperationGraph__v8" kindref="compound">cudnn_frontend::OperationGraph</ref><sp/>&amp;op_graph,</highlight></codeline>
<codeline lineno="151"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::string<sp/>&amp;<sp/>tag)<sp/>{</highlight></codeline>
<codeline lineno="152"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(saturationCount<sp/>==<sp/>1)<sp/>{</highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">true</highlight><highlight class="normal">;}<sp/></highlight><highlight class="comment">//<sp/>Special<sp/>case.<sp/>Always<sp/>add<sp/>to<sp/>the<sp/>cache.</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="153"><highlight class="normal"></highlight></codeline>
<codeline lineno="154"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>If<sp/>plan<sp/>cache<sp/>is<sp/>already<sp/>created<sp/>for<sp/>the<sp/>op_graph<sp/>no<sp/>need<sp/>to<sp/>update.</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="155"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>Ideally,<sp/>one<sp/>will<sp/>auto-tune<sp/>only<sp/>if<sp/>the<sp/>plan<sp/>cache<sp/>has<sp/>no<sp/>plan<sp/>for<sp/>the<sp/>op_graph.</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="156"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8" kindref="compound">cudnn_frontend::ExecutionPlan</ref><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>*plan<sp/>=<sp/></highlight><highlight class="keyword">nullptr</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="157"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(<ref refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1_1a86e9eeaddb1da051c26f386469a3e293" kindref="member">get_plan_from_cache</ref>(op_graph,<sp/>plan))<sp/>{</highlight></codeline>
<codeline lineno="158"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="df/de1/namespacecudnn__frontend_1ac39691550c5659acffd2386354ed18c6" kindref="member">getLogger</ref>()<sp/>&lt;&lt;<sp/></highlight><highlight class="stringliteral">&quot;[cudnn_frontend]<sp/>SaturationTracker<sp/>&quot;</highlight><highlight class="normal"><sp/>&lt;&lt;<sp/><ref refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1_1a968bccc60a1acf84c58befe06da7c553" kindref="member">name</ref><sp/>&lt;&lt;<sp/></highlight><highlight class="stringliteral">&quot;<sp/>&quot;</highlight><highlight class="normal"><sp/>&lt;&lt;<sp/>op_graph.<ref refid="de/dd9/classcudnn__frontend_1_1OperationGraph__v8_1a19fd5ed99ab4053c8a178bd33843460a" kindref="member">getTag</ref>()<sp/>&lt;&lt;<sp/></highlight><highlight class="stringliteral">&quot;<sp/>&quot;</highlight><highlight class="normal"><sp/>&lt;&lt;<sp/>tag<sp/>&lt;&lt;<sp/></highlight><highlight class="stringliteral">&quot;<sp/>plan<sp/>already<sp/>in<sp/>cache.&quot;</highlight><highlight class="normal"><sp/>&lt;&lt;<sp/>std::endl;</highlight></codeline>
<codeline lineno="159"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">false</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="160"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="161"><highlight class="normal"></highlight></codeline>
<codeline lineno="162"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>Lock<sp/>the<sp/>cache<sp/>and<sp/>increase<sp/>the<sp/>count<sp/>till<sp/>we<sp/>saturate</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="163"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::lock_guard&lt;std::mutex&gt;<sp/>guard(<ref refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1_1a43ca7f73d6656423a3c0fc232d6ab4b5" kindref="member">cache_mutex</ref>);</highlight></codeline>
<codeline lineno="164"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/>cnt<sp/>=<sp/>tracker[std::make_pair(op_graph.<ref refid="de/dd9/classcudnn__frontend_1_1OperationGraph__v8_1a323f652e94a96660d0186be02561d09f" kindref="member">getFeatureVector</ref>(),tag)]<sp/>+=<sp/>1;</highlight></codeline>
<codeline lineno="165"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="df/de1/namespacecudnn__frontend_1ac39691550c5659acffd2386354ed18c6" kindref="member">getLogger</ref>()<sp/>&lt;&lt;<sp/></highlight><highlight class="stringliteral">&quot;[cudnn_frontend]<sp/>SaturationTracker<sp/>&quot;</highlight><highlight class="normal"><sp/>&lt;&lt;<sp/><ref refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1_1a968bccc60a1acf84c58befe06da7c553" kindref="member">name</ref><sp/>&lt;&lt;<sp/></highlight><highlight class="stringliteral">&quot;<sp/>&quot;</highlight><highlight class="normal"><sp/>&lt;&lt;<sp/>op_graph.<ref refid="de/dd9/classcudnn__frontend_1_1OperationGraph__v8_1a19fd5ed99ab4053c8a178bd33843460a" kindref="member">getTag</ref>()<sp/>&lt;&lt;<sp/></highlight><highlight class="stringliteral">&quot;<sp/>&quot;</highlight><highlight class="normal"><sp/>&lt;&lt;<sp/>tag<sp/>&lt;&lt;<sp/></highlight><highlight class="stringliteral">&quot;<sp/>&quot;</highlight><highlight class="normal"><sp/>&lt;&lt;<sp/>cnt<sp/>&lt;&lt;<sp/>std::endl;</highlight></codeline>
<codeline lineno="166"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>cnt<sp/>&gt;=<sp/>saturationCount;</highlight></codeline>
<codeline lineno="167"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="168"><highlight class="normal"></highlight></codeline>
<codeline lineno="169" refid="da/df5/classcudnn__frontend_1_1ExecutionPlanCache__v2_1a6caf67e9fbf0ab2349634eca4e5f939b" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="da/df5/classcudnn__frontend_1_1ExecutionPlanCache__v2_1a6caf67e9fbf0ab2349634eca4e5f939b" kindref="member">set_saturation_count</ref>(int32_t<sp/>count)<sp/>{</highlight></codeline>
<codeline lineno="170"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>saturationCount<sp/>=<sp/>count;</highlight></codeline>
<codeline lineno="171"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="172"><highlight class="normal"></highlight></codeline>
<codeline lineno="173" refid="da/df5/classcudnn__frontend_1_1ExecutionPlanCache__v2_1a3f315c2f2ef109db63cfb16965931652" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="da/df5/classcudnn__frontend_1_1ExecutionPlanCache__v2_1a3f315c2f2ef109db63cfb16965931652" kindref="member">ExecutionPlanCache_v2</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*<sp/>name_)<sp/>:<sp/><ref refid="dc/d6e/classcudnn__frontend_1_1ExecutionPlanCache__v1" kindref="compound">ExecutionPlanCache_v1</ref>(name_)<sp/>{</highlight></codeline>
<codeline lineno="174"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="175"><highlight class="normal"></highlight></codeline>
<codeline lineno="176"><highlight class="normal">};</highlight></codeline>
<codeline lineno="177"><highlight class="normal"></highlight></codeline>
<codeline lineno="178" refid="df/de1/namespacecudnn__frontend_1ab36c7aba5bedf33ef3b51c955685d1ce" refkind="member"><highlight class="normal"></highlight><highlight class="keyword">using</highlight><highlight class="normal"><sp/><ref refid="da/df5/classcudnn__frontend_1_1ExecutionPlanCache__v2" kindref="compound">ExecutionPlanCache</ref><sp/>=<sp/><ref refid="da/df5/classcudnn__frontend_1_1ExecutionPlanCache__v2" kindref="compound">ExecutionPlanCache_v2</ref>;</highlight></codeline>
<codeline lineno="179"><highlight class="normal"></highlight></codeline>
<codeline lineno="180"><highlight class="normal">}</highlight></codeline>
    </programlisting>
    <location file="/home/agopal/trees/cudnn-frontend/include/cudnn_frontend_ExecutionPlanCache.h"/>
  </compounddef>
</doxygen>
