| |
| |
| |
| |
| |
| |
| <!DOCTYPE html> |
| <html class="writer-html5" lang="en" > |
| <head> |
| <meta charset="utf-8"> |
| |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| |
| <title>tvm.auto_scheduler — tvm 0.17.dev0 documentation</title> |
| |
| |
| |
| <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous"> |
| <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" /> |
| <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" /> |
| <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" /> |
| <link rel="stylesheet" href="../../../_static/sg_gallery.css" type="text/css" /> |
| <link rel="stylesheet" href="../../../_static/sg_gallery-binder.css" type="text/css" /> |
| <link rel="stylesheet" href="../../../_static/sg_gallery-dataframe.css" type="text/css" /> |
| <link rel="stylesheet" href="../../../_static/sg_gallery-rendered-html.css" type="text/css" /> |
| <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" /> |
| <link rel="stylesheet" href="../../../_static/css/tlcpack_theme.css" type="text/css" /> |
| |
| |
| |
| <link rel="shortcut icon" href="../../../_static/tvm-logo-square.png"/> |
| |
| |
| |
| |
| |
| |
| |
| <script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script> |
| <script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script> |
| <script src="../../../_static/jquery.js"></script> |
| <script src="../../../_static/underscore.js"></script> |
| <script src="../../../_static/doctools.js"></script> |
| |
| <script type="text/javascript" src="../../../_static/js/theme.js"></script> |
| |
| |
| <script type="text/javascript" src="../../../_static/js/tlcpack_theme.js"></script> |
| <link rel="index" title="Index" href="../../../genindex.html" /> |
| <link rel="search" title="Search" href="../../../search.html" /> |
| <link rel="next" title="tvm.meta_schedule" href="meta_schedule.html" /> |
| <link rel="prev" title="tvm.autotvm" href="autotvm.html" /> |
| </head> |
| |
| <body class="wy-body-for-nav"> |
| |
| |
| <div class="wy-grid-for-nav"> |
| |
| |
| <header class="header"> |
| <div class="innercontainer"> |
| <div class="headerInner d-flex justify-content-between align-items-center"> |
| <div class="headerLogo"> |
| <a href="https://tvm.apache.org/"><img src=https://tvm.apache.org/assets/images/logo.svg alt="logo"></a> |
| </div> |
| |
| <div id="headMenu" class="headerNav"> |
| <button type="button" id="closeHeadMenu" class="navCloseBtn"><img src="../../../_static/img/close-icon.svg" alt="Close"></button> |
| <ul class="nav"> |
| <li class="nav-item"> |
| <a class="nav-link" href=https://tvm.apache.org/community>Community</a> |
| </li> |
| <li class="nav-item"> |
| <a class="nav-link" href=https://tvm.apache.org/download>Download</a> |
| </li> |
| <li class="nav-item"> |
| <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a> |
| </li> |
| <li class="nav-item"> |
| <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a> |
| </li> |
| <li class="nav-item"> |
| <a class="nav-link" href=https://tvm.apache.org/docs>Docs</a> |
| </li> |
| <li class="nav-item"> |
| <a class="nav-link" href=https://tvmconf.org>Conference</a> |
| </li> |
| <li class="nav-item"> |
| <a class="nav-link" href=https://github.com/apache/tvm/>Github</a> |
| </li> |
| </ul> |
| <div class="responsivetlcdropdown"> |
| <button type="button" class="btn-link"> |
| ASF |
| </button> |
| <ul> |
| <li> |
| <a href=https://apache.org/>Apache Homepage</a> |
| </li> |
| <li> |
| <a href=https://www.apache.org/licenses/>License</a> |
| </li> |
| <li> |
| <a href=https://www.apache.org/foundation/sponsorship.html>Sponsorship</a> |
| </li> |
| <li> |
| <a href=https://www.apache.org/security/>Security</a> |
| </li> |
| <li> |
| <a href=https://www.apache.org/foundation/thanks.html>Thanks</a> |
| </li> |
| <li> |
| <a href=https://www.apache.org/events/current-event>Events</a> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="responsiveMenuIcon"> |
| <button type="button" id="menuBtn" class="btn-menu"><img src="../../../_static/img/menu-icon.svg" alt="Menu Icon"></button> |
| </div> |
| |
| <div class="tlcDropdown"> |
| <div class="dropdown"> |
| <button type="button" class="btn-link dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> |
| ASF |
| </button> |
| <div class="dropdown-menu dropdown-menu-right"> |
| <ul> |
| <li> |
| <a href=https://apache.org/>Apache Homepage</a> |
| </li> |
| <li> |
| <a href=https://www.apache.org/licenses/>License</a> |
| </li> |
| <li> |
| <a href=https://www.apache.org/foundation/sponsorship.html>Sponsorship</a> |
| </li> |
| <li> |
| <a href=https://www.apache.org/security/>Security</a> |
| </li> |
| <li> |
| <a href=https://www.apache.org/foundation/thanks.html>Thanks</a> |
| </li> |
| <li> |
| <a href=https://www.apache.org/events/current-event>Events</a> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </header> |
| |
| <nav data-toggle="wy-nav-shift" class="wy-nav-side fixed"> |
| <div class="wy-side-scroll"> |
| <div class="wy-side-nav-search" > |
| |
| |
| |
| <a href="../../../index.html"> |
| |
| |
| |
| |
| <img src="../../../_static/tvm-logo-small.png" class="logo" alt="Logo"/> |
| |
| </a> |
| |
| |
| |
| |
| <input type="checkbox" class="version-toggle-box" hidden id="version-toggle"> |
| <label for="version-toggle" class="version-toggle-label"> |
| <div tabindex="0" class="version version-selector version-selector-show"> |
| 0.17.dev0 <span class="chevron versions-hidden"><svg fill="none" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m8 4 8 8-8 8" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg></span><span class="chevron versions-shown"><svg fill="none" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m4 8 8 8 8-8" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg></span> |
| </div> |
| </label> |
| <div class="version-details wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> |
| <p class="caption" role="heading"><span class="caption-text">Versions</span></p> |
| <ol style="text-align: left"> |
| |
| |
| |
| |
| <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="/">0.17.dev0 (main)</a></div></li> |
| |
| |
| |
| |
| <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.8.0/">v0.8.0</a></div></li> |
| |
| |
| |
| |
| <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.9.0/">v0.9.0</a></div></li> |
| |
| |
| |
| |
| <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.10.0/">v0.10.0</a></div></li> |
| |
| |
| |
| |
| <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.11.0/">v0.11.0</a></div></li> |
| |
| |
| |
| |
| <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.12.0/">v0.12.0</a></div></li> |
| |
| |
| |
| |
| <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.13.0/">v0.13.0</a></div></li> |
| |
| |
| |
| |
| <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.14.0/">v0.14.0</a></div></li> |
| |
| </ol> |
| </div> |
| |
| |
| |
| |
| <div role="search"> |
| <form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get"> |
| <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" /> |
| <input type="hidden" name="check_keywords" value="yes" /> |
| <input type="hidden" name="area" value="default" /> |
| </form> |
| </div> |
| |
| |
| </div> |
| |
| |
| <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> |
| |
| |
| |
| |
| |
| |
| <p class="caption" role="heading"><span class="caption-text">Getting Started</span></p> |
| <ul> |
| <li class="toctree-l1"><a class="reference internal" href="../../../install/index.html">Installing TVM</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../../../contribute/index.html">Contributor Guide</a></li> |
| </ul> |
| <p class="caption" role="heading"><span class="caption-text">User Guide</span></p> |
| <ul> |
| <li class="toctree-l1"><a class="reference internal" href="../../../tutorial/index.html">User Tutorial</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../../../how_to/index.html">How To Guides</a></li> |
| </ul> |
| <p class="caption" role="heading"><span class="caption-text">Developer Guide</span></p> |
| <ul> |
| <li class="toctree-l1"><a class="reference internal" href="../../../dev/tutorial/index.html">Developer Tutorial</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../../../dev/how_to/how_to.html">Developer How-To Guide</a></li> |
| </ul> |
| <p class="caption" role="heading"><span class="caption-text">Architecture Guide</span></p> |
| <ul> |
| <li class="toctree-l1"><a class="reference internal" href="../../../arch/index.html">Design and Architecture</a></li> |
| </ul> |
| <p class="caption" role="heading"><span class="caption-text">Topic Guides</span></p> |
| <ul> |
| <li class="toctree-l1"><a class="reference internal" href="../../../topic/microtvm/index.html">microTVM: TVM on bare-metal</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../../../topic/vta/index.html">VTA: Versatile Tensor Accelerator</a></li> |
| </ul> |
| <p class="caption" role="heading"><span class="caption-text">Reference Guide</span></p> |
| <ul class="current"> |
| <li class="toctree-l1"><a class="reference internal" href="../../langref/index.html">Language Reference</a></li> |
| <li class="toctree-l1 current"><a class="reference internal" href="index.html">Python API</a><ul class="current"> |
| <li class="toctree-l2"><a class="reference internal" href="runtime.html">tvm.runtime</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="ndarray.html">tvm.runtime.ndarray</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="error.html">tvm.error</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="ir.html">tvm.ir</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="ir.html#module-tvm.instrument">tvm.instrument</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="ir.html#module-tvm.transform">tvm.transform</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="target.html">tvm.target</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="tir.html">tvm.tir</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="tir.html#module-tvm.tir.transform">tvm.tir.transform</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="tir.html#tvm-tir-analysis">tvm.tir.analysis</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="tir.html#module-tvm.tir.stmt_functor">tvm.tir.stmt_functor</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="te.html">tvm.te</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="te.html#module-tvm.te.hybrid">tvm.te.hybrid</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="driver.html">tvm.driver</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="relay/index.html">tvm.relay</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="relay/frontend.html">tvm.relay.frontend</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="relay/nn.html">tvm.relay.nn</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="relay/vision.html">tvm.relay.vision</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="relay/image.html">tvm.relay.image</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="relay/transform.html">tvm.relay.transform</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="relay/analysis.html">tvm.relay.analysis</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="relay/backend.html">tvm.relay.backend</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="relay/dataflow_pattern.html">tvm.relay.dataflow_pattern</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="relay/testing.html">tvm.relay.testing</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="autotvm.html">tvm.autotvm</a></li> |
| <li class="toctree-l2 current"><a class="current reference internal" href="#">tvm.auto_scheduler</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="meta_schedule.html">tvm.meta_schedule</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="rpc.html">tvm.rpc</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="micro.html">tvm.micro</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="contrib.html">tvm.contrib</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="graph_executor.html">tvm.contrib.graph_executor</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="topi.html">tvm.topi</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="vta/index.html">vta</a></li> |
| </ul> |
| </li> |
| <li class="toctree-l1"><a class="reference internal" href="../links.html">Other APIs</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../../publications.html">Publications</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../../../genindex.html">Index</a></li> |
| </ul> |
| |
| |
| |
| </div> |
| |
| </div> |
| </nav> |
| |
| <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> |
| |
| <nav class="wy-nav-top" aria-label="top navigation" data-toggle="wy-nav-top"> |
| |
| <div class="togglemenu"> |
| |
| </div> |
| <div class="nav-content"> |
| <!-- tvm --> |
| Table of Contents |
| </div> |
| |
| </nav> |
| |
| |
| <div class="wy-nav-content"> |
| |
| <div class="rst-content"> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <div role="navigation" aria-label="breadcrumbs navigation"> |
| |
| <ul class="wy-breadcrumbs"> |
| |
| <li><a href="../../../index.html">Docs</a> <span class="br-arrow">></span></li> |
| |
| <li><a href="index.html">Python API</a> <span class="br-arrow">></span></li> |
| |
| <li>tvm.auto_scheduler</li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="wy-breadcrumbs-aside"> |
| |
| |
| |
| <a href="https://github.com/apache/tvm/edit/main/docs/reference/api/python/auto_scheduler.rst" class="fa fa-github"> Edit on GitHub</a> |
| |
| |
| |
| </li> |
| |
| </ul> |
| |
| |
| <hr/> |
| </div> |
| <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> |
| <div itemprop="articleBody"> |
| |
| <div class="section" id="module-tvm.auto_scheduler"> |
| <span id="tvm-auto-scheduler"></span><h1>tvm.auto_scheduler<a class="headerlink" href="#module-tvm.auto_scheduler" title="Permalink to this headline">¶</a></h1> |
| <p>Namespace for TVM Auto-scheduler.</p> |
| <p><strong>Classes:</strong></p> |
| <table class="longtable docutils align-default"> |
| <colgroup> |
| <col style="width: 10%" /> |
| <col style="width: 90%" /> |
| </colgroup> |
| <tbody> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.ComputeDAG" title="tvm.auto_scheduler.ComputeDAG"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ComputeDAG</span></code></a>(compute_or_sche)</p></td> |
| <td><p>The auto-scheduler's computational graph and related program analyses.</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.LayoutRewriteOption" title="tvm.auto_scheduler.LayoutRewriteOption"><code class="xref py py-obj docutils literal notranslate"><span class="pre">LayoutRewriteOption</span></code></a>()</p></td> |
| <td><p>Options for applying layout rewrite.</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.RandomModel" title="tvm.auto_scheduler.RandomModel"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RandomModel</span></code></a>()</p></td> |
| <td><p>A model that returns random estimation for all inputs</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.XGBModel" title="tvm.auto_scheduler.XGBModel"><code class="xref py py-obj docutils literal notranslate"><span class="pre">XGBModel</span></code></a>([verbose_eval, num_warmup_sample, ...])</p></td> |
| <td><p>Train a XGBoost model to predict the normalized throughputs of programs.</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.ApplyHistoryBest" title="tvm.auto_scheduler.ApplyHistoryBest"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ApplyHistoryBest</span></code></a>(records[, n_lines, ...])</p></td> |
| <td><p>Apply the history best config</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.ApplyHistoryBestOrSample" title="tvm.auto_scheduler.ApplyHistoryBestOrSample"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ApplyHistoryBestOrSample</span></code></a>(records[, ...])</p></td> |
| <td><p>Apply the history best config, or sample a valid schedule if no config is found.</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.DispatchContext" title="tvm.auto_scheduler.DispatchContext"><code class="xref py py-obj docutils literal notranslate"><span class="pre">DispatchContext</span></code></a>()</p></td> |
| <td><p>Base class of dispatch context.</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.LocalBuilder" title="tvm.auto_scheduler.LocalBuilder"><code class="xref py py-obj docutils literal notranslate"><span class="pre">LocalBuilder</span></code></a>([timeout, n_parallel, build_func])</p></td> |
| <td><p>LocalBuilder use local CPU cores to build programs in parallel.</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.LocalRPCMeasureContext" title="tvm.auto_scheduler.LocalRPCMeasureContext"><code class="xref py py-obj docutils literal notranslate"><span class="pre">LocalRPCMeasureContext</span></code></a>([priority, ...])</p></td> |
| <td><p>A context wrapper for running RPCRunner locally.</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.LocalRunner" title="tvm.auto_scheduler.LocalRunner"><code class="xref py py-obj docutils literal notranslate"><span class="pre">LocalRunner</span></code></a>([timeout, number, repeat, ...])</p></td> |
| <td><p>LocalRunner that uses local CPU/GPU to measures the time cost of programs.</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.MeasureInput" title="tvm.auto_scheduler.MeasureInput"><code class="xref py py-obj docutils literal notranslate"><span class="pre">MeasureInput</span></code></a>(task, state)</p></td> |
| <td><p>Store the input of a measurement.</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.MeasureResult" title="tvm.auto_scheduler.MeasureResult"><code class="xref py py-obj docutils literal notranslate"><span class="pre">MeasureResult</span></code></a>(costs, error_no, error_msg, ...)</p></td> |
| <td><p>Store the results of a measurement.</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.RPCRunner" title="tvm.auto_scheduler.RPCRunner"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RPCRunner</span></code></a>(key, host, port[, priority, ...])</p></td> |
| <td><p>RPCRunner that uses RPC call to measures the time cost of programs on remote devices.</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.RecordReader" title="tvm.auto_scheduler.RecordReader"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RecordReader</span></code></a>(filename)</p></td> |
| <td><p>Reader of the json log file.</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.RecordToFile" title="tvm.auto_scheduler.RecordToFile"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RecordToFile</span></code></a>(filename)</p></td> |
| <td><p>A measurement callback that writes measurement records into a file.</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.EmptyPolicy" title="tvm.auto_scheduler.EmptyPolicy"><code class="xref py py-obj docutils literal notranslate"><span class="pre">EmptyPolicy</span></code></a>(task[, init_search_callbacks])</p></td> |
| <td><p>A simple example of the search policy which always returns the initial naive schedule (state).</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.PreloadCustomSketchRule" title="tvm.auto_scheduler.PreloadCustomSketchRule"><code class="xref py py-obj docutils literal notranslate"><span class="pre">PreloadCustomSketchRule</span></code></a>(meet_condition_func, ...)</p></td> |
| <td><p>A SearchCallback for SketchSearchPolicy that allows users to add custom sketch rule.</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.PreloadMeasuredStates" title="tvm.auto_scheduler.PreloadMeasuredStates"><code class="xref py py-obj docutils literal notranslate"><span class="pre">PreloadMeasuredStates</span></code></a>(filename)</p></td> |
| <td><p>A SearchCallback to load measured states from the log file for a search policy.</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.SketchPolicy" title="tvm.auto_scheduler.SketchPolicy"><code class="xref py py-obj docutils literal notranslate"><span class="pre">SketchPolicy</span></code></a>(task[, program_cost_model, ...])</p></td> |
| <td><p>The search policy that searches in a hierarchical search space defined by sketches.</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.HardwareParams" title="tvm.auto_scheduler.HardwareParams"><code class="xref py py-obj docutils literal notranslate"><span class="pre">HardwareParams</span></code></a>([num_cores, ...])</p></td> |
| <td><p>The parameters of target hardware used to guide the search policy.</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.SearchTask" title="tvm.auto_scheduler.SearchTask"><code class="xref py py-obj docutils literal notranslate"><span class="pre">SearchTask</span></code></a>([func, args, compute_dag, ...])</p></td> |
| <td><p>The computation information and hardware parameters for a schedule search task.</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.TuningOptions" title="tvm.auto_scheduler.TuningOptions"><code class="xref py py-obj docutils literal notranslate"><span class="pre">TuningOptions</span></code></a>([num_measure_trials, ...])</p></td> |
| <td><p>This controls the options of performance tuning.</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.TaskScheduler" title="tvm.auto_scheduler.TaskScheduler"><code class="xref py py-obj docutils literal notranslate"><span class="pre">TaskScheduler</span></code></a>(tasks[, task_weights, ...])</p></td> |
| <td><p>Allocate the time resources when tuning multiple tasks together.</p></td> |
| </tr> |
| </tbody> |
| </table> |
| <p><strong>Functions:</strong></p> |
| <table class="longtable docutils align-default"> |
| <colgroup> |
| <col style="width: 10%" /> |
| <col style="width: 90%" /> |
| </colgroup> |
| <tbody> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.get_shape_from_rewritten_layout" title="tvm.auto_scheduler.get_shape_from_rewritten_layout"><code class="xref py py-obj docutils literal notranslate"><span class="pre">get_shape_from_rewritten_layout</span></code></a>(...)</p></td> |
| <td><p>Get the orginal shape from a rewritten layout string.</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.register_task_input_check_func" title="tvm.auto_scheduler.register_task_input_check_func"><code class="xref py py-obj docutils literal notranslate"><span class="pre">register_task_input_check_func</span></code></a>(func_name[, ...])</p></td> |
| <td><p>Register a function that checks the input buffer map.</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.load_best_record" title="tvm.auto_scheduler.load_best_record"><code class="xref py py-obj docutils literal notranslate"><span class="pre">load_best_record</span></code></a>(filename[, workload_key, ...])</p></td> |
| <td><p>Return the best measurement pair form a log file.</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.load_records" title="tvm.auto_scheduler.load_records"><code class="xref py py-obj docutils literal notranslate"><span class="pre">load_records</span></code></a>(filename)</p></td> |
| <td><p>Load measurement records from a file.</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.save_records" title="tvm.auto_scheduler.save_records"><code class="xref py py-obj docutils literal notranslate"><span class="pre">save_records</span></code></a>(filename, inputs, results)</p></td> |
| <td><p>Append measure records to file.</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.extract_tasks" title="tvm.auto_scheduler.extract_tasks"><code class="xref py py-obj docutils literal notranslate"><span class="pre">extract_tasks</span></code></a>(mod, params, target[, ...])</p></td> |
| <td><p>Extract tuning tasks from a relay program.</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.is_auto_scheduler_enabled" title="tvm.auto_scheduler.is_auto_scheduler_enabled"><code class="xref py py-obj docutils literal notranslate"><span class="pre">is_auto_scheduler_enabled</span></code></a>()</p></td> |
| <td><p>Return whether the auto-scheduler is enabled.</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.remove_index_check" title="tvm.auto_scheduler.remove_index_check"><code class="xref py py-obj docutils literal notranslate"><span class="pre">remove_index_check</span></code></a>(tensor)</p></td> |
| <td><p>Remove the safety check in the indexing function for a tensor.</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.rewrite_compute_body" title="tvm.auto_scheduler.rewrite_compute_body"><code class="xref py py-obj docutils literal notranslate"><span class="pre">rewrite_compute_body</span></code></a>(compute_tensor, new_layout)</p></td> |
| <td><p>Rewrite the body of a ComputeOp according to a new layout of a placeholder</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.rewrite_tensor_shape" title="tvm.auto_scheduler.rewrite_tensor_shape"><code class="xref py py-obj docutils literal notranslate"><span class="pre">rewrite_tensor_shape</span></code></a>(tensor, shape)</p></td> |
| <td><p>Rewrite the tensor shape</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.auto_schedule" title="tvm.auto_scheduler.auto_schedule"><code class="xref py py-obj docutils literal notranslate"><span class="pre">auto_schedule</span></code></a>(task[, search_policy, ...])</p></td> |
| <td><p>THIS API IS DEPRECATED.</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.create_task" title="tvm.auto_scheduler.create_task"><code class="xref py py-obj docutils literal notranslate"><span class="pre">create_task</span></code></a>(func, args, target[, ...])</p></td> |
| <td><p>THIS API IS DEPRECATED.</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.make_workload_key" title="tvm.auto_scheduler.make_workload_key"><code class="xref py py-obj docutils literal notranslate"><span class="pre">make_workload_key</span></code></a>(func, args)</p></td> |
| <td><p>Make a workload key by function and arguments.</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.register_workload" title="tvm.auto_scheduler.register_workload"><code class="xref py py-obj docutils literal notranslate"><span class="pre">register_workload</span></code></a>(func_name[, f, override])</p></td> |
| <td><p>Register a function that generates a certain workload.</p></td> |
| </tr> |
| </tbody> |
| </table> |
| <dl class="py class"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.ComputeDAG"> |
| <em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">ComputeDAG</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">compute_or_sche</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.ComputeDAG" title="Permalink to this definition">¶</a></dt> |
| <dd><p>The auto-scheduler’s computational graph and related program analyses.</p> |
| <p>We convert a compute declaration described by <cite>tvm.compute</cite> (could be a single operator or a |
| subgraph) to a ComputeDAG. It keeps the input/output tensors, all operations in the DAG, and |
| some static analysis results for the DAG (e.g. the total float operation count, |
| consumer/producer relations of operations, whether an operation stage should |
| be tiled/compute inlined). |
| These analyses can help the search policy to make decisions during the search. |
| ComputeDAG is also responsible for the interaction between auto-scheduler’s <cite>LoopState</cite> and |
| TVM schedule (e.g. applying the <cite>LoopState</cite> transform steps to a TVM schedule, providing |
| <cite>LoopState</cite> with extra information got from TVM schedule).</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><p><strong>compute</strong> (<em>Union</em><em>[</em><em>List</em><em>[</em><a class="reference internal" href="te.html#tvm.te.Tensor" title="tvm.te.Tensor"><em>Tensor</em></a><em>]</em><em>, </em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>, </em><a class="reference internal" href="te.html#tvm.te.Schedule" title="tvm.te.Schedule"><em>tvm.te.Schedule</em></a><em>]</em>) – Input/output tensors or workload key for a compute declaration.</p> |
| </dd> |
| </dl> |
| <p><strong>Methods:</strong></p> |
| <table class="longtable docutils align-default"> |
| <colgroup> |
| <col style="width: 10%" /> |
| <col style="width: 90%" /> |
| </colgroup> |
| <tbody> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.ComputeDAG.get_init_state" title="tvm.auto_scheduler.ComputeDAG.get_init_state"><code class="xref py py-obj docutils literal notranslate"><span class="pre">get_init_state</span></code></a>()</p></td> |
| <td><p>Get the init state of this ComputeDAG.</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.ComputeDAG.apply_steps_from_state" title="tvm.auto_scheduler.ComputeDAG.apply_steps_from_state"><code class="xref py py-obj docutils literal notranslate"><span class="pre">apply_steps_from_state</span></code></a>(state[, layout_rewrite])</p></td> |
| <td><p>Apply the history transform steps from a State to get a TVM schedule.</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.ComputeDAG.print_python_code_from_state" title="tvm.auto_scheduler.ComputeDAG.print_python_code_from_state"><code class="xref py py-obj docutils literal notranslate"><span class="pre">print_python_code_from_state</span></code></a>(state)</p></td> |
| <td><p>Print transform steps in the history of a State as TVM's python schedule code.</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.ComputeDAG.infer_bound_from_state" title="tvm.auto_scheduler.ComputeDAG.infer_bound_from_state"><code class="xref py py-obj docutils literal notranslate"><span class="pre">infer_bound_from_state</span></code></a>(state)</p></td> |
| <td><p>Infer and fill the bound of all iterators of a state.</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.ComputeDAG.rewrite_layout_from_state" title="tvm.auto_scheduler.ComputeDAG.rewrite_layout_from_state"><code class="xref py py-obj docutils literal notranslate"><span class="pre">rewrite_layout_from_state</span></code></a>(state)</p></td> |
| <td><p>Rewrite the layout of the DAG according to the history transform steps of a state.</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.ComputeDAG.workload_key" title="tvm.auto_scheduler.ComputeDAG.workload_key"><code class="xref py py-obj docutils literal notranslate"><span class="pre">workload_key</span></code></a>()</p></td> |
| <td><p>Return the workload key of this compute DAG.</p></td> |
| </tr> |
| </tbody> |
| </table> |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.ComputeDAG.get_init_state"> |
| <span class="sig-name descname"><span class="pre">get_init_state</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.ComputeDAG.get_init_state" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Get the init state of this ComputeDAG.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Returns</dt> |
| <dd class="field-odd"><p><strong>state</strong> – The initial State without any transform steps.</p> |
| </dd> |
| <dt class="field-even">Return type</dt> |
| <dd class="field-even"><p>State</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.ComputeDAG.apply_steps_from_state"> |
| <span class="sig-name descname"><span class="pre">apply_steps_from_state</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">state</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">layout_rewrite</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.ComputeDAG.apply_steps_from_state" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Apply the history transform steps from a State to get a TVM schedule.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>state</strong> (<em>Union</em><em>[</em><em>State</em><em>, </em><em>StateObject</em><em>]</em>) – The state from which we get transform steps.</p></li> |
| <li><p><strong>layout_rewrite</strong> (<em>LayoutRewriteOption = NoRewrite</em>) – Rewrite the layout of placeholders specified by “layout_free_placeholders” attr |
| to make it most friendly for the generated schedule to read from.</p></li> |
| </ul> |
| </dd> |
| <dt class="field-even">Returns</dt> |
| <dd class="field-even"><p></p> |
| </dd> |
| <dt class="field-odd">Return type</dt> |
| <dd class="field-odd"><p>A <cite>te.schedule</cite> and the a list of <cite>te.Tensor</cite> to be used in <cite>tvm.lower</cite> or <cite>tvm.build</cite>.</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.ComputeDAG.print_python_code_from_state"> |
| <span class="sig-name descname"><span class="pre">print_python_code_from_state</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">state</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.ComputeDAG.print_python_code_from_state" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Print transform steps in the history of a State as TVM’s python schedule code.</p> |
| <p>This is used to print transformation steps for debugging. |
| Use <cite>apply_steps_from_state</cite> if you want to get a schedule for code generation.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><p><strong>state</strong> (<em>Union</em><em>[</em><em>State</em><em>, </em><em>StateObject</em><em>]</em>) – The state from which we get transform steps.</p> |
| </dd> |
| <dt class="field-even">Returns</dt> |
| <dd class="field-even"><p><strong>str</strong> – The Python schedule code.</p> |
| </dd> |
| <dt class="field-odd">Return type</dt> |
| <dd class="field-odd"><p>Str</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.ComputeDAG.infer_bound_from_state"> |
| <span class="sig-name descname"><span class="pre">infer_bound_from_state</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">state</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.ComputeDAG.infer_bound_from_state" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Infer and fill the bound of all iterators of a state.</p> |
| <p>The states may lose complete bound information after some transform steps |
| (e.g., compute_at). |
| We can call this function to infer and fill all the bound information. |
| This function calls TVM InferBound pass internally to get the bound. |
| The returned state of this function is guaranteed to have complete iterator extent |
| information.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><p><strong>state</strong> (<em>Union</em><em>[</em><em>State</em><em>, </em><em>StateObject</em><em>]</em>) – The state from which we get transform steps.</p> |
| </dd> |
| <dt class="field-even">Returns</dt> |
| <dd class="field-even"><p><strong>updated_state</strong> – The State with complete bound information.</p> |
| </dd> |
| <dt class="field-odd">Return type</dt> |
| <dd class="field-odd"><p>State</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.ComputeDAG.rewrite_layout_from_state"> |
| <span class="sig-name descname"><span class="pre">rewrite_layout_from_state</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">state</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.ComputeDAG.rewrite_layout_from_state" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Rewrite the layout of the DAG according to the history transform steps of a state.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><p><strong>state</strong> (<em>Union</em><em>[</em><em>State</em><em>, </em><em>StateObject</em><em>]</em>) – The state from which we get transform steps.</p> |
| </dd> |
| <dt class="field-even">Returns</dt> |
| <dd class="field-even"><p><strong>updated_dag</strong> – The compute dag with rewritten layout.</p> |
| </dd> |
| <dt class="field-odd">Return type</dt> |
| <dd class="field-odd"><p><a class="reference internal" href="#tvm.auto_scheduler.ComputeDAG" title="tvm.auto_scheduler.ComputeDAG">ComputeDAG</a></p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.ComputeDAG.workload_key"> |
| <span class="sig-name descname"><span class="pre">workload_key</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.ComputeDAG.workload_key" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Return the workload key of this compute DAG. |
| The workload key is a JSON string from a tuple of (hash of DAG, tensor shapes…)</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Returns</dt> |
| <dd class="field-odd"><p><strong>key</strong> – The workload key of this compute DAG</p> |
| </dd> |
| <dt class="field-even">Return type</dt> |
| <dd class="field-even"><p><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)">str</a></p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| </dd></dl> |
| |
| <dl class="py class"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.LayoutRewriteOption"> |
| <em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">LayoutRewriteOption</span></span><a class="headerlink" href="#tvm.auto_scheduler.LayoutRewriteOption" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Options for applying layout rewrite.</p> |
| <p>The NO_REWRITE and INSERT_TRANSFORM_STAGE are expected to be used when tuning a standalone op, |
| and the REWRITE_FOR_PRE_TRANSFORMED is expected to be used when tuning ops inside a network.</p> |
| <p><strong>Methods:</strong></p> |
| <table class="longtable docutils align-default"> |
| <colgroup> |
| <col style="width: 10%" /> |
| <col style="width: 90%" /> |
| </colgroup> |
| <tbody> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.LayoutRewriteOption.get_target_default" title="tvm.auto_scheduler.LayoutRewriteOption.get_target_default"><code class="xref py py-obj docutils literal notranslate"><span class="pre">get_target_default</span></code></a>(target[, ...])</p></td> |
| <td><p>Get the default layout rewrite option for the specified target.</p></td> |
| </tr> |
| </tbody> |
| </table> |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.LayoutRewriteOption.get_target_default"> |
| <em class="property"><span class="pre">static</span> </em><span class="sig-name descname"><span class="pre">get_target_default</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">target</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">in_relay_integration</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.LayoutRewriteOption.get_target_default" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Get the default layout rewrite option for the specified target. |
| Currently we only enable layout rewrite for cpu / mali backend for now</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>target</strong> (<a class="reference internal" href="target.html#tvm.target.Target" title="tvm.target.Target"><em>tvm.target.Target</em></a>) – The compilation target.</p></li> |
| <li><p><strong>in_relay_integration</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.12)"><em>bool</em></a>) – If this check is ask for relay integration.</p></li> |
| </ul> |
| </dd> |
| <dt class="field-even">Returns</dt> |
| <dd class="field-even"><p><strong>layout_rewrite_option</strong> – The default layout rewrite option for the specified target.</p> |
| </dd> |
| <dt class="field-odd">Return type</dt> |
| <dd class="field-odd"><p><a class="reference internal" href="#tvm.auto_scheduler.LayoutRewriteOption" title="tvm.auto_scheduler.LayoutRewriteOption">LayoutRewriteOption</a></p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| </dd></dl> |
| |
| <dl class="py function"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.get_shape_from_rewritten_layout"> |
| <span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">get_shape_from_rewritten_layout</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rewritten_layout</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">axis_names</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.get_shape_from_rewritten_layout" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Get the orginal shape from a rewritten layout string.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>rewritten_layout</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a>) – The layout after rewrite</p></li> |
| <li><p><strong>axis_names</strong> (<em>List</em><em>[</em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>]</em>) – Specify the order of axes by names</p></li> |
| </ul> |
| </dd> |
| <dt class="field-even">Returns</dt> |
| <dd class="field-even"><p><strong>shape</strong> – The original shape</p> |
| </dd> |
| <dt class="field-odd">Return type</dt> |
| <dd class="field-odd"><p>List[<a class="reference internal" href="ir.html#tvm.ir.PrimExpr" title="tvm.ir.PrimExpr">PrimExpr</a>]</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py class"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.RandomModel"> |
| <em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">RandomModel</span></span><a class="headerlink" href="#tvm.auto_scheduler.RandomModel" title="Permalink to this definition">¶</a></dt> |
| <dd><p>A model that returns random estimation for all inputs</p> |
| <p><strong>Methods:</strong></p> |
| <table class="longtable docutils align-default"> |
| <colgroup> |
| <col style="width: 10%" /> |
| <col style="width: 90%" /> |
| </colgroup> |
| <tbody> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.RandomModel.update" title="tvm.auto_scheduler.RandomModel.update"><code class="xref py py-obj docutils literal notranslate"><span class="pre">update</span></code></a>(inputs, results)</p></td> |
| <td><p>Update the cost model according to new measurement results (training data).</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.RandomModel.predict" title="tvm.auto_scheduler.RandomModel.predict"><code class="xref py py-obj docutils literal notranslate"><span class="pre">predict</span></code></a>(search_task, states)</p></td> |
| <td><p>Predict the scores of states</p></td> |
| </tr> |
| </tbody> |
| </table> |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.RandomModel.update"> |
| <span class="sig-name descname"><span class="pre">update</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">inputs</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">results</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.RandomModel.update" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Update the cost model according to new measurement results (training data).</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>inputs</strong> (<em>List</em><em>[</em><a class="reference internal" href="#tvm.auto_scheduler.MeasureInput" title="tvm.auto_scheduler.measure.MeasureInput"><em>auto_scheduler.measure.MeasureInput</em></a><em>]</em>) – The measurement inputs</p></li> |
| <li><p><strong>results</strong> (<em>List</em><em>[</em><a class="reference internal" href="#tvm.auto_scheduler.MeasureResult" title="tvm.auto_scheduler.measure.MeasureResult"><em>auto_scheduler.measure.MeasureResult</em></a><em>]</em>) – The measurement results</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.RandomModel.predict"> |
| <span class="sig-name descname"><span class="pre">predict</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">search_task</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">states</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.RandomModel.predict" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Predict the scores of states</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>search_task</strong> (<a class="reference internal" href="#tvm.auto_scheduler.SearchTask" title="tvm.auto_scheduler.SearchTask"><em>SearchTask</em></a>) – The search task of states</p></li> |
| <li><p><strong>states</strong> (<em>List</em><em>[</em><em>State</em><em>]</em>) – The input states</p></li> |
| </ul> |
| </dd> |
| <dt class="field-even">Returns</dt> |
| <dd class="field-even"><p><strong>scores</strong> – The predicted scores for all states</p> |
| </dd> |
| <dt class="field-odd">Return type</dt> |
| <dd class="field-odd"><p>List[<a class="reference external" href="https://docs.python.org/3/library/functions.html#float" title="(in Python v3.12)">float</a>]</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| </dd></dl> |
| |
| <dl class="py class"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.XGBModel"> |
| <em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">XGBModel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">verbose_eval</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">25</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">num_warmup_sample</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">100</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">seed</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">model_file</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">adaptive_training</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.XGBModel" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Train a XGBoost model to predict the normalized throughputs of programs. |
| Let the normalized throughput be the score of a program (higher is better). We predict |
| the (approximate) score of a program = the sum of the scores of all stages in this program. |
| i.e. score(P) = score_s0 + score_s1 + … + score_sn, |
| where score_si is the score of Stage i in Program P. |
| We extract feature for each stage and let the xgboost predict the score for each stage. |
| We then sum up the predictions as the score of the whole program. |
| We use RMSE as the loss function. i.e. loss(P, y) = 1/2 * (score(P) - y)^2, |
| where P is the program and y is the normalized throughput according to |
| the ground truth (measurement). |
| XGBoost does not support this loss function because <cite>score(P)</cite> is a sum of the prediction |
| of several samples, so we implemented a custom loss function and call it pack-sum-rmse. |
| It is called “pack-sum” because we combine several samples into a “pack” and sum up |
| their predictions.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>verbose_eval</strong> (<em>int = 25</em>) – Print training log every <cite>verbose_eval</cite> iterations.</p></li> |
| <li><p><strong>num_warmup_sample</strong> (<em>int = 100</em>) – The minimum number of samples to start to use the trained model. |
| If the number of samples is less than this number, the model outputs random predictions.</p></li> |
| <li><p><strong>seed</strong> (<em>Optional</em><em>[</em><a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.12)"><em>int</em></a><em>]</em>) – The random seed</p></li> |
| <li><p><strong>model_file</strong> (<em>Optional</em><em>[</em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>]</em>) – If is not None, save model to this file after every update.</p></li> |
| <li><p><strong>adaptive_training</strong> (<em>bool = False</em>) – Whether to use adaptive training, which reduces the training frequency when there are |
| too many logs.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| <p><strong>Methods:</strong></p> |
| <table class="longtable docutils align-default"> |
| <colgroup> |
| <col style="width: 10%" /> |
| <col style="width: 90%" /> |
| </colgroup> |
| <tbody> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.XGBModel.update" title="tvm.auto_scheduler.XGBModel.update"><code class="xref py py-obj docutils literal notranslate"><span class="pre">update</span></code></a>(inputs, results)</p></td> |
| <td><p>Update the cost model according to new measurement results (training data).</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.XGBModel.predict" title="tvm.auto_scheduler.XGBModel.predict"><code class="xref py py-obj docutils literal notranslate"><span class="pre">predict</span></code></a>(task, states)</p></td> |
| <td><p>Predict the scores of states :param search_task: The search task of states :type search_task: SearchTask :param statse: The input states :type statse: List[State]</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.XGBModel.predict_stages" title="tvm.auto_scheduler.XGBModel.predict_stages"><code class="xref py py-obj docutils literal notranslate"><span class="pre">predict_stages</span></code></a>(task, states)</p></td> |
| <td><p>Predict the scores of all stages in states.</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.XGBModel.update_from_file" title="tvm.auto_scheduler.XGBModel.update_from_file"><code class="xref py py-obj docutils literal notranslate"><span class="pre">update_from_file</span></code></a>(file_name[, n_lines])</p></td> |
| <td><p>Load measure records from a log file to update the cost model.</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.XGBModel.save" title="tvm.auto_scheduler.XGBModel.save"><code class="xref py py-obj docutils literal notranslate"><span class="pre">save</span></code></a>(file_name)</p></td> |
| <td><p>Save the model to a file :param file_name: The filename :type file_name: str</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.XGBModel.load" title="tvm.auto_scheduler.XGBModel.load"><code class="xref py py-obj docutils literal notranslate"><span class="pre">load</span></code></a>(file_name)</p></td> |
| <td><p>Load the model from a file :param file_name: The filename :type file_name: str</p></td> |
| </tr> |
| </tbody> |
| </table> |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.XGBModel.update"> |
| <span class="sig-name descname"><span class="pre">update</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">inputs</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">results</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.XGBModel.update" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Update the cost model according to new measurement results (training data). |
| XGBoost does not support incremental training, so we re-train a new model every time. |
| :param inputs: The measurement inputs |
| :type inputs: List[MeasureInput] |
| :param results: The measurement results |
| :type results: List[MeasureResult]</p> |
| </dd></dl> |
| |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.XGBModel.predict"> |
| <span class="sig-name descname"><span class="pre">predict</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">task</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">states</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.XGBModel.predict" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Predict the scores of states |
| :param search_task: The search task of states |
| :type search_task: SearchTask |
| :param statse: The input states |
| :type statse: List[State]</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Returns</dt> |
| <dd class="field-odd"><p><strong>scores</strong> – The predicted scores for all states</p> |
| </dd> |
| <dt class="field-even">Return type</dt> |
| <dd class="field-even"><p>List[<a class="reference external" href="https://docs.python.org/3/library/functions.html#float" title="(in Python v3.12)">float</a>]</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.XGBModel.predict_stages"> |
| <span class="sig-name descname"><span class="pre">predict_stages</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">task</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">states</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.XGBModel.predict_stages" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Predict the scores of all stages in states. This is the breakdown version of <cite>predict</cite>.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>search_task</strong> (<a class="reference internal" href="#tvm.auto_scheduler.SearchTask" title="tvm.auto_scheduler.SearchTask"><em>SearchTask</em></a>) – The search task of states</p></li> |
| <li><p><strong>statse</strong> (<em>List</em><em>[</em><em>State</em><em>]</em>) – The input states</p></li> |
| </ul> |
| </dd> |
| <dt class="field-even">Returns</dt> |
| <dd class="field-even"><p><strong>scores</strong> – The predicted scores for all stages in all states in the packed format</p> |
| </dd> |
| <dt class="field-odd">Return type</dt> |
| <dd class="field-odd"><p>List[<a class="reference external" href="https://docs.python.org/3/library/functions.html#float" title="(in Python v3.12)">float</a>]</p> |
| </dd> |
| </dl> |
| <div class="admonition note"> |
| <p class="admonition-title">Note</p> |
| <p>For faster data copy between c++ and python, the python part returns scores in a |
| single flatten array using a packed format. The c++ part then unpacks the flatten array. |
| The packed format is: |
| {</p> |
| <blockquote> |
| <div><p>float scores[N]; // scores[i] is the score for states[i]. |
| int n_stage_0; // the number of stages in states[0] |
| float stage_scores_0[[n_stage_0] // the scores for all stages in states[0] |
| int n_stage_1; // the number of stages in states[1] |
| float stage_scores_1[n_stage_1]; // the scores for all stages in states[1] |
| … |
| int n_stage_i; // the number of stages in states[i] |
| float stage_scores_1[n_stage_i]; // the scores for all stages in states[i] |
| … // untill i == N - 1</p> |
| </div></blockquote> |
| <p>} |
| To implement this format, we also store int as float, so we can store all numbers |
| into a single float array.</p> |
| </div> |
| </dd></dl> |
| |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.XGBModel.update_from_file"> |
| <span class="sig-name descname"><span class="pre">update_from_file</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">file_name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">n_lines</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.XGBModel.update_from_file" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Load measure records from a log file to update the cost model. |
| This function can be used to pre-train the cost model with history log files. |
| :param file_name: The filename |
| :type file_name: str |
| :param n_lines: Only load first n lines of the log file |
| :type n_lines: Optional[int]</p> |
| </dd></dl> |
| |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.XGBModel.save"> |
| <span class="sig-name descname"><span class="pre">save</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">file_name</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><span class="pre">str</span></a></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.XGBModel.save" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Save the model to a file |
| :param file_name: The filename |
| :type file_name: str</p> |
| </dd></dl> |
| |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.XGBModel.load"> |
| <span class="sig-name descname"><span class="pre">load</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">file_name</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><span class="pre">str</span></a></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.XGBModel.load" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Load the model from a file |
| :param file_name: The filename |
| :type file_name: str</p> |
| </dd></dl> |
| |
| </dd></dl> |
| |
| <dl class="py class"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.ApplyHistoryBest"> |
| <em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">ApplyHistoryBest</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">records</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">n_lines</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">include_compatible</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.ApplyHistoryBest" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Apply the history best config</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>records</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>, </em><em>list of str</em><em>, or </em><em>iterator of</em><em> (</em><a class="reference internal" href="#tvm.auto_scheduler.MeasureInput" title="tvm.auto_scheduler.measure.MeasureInput"><em>auto_scheduler.measure.MeasureInput</em></a><em>, </em><a class="reference internal" href="#tvm.auto_scheduler.MeasureResult" title="tvm.auto_scheduler.measure.MeasureResult"><em>auto_scheduler.measure.MeasureResult</em></a><em>)</em>) – Collection of tuning records. |
| If is str, then it should be the filename of a records log file. |
| Each row of this file is an encoded record pair. If it is an iterator, |
| it can either be a set of str filenames which will be applied jointly, |
| or a set of (input, result) tuples.</p></li> |
| <li><p><strong>n_lines</strong> (<em>Optional</em><em>[</em><a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.12)"><em>int</em></a><em>]</em>) – if it is not None, only load the first <cite>n_lines</cite> lines of log.</p></li> |
| <li><p><strong>include_compatible</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.12)"><em>bool</em></a>) – When set to True, compatible records will also be considered.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| <p><strong>Methods:</strong></p> |
| <table class="longtable docutils align-default"> |
| <colgroup> |
| <col style="width: 10%" /> |
| <col style="width: 90%" /> |
| </colgroup> |
| <tbody> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.ApplyHistoryBest.get_workload_entry" title="tvm.auto_scheduler.ApplyHistoryBest.get_workload_entry"><code class="xref py py-obj docutils literal notranslate"><span class="pre">get_workload_entry</span></code></a>(best_records, target_key, ...)</p></td> |
| <td><p>Get the entry of the target key and workload key hash in the given best record map.</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.ApplyHistoryBest.load" title="tvm.auto_scheduler.ApplyHistoryBest.load"><code class="xref py py-obj docutils literal notranslate"><span class="pre">load</span></code></a>(records[, n_lines])</p></td> |
| <td><p>Load records to this dispatch context</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.ApplyHistoryBest.update" title="tvm.auto_scheduler.ApplyHistoryBest.update"><code class="xref py py-obj docutils literal notranslate"><span class="pre">update</span></code></a>(target, workload_key, state)</p></td> |
| <td><p>Update the config for a workload</p></td> |
| </tr> |
| </tbody> |
| </table> |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.ApplyHistoryBest.get_workload_entry"> |
| <em class="property"><span class="pre">static</span> </em><span class="sig-name descname"><span class="pre">get_workload_entry</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">best_records</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target_key</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">workload_key</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.ApplyHistoryBest.get_workload_entry" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Get the entry of the target key and workload key hash in the given best record map.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>best_records</strong> (<em>Dict</em><em>[</em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>, </em><em>Dict</em><em>[</em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>, </em><em>Dict</em><em>[</em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>, </em><a class="reference internal" href="tir.html#tvm.tir.Any" title="tvm.tir.Any"><em>Any</em></a><em>]</em><em>]</em><em>]</em>) – The best record map.</p></li> |
| <li><p><strong>target_key</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a>) – The first key to the best_records.</p></li> |
| <li><p><strong>workload_key</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a>) – The workload key that can be decoded to workload hash and args.</p></li> |
| </ul> |
| </dd> |
| <dt class="field-even">Returns</dt> |
| <dd class="field-even"><p><ul class="simple"> |
| <li><p><strong>entry</strong> (<em>Dict[str, Any]</em>) – The entry in best_records with target key and workload hash.</p></li> |
| <li><p><strong>workload_hash</strong> (<em>str</em>) – The workload hash decoded from workload_key.</p></li> |
| <li><p><strong>workload_args</strong> (<em>Tuple[Any, …]</em>) – The hashable tuple of workload args decoded from workload_key.</p></li> |
| </ul> |
| </p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.ApplyHistoryBest.load"> |
| <span class="sig-name descname"><span class="pre">load</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">records</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">n_lines</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.ApplyHistoryBest.load" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Load records to this dispatch context</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>records</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em> or </em><em>iterator of</em><em> (</em><a class="reference internal" href="#tvm.auto_scheduler.MeasureInput" title="tvm.auto_scheduler.measure.MeasureInput"><em>auto_scheduler.measure.MeasureInput</em></a><em>, </em><a class="reference internal" href="#tvm.auto_scheduler.MeasureResult" title="tvm.auto_scheduler.measure.MeasureResult"><em>auto_scheduler.measure.MeasureResult</em></a><em>)</em>) – Collection of tuning records. |
| If is str, then it should be the filename of a records log file. |
| Each row of this file is an encoded record pair. Otherwise, it is an iterator.</p></li> |
| <li><p><strong>n_lines</strong> (<em>Optional</em><em>[</em><a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.12)"><em>int</em></a><em>]</em>) – if it is not None, only load the first <cite>n_lines</cite> lines of log</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.ApplyHistoryBest.update"> |
| <span class="sig-name descname"><span class="pre">update</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">target</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">workload_key</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">state</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.ApplyHistoryBest.update" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Update the config for a workload</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>target</strong> (<a class="reference internal" href="target.html#tvm.target.Target" title="tvm.target.Target"><em>Target</em></a>) – The current target</p></li> |
| <li><p><strong>workload_key</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a>) – The current workload_key.</p></li> |
| <li><p><strong>state</strong> (<em>StateObject</em>) – The state that stores schedule configuration for the workload</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| </dd></dl> |
| |
| <dl class="py class"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.ApplyHistoryBestOrSample"> |
| <em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">ApplyHistoryBestOrSample</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">records</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sample_simple_workloads</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cost_model_file</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">num_measure</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">-</span> <span class="pre">1</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.ApplyHistoryBestOrSample" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Apply the history best config, or sample a valid schedule if no config is found.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>records</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em> or </em><em>iterator of</em><em> (</em><a class="reference internal" href="#tvm.auto_scheduler.MeasureInput" title="tvm.auto_scheduler.measure.MeasureInput"><em>auto_scheduler.measure.MeasureInput</em></a><em>, </em><a class="reference internal" href="#tvm.auto_scheduler.MeasureResult" title="tvm.auto_scheduler.measure.MeasureResult"><em>auto_scheduler.measure.MeasureResult</em></a><em>)</em>) – Collection of tuning records. |
| If is str, then it should be the filename of a records log file. |
| Each row of this file is an encoded record pair. Otherwise, it is an iterator.</p></li> |
| <li><p><strong>sample_simple_workloads</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.12)"><em>bool</em></a>) – When False, sampling will not apply to simple workloads (w/o reduction).</p></li> |
| <li><p><strong>cost_model_file</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a>) – The filename of the pre-trained XGBoost cost model. If not present, then random |
| model will be used.</p></li> |
| <li><p><strong>num_measure</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.12)"><em>int</em></a>) – Meausre the top-N rank of sampled schedules on the device. The default -1 means |
| no measurement and simply return the top-1 schedule ranked by the cost model.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| <p><strong>Methods:</strong></p> |
| <table class="longtable docutils align-default"> |
| <colgroup> |
| <col style="width: 10%" /> |
| <col style="width: 90%" /> |
| </colgroup> |
| <tbody> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.ApplyHistoryBestOrSample.query" title="tvm.auto_scheduler.ApplyHistoryBestOrSample.query"><code class="xref py py-obj docutils literal notranslate"><span class="pre">query</span></code></a>(target, workload_key, has_complex_op, ...)</p></td> |
| <td><p>Query the context to get the specific config for a workload.</p></td> |
| </tr> |
| </tbody> |
| </table> |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.ApplyHistoryBestOrSample.query"> |
| <span class="sig-name descname"><span class="pre">query</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">target</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">workload_key</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">has_complex_op</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dag</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">func_name</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.ApplyHistoryBestOrSample.query" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Query the context to get the specific config for a workload. |
| If this function cannot find the result inside this context, it will query the result |
| from the upper contexts.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>target</strong> (<a class="reference internal" href="target.html#tvm.target.Target" title="tvm.target.Target"><em>Target</em></a>) – The current target</p></li> |
| <li><p><strong>workload_key</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a>) – The workload key</p></li> |
| <li><p><strong>has_complex_op</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.12)"><em>bool</em></a>) – Whether this workload has at least one complex op.</p></li> |
| <li><p><strong>dag</strong> (<a class="reference internal" href="#tvm.auto_scheduler.ComputeDAG" title="tvm.auto_scheduler.ComputeDAG"><em>ComputeDAG</em></a>) – The ComputeDAG of the workload.</p></li> |
| <li><p><strong>func_name</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a>) – The function name of this workload.</p></li> |
| </ul> |
| </dd> |
| <dt class="field-even">Returns</dt> |
| <dd class="field-even"><p><strong>state</strong> – The state that stores schedule configuration for the workload</p> |
| </dd> |
| <dt class="field-odd">Return type</dt> |
| <dd class="field-odd"><p>StateObject</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| </dd></dl> |
| |
| <dl class="py class"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.DispatchContext"> |
| <em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">DispatchContext</span></span><a class="headerlink" href="#tvm.auto_scheduler.DispatchContext" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Base class of dispatch context.</p> |
| <p><strong>Methods:</strong></p> |
| <table class="longtable docutils align-default"> |
| <colgroup> |
| <col style="width: 10%" /> |
| <col style="width: 90%" /> |
| </colgroup> |
| <tbody> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.DispatchContext.query" title="tvm.auto_scheduler.DispatchContext.query"><code class="xref py py-obj docutils literal notranslate"><span class="pre">query</span></code></a>(target, workload_key, has_complex_op, ...)</p></td> |
| <td><p>Query the context to get the specific config for a workload.</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.DispatchContext.update" title="tvm.auto_scheduler.DispatchContext.update"><code class="xref py py-obj docutils literal notranslate"><span class="pre">update</span></code></a>(target, workload_key, state)</p></td> |
| <td><p>Update the config for a workload</p></td> |
| </tr> |
| </tbody> |
| </table> |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.DispatchContext.query"> |
| <span class="sig-name descname"><span class="pre">query</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">target</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">workload_key</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">has_complex_op</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dag</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">func_name</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.DispatchContext.query" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Query the context to get the specific config for a workload. |
| If this function cannot find the result inside this context, it will query the result |
| from the upper contexts.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>target</strong> (<a class="reference internal" href="target.html#tvm.target.Target" title="tvm.target.Target"><em>Target</em></a>) – The current target</p></li> |
| <li><p><strong>workload_key</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a>) – The workload key</p></li> |
| <li><p><strong>has_complex_op</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.12)"><em>bool</em></a>) – Whether this workload has at least one complex op.</p></li> |
| <li><p><strong>dag</strong> (<a class="reference internal" href="#tvm.auto_scheduler.ComputeDAG" title="tvm.auto_scheduler.ComputeDAG"><em>ComputeDAG</em></a>) – The ComputeDAG of the workload.</p></li> |
| <li><p><strong>func_name</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a>) – The function name of this workload.</p></li> |
| </ul> |
| </dd> |
| <dt class="field-even">Returns</dt> |
| <dd class="field-even"><p><strong>state</strong> – The state that stores schedule configuration for the workload</p> |
| </dd> |
| <dt class="field-odd">Return type</dt> |
| <dd class="field-odd"><p>StateObject</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.DispatchContext.update"> |
| <span class="sig-name descname"><span class="pre">update</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">target</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">workload_key</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">state</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.DispatchContext.update" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Update the config for a workload</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>target</strong> (<a class="reference internal" href="target.html#tvm.target.Target" title="tvm.target.Target"><em>Target</em></a>) – The current target</p></li> |
| <li><p><strong>workload_key</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a>) – The current workload_key.</p></li> |
| <li><p><strong>state</strong> (<em>StateObject</em>) – The state that stores schedule configuration for the workload</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| </dd></dl> |
| |
| <dl class="py class"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.LocalBuilder"> |
| <em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">LocalBuilder</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">15</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">n_parallel</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">4</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">build_func</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'default'</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.LocalBuilder" title="Permalink to this definition">¶</a></dt> |
| <dd><p>LocalBuilder use local CPU cores to build programs in parallel.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>timeout</strong> (<em>int = 15</em>) – The timeout limit (in second) for each build thread. |
| This is used in a wrapper of the multiprocessing.Process.join().</p></li> |
| <li><p><strong>n_parallel</strong> (<em>int = multiprocessing.cpu_count</em><em>(</em><em>)</em>) – Number of threads used to build in parallel.</p></li> |
| <li><p><strong>build_func</strong> (<em>callable</em><em> or </em><em>str = "default"</em>) – If is ‘default’, use default build function |
| If is ‘ndk’, use function for android ndk |
| If is callable, use it as custom build function, expect lib_format field.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py class"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.LocalRPCMeasureContext"> |
| <em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">LocalRPCMeasureContext</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">priority</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">n_parallel</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">10</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">number</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">3</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">repeat</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">min_repeat_ms</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cooldown_interval</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">enable_cpu_cache_flush</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">device</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.LocalRPCMeasureContext" title="Permalink to this definition">¶</a></dt> |
| <dd><p>A context wrapper for running RPCRunner locally. |
| This will launch a local RPC Tracker and local RPC Server.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>priority</strong> (<em>int = 1</em>) – The priority of this run request, larger is more prior.</p></li> |
| <li><p><strong>n_parallel</strong> (<em>int = 1</em>) – The number of tasks run in parallel.</p></li> |
| <li><p><strong>timeout</strong> (<em>int = 10</em>) – The timeout limit (in second) for each run. |
| This is used in a wrapper of the multiprocessing.Process.join().</p></li> |
| <li><p><strong>number</strong> (<em>int = 3</em>) – The number of times to run the generated code for taking average. |
| We call these runs as one <cite>repeat</cite> of measurement.</p></li> |
| <li><p><strong>repeat</strong> (<em>int = 1</em>) – The number of times to repeat the measurement. |
| In total, the generated code will be run (1 + number x repeat) times, |
| where the first “1” is warm up and will be discarded. |
| The returned result contains <cite>repeat</cite> costs, |
| each of which is an average of <cite>number</cite> costs.</p></li> |
| <li><p><strong>min_repeat_ms</strong> (<em>int = 0</em>) – The minimum duration of one <cite>repeat</cite> in milliseconds. |
| By default, one <cite>repeat</cite> contains <cite>number</cite> runs. If this parameter is set, |
| the parameters <cite>number</cite> will be dynamically adjusted to meet the |
| minimum duration requirement of one <cite>repeat</cite>. |
| i.e., When the run time of one <cite>repeat</cite> falls below this time, the <cite>number</cite> parameter |
| will be automatically increased.</p></li> |
| <li><p><strong>cooldown_interval</strong> (<em>float = 0.0</em>) – The cool down interval between two measurements in seconds.</p></li> |
| <li><p><strong>enable_cpu_cache_flush</strong> (<em>bool = False</em>) – Whether to flush cache on CPU between repeated measurements. |
| Flushing cache can make the measured latency of one operator closer to |
| its actual latency during end-to-end inference. |
| To make this option effective, the argument <cite>number</cite> should also be set to 1. |
| This is only has effect on CPU task.</p></li> |
| <li><p><strong>device</strong> (<em>int = 0</em>) – Which device to run on if multiple are available.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py class"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.LocalRunner"> |
| <em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">LocalRunner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">10</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">number</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">3</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">repeat</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">min_repeat_ms</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">100</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cooldown_interval</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">enable_cpu_cache_flush</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">device</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.LocalRunner" title="Permalink to this definition">¶</a></dt> |
| <dd><p>LocalRunner that uses local CPU/GPU to measures the time cost of programs.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>timeout</strong> (<em>int = 10</em>) – The timeout limit (in second) for each run. |
| This is used in a wrapper of the multiprocessing.Process.join().</p></li> |
| <li><p><strong>number</strong> (<em>int = 3</em>) – The number of times to run the generated code for taking average. |
| We call these runs as one <cite>repeat</cite> of measurement.</p></li> |
| <li><p><strong>repeat</strong> (<em>int = 1</em>) – The number of times to repeat the measurement. |
| In total, the generated code will be run (1 + number x repeat) times, |
| where the first “1” is warm up and will be discarded. |
| The returned result contains <cite>repeat</cite> costs, |
| each of which is an average of <cite>number</cite> costs.</p></li> |
| <li><p><strong>min_repeat_ms</strong> (<em>int = 100</em>) – The minimum duration of one <cite>repeat</cite> in milliseconds. |
| By default, one <cite>repeat</cite> contains <cite>number</cite> runs. If this parameter is set, |
| the parameters <cite>number</cite> will be dynamically adjusted to meet the |
| minimum duration requirement of one <cite>repeat</cite>. |
| i.e., When the run time of one <cite>repeat</cite> falls below this time, the <cite>number</cite> parameter |
| will be automatically increased.</p></li> |
| <li><p><strong>cooldown_interval</strong> (<em>float = 0.0</em>) – The cool down interval between two measurements in seconds.</p></li> |
| <li><p><strong>enable_cpu_cache_flush</strong> (<em>bool = False</em>) – Whether to flush cache on CPU between repeated measurements. |
| Flushing cache can make the measured latency of one operator closer to |
| its actual latency during end-to-end inference. |
| To make this option effective, the argument <cite>number</cite> should also be set to 1. |
| This is only has effect on CPU task.</p></li> |
| <li><p><strong>device</strong> (<em>int = 0</em>) – Which device to run on if multiple are available.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py class"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.MeasureInput"> |
| <em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">MeasureInput</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">task</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">state</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.MeasureInput" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Store the input of a measurement.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>task</strong> (<a class="reference internal" href="#tvm.auto_scheduler.SearchTask" title="tvm.auto_scheduler.SearchTask"><em>SearchTask</em></a>) – The SearchTask of this measurement.</p></li> |
| <li><p><strong>state</strong> (<em>Union</em><em>[</em><em>State</em><em>, </em><em>StateObject</em><em>]</em>) – The State to be measured.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| <p><strong>Methods:</strong></p> |
| <table class="longtable docutils align-default"> |
| <colgroup> |
| <col style="width: 10%" /> |
| <col style="width: 90%" /> |
| </colgroup> |
| <tbody> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.MeasureInput.serialize" title="tvm.auto_scheduler.MeasureInput.serialize"><code class="xref py py-obj docutils literal notranslate"><span class="pre">serialize</span></code></a>()</p></td> |
| <td><p>Custom serialization to workaround MeasureInput not exposing all its members to the TVM ffi interface.</p></td> |
| </tr> |
| </tbody> |
| </table> |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.MeasureInput.serialize"> |
| <span class="sig-name descname"><span class="pre">serialize</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.MeasureInput.serialize" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Custom serialization to workaround MeasureInput not exposing all its |
| members to the TVM ffi interface.</p> |
| <p>Note that we do not implement __getstate__ as it does not seem to work |
| with initialization of the workload registry (maybe because of |
| initialization order?).</p> |
| </dd></dl> |
| |
| </dd></dl> |
| |
| <dl class="py class"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.MeasureResult"> |
| <em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">MeasureResult</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">costs</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">error_no</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">error_msg</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">all_cost</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timestamp</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.MeasureResult" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Store the results of a measurement.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>costs</strong> (<em>List</em><em>[</em><a class="reference external" href="https://docs.python.org/3/library/functions.html#float" title="(in Python v3.12)"><em>float</em></a><em>]</em>) – The time costs of execution.</p></li> |
| <li><p><strong>error_no</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.12)"><em>int</em></a>) – The error code.</p></li> |
| <li><p><strong>error_msg</strong> (<em>Optional</em><em>[</em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>]</em>) – The error message if there is any error.</p></li> |
| <li><p><strong>all_cost</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#float" title="(in Python v3.12)"><em>float</em></a>) – The time cost of build and run.</p></li> |
| <li><p><strong>timestamp</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#float" title="(in Python v3.12)"><em>float</em></a>) – The time stamps of this measurement.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py class"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.RPCRunner"> |
| <em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">RPCRunner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">key</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">host</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">priority</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">n_parallel</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">10</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">number</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">3</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">repeat</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">min_repeat_ms</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">100</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cooldown_interval</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">enable_cpu_cache_flush</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">device</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.RPCRunner" title="Permalink to this definition">¶</a></dt> |
| <dd><p>RPCRunner that uses RPC call to measures the time cost of programs on remote devices. |
| Or sometime we may need to use RPC even in local running to insulate the thread environment. |
| (e.g. running CUDA programs)</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>key</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a>) – The key of the device registered in the RPC tracker.</p></li> |
| <li><p><strong>host</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a>) – The host address of the RPC Tracker.</p></li> |
| <li><p><strong>port</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.12)"><em>int</em></a>) – The port of RPC Tracker.</p></li> |
| <li><p><strong>priority</strong> (<em>int = 1</em>) – The priority of this run request, larger is more prior.</p></li> |
| <li><p><strong>n_parallel</strong> (<em>int = 1</em>) – The number of tasks run in parallel.</p></li> |
| <li><p><strong>timeout</strong> (<em>int = 10</em>) – The timeout limit (in second) for each run. |
| This is used in a wrapper of the multiprocessing.Process.join().</p></li> |
| <li><p><strong>number</strong> (<em>int = 3</em>) – The number of times to run the generated code for taking average. |
| We call these runs as one <cite>repeat</cite> of measurement.</p></li> |
| <li><p><strong>repeat</strong> (<em>int = 1</em>) – The number of times to repeat the measurement. |
| In total, the generated code will be run (1 + number x repeat) times, |
| where the first “1” is warm up and will be discarded. |
| The returned result contains <cite>repeat</cite> costs, |
| each of which is an average of <cite>number</cite> costs.</p></li> |
| <li><p><strong>min_repeat_ms</strong> (<em>int = 100</em>) – The minimum duration of one <cite>repeat</cite> in milliseconds. |
| By default, one <cite>repeat</cite> contains <cite>number</cite> runs. If this parameter is set, |
| the parameters <cite>number</cite> will be dynamically adjusted to meet the |
| minimum duration requirement of one <cite>repeat</cite>. |
| i.e., When the run time of one <cite>repeat</cite> falls below this time, the <cite>number</cite> parameter |
| will be automatically increased.</p></li> |
| <li><p><strong>cooldown_interval</strong> (<em>float = 0.0</em>) – The cool down interval between two measurements in seconds.</p></li> |
| <li><p><strong>enable_cpu_cache_flush</strong> (<em>bool = False</em>) – Whether to flush cache on CPU between repeated measurements. |
| Flushing cache can make the measured latency of one operator closer to |
| its actual latency during end-to-end inference. |
| To make this option effective, the argument <cite>number</cite> should also be set to 1. |
| This is only has effect on CPU task.</p></li> |
| <li><p><strong>device</strong> (<em>int = 0</em>) – Which device to run on if multiple are available.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py function"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.register_task_input_check_func"> |
| <span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">register_task_input_check_func</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">func_name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">f</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">override</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.register_task_input_check_func" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Register a function that checks the input buffer map.</p> |
| <p>The input function should take a list of Tensor wich indicate the Input/output Tensor of a TVM |
| subgraph and return a Map from the input Tensor to its buffer name.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>func_name</strong> (<em>Union</em><em>[</em><em>Function</em><em>, </em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>]</em>) – The check function that returns the compute declaration Tensors or its function name.</p></li> |
| <li><p><strong>f</strong> (<em>Optional</em><em>[</em><em>Function</em><em>]</em>) – The check function to be registered.</p></li> |
| <li><p><strong>override</strong> (<em>boolean = False</em>) – Whether to override existing entry.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| <p class="rubric">Examples</p> |
| <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="nd">@auto_scheduler</span><span class="o">.</span><span class="n">register_task_input_check_func</span> |
| <span class="k">def</span> <span class="nf">check_task_input_by_placeholder_name</span><span class="p">(</span><span class="n">args</span> <span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Tensor</span><span class="p">]):</span> |
| <span class="n">tensor_input_map</span> <span class="o">=</span> <span class="p">{}</span> |
| <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span><span class="p">:</span> |
| <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">arg</span><span class="o">.</span><span class="n">op</span><span class="p">,</span> <span class="n">tvm</span><span class="o">.</span><span class="n">te</span><span class="o">.</span><span class="n">PlaceholderOp</span><span class="p">):</span> |
| <span class="k">if</span> <span class="n">arg</span><span class="o">.</span><span class="n">op</span><span class="o">.</span><span class="n">name</span> <span class="o">!=</span> <span class="s2">"placeholder"</span><span class="p">:</span> |
| <span class="n">tensor_input_map</span><span class="p">[</span><span class="n">arg</span><span class="p">]</span> <span class="o">=</span> <span class="n">arg</span><span class="o">.</span><span class="n">op</span><span class="o">.</span><span class="n">name</span> |
| <span class="k">return</span> <span class="n">tensor_input_map</span> |
| </pre></div> |
| </div> |
| </dd></dl> |
| |
| <dl class="py class"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.RecordReader"> |
| <em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">RecordReader</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.RecordReader" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Reader of the json log file.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><p><strong>filename</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a>) – File name for this reader to load log from.</p> |
| </dd> |
| </dl> |
| <p><strong>Methods:</strong></p> |
| <table class="longtable docutils align-default"> |
| <colgroup> |
| <col style="width: 10%" /> |
| <col style="width: 90%" /> |
| </colgroup> |
| <tbody> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.RecordReader.check_workload_key" title="tvm.auto_scheduler.RecordReader.check_workload_key"><code class="xref py py-obj docutils literal notranslate"><span class="pre">check_workload_key</span></code></a>(inputs)</p></td> |
| <td><p>Check and throw warnings for records with old format workload key.</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.RecordReader.read_lines" title="tvm.auto_scheduler.RecordReader.read_lines"><code class="xref py py-obj docutils literal notranslate"><span class="pre">read_lines</span></code></a>([max_lines, skip_lines])</p></td> |
| <td><p>Read multiple lines from the log file.</p></td> |
| </tr> |
| </tbody> |
| </table> |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.RecordReader.check_workload_key"> |
| <span class="sig-name descname"><span class="pre">check_workload_key</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">inputs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.RecordReader.check_workload_key" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Check and throw warnings for records with old format workload key.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><p><strong>inputs</strong> (<em>List</em><em>[</em><a class="reference internal" href="#tvm.auto_scheduler.MeasureInput" title="tvm.auto_scheduler.MeasureInput"><em>MeasureInput</em></a><em>]</em>) – The measure inputs to be checked.</p> |
| </dd> |
| </dl> |
| <p class="rubric">Notes</p> |
| <p>This checker could be deprecated in the future.</p> |
| </dd></dl> |
| |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.RecordReader.read_lines"> |
| <span class="sig-name descname"><span class="pre">read_lines</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">max_lines</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">skip_lines</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.RecordReader.read_lines" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Read multiple lines from the log file.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>max_lines</strong> (<em>Optional</em><em>[</em><a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.12)"><em>int</em></a><em>]</em>) – The maximum number of lines. None to read all lines.</p></li> |
| <li><p><strong>skip_lines</strong> (<em>int = 0</em>) – Skip the first n lines.</p></li> |
| </ul> |
| </dd> |
| <dt class="field-even">Returns</dt> |
| <dd class="field-even"><p><ul class="simple"> |
| <li><p><strong>inputs</strong> (<em>List[auto_scheduler.measure.MeasureInput]</em>) – The MeasureInputs loaded from the log file.</p></li> |
| <li><p><strong>results</strong> (<em>List[auto_scheduler.measure.MeasureResult]</em>) – The MeasureResults loaded from the log file.</p></li> |
| </ul> |
| </p> |
| </dd> |
| </dl> |
| <p class="rubric">Notes</p> |
| <p>Some unimportant and expensive fields in the returned MeasureInput are not deserialized |
| for faster read speed (e.g. input.task.compute_dag, input.state.stages). |
| If you want to use them, you can call the <code class="code docutils literal notranslate"><span class="pre">recover_measure_input</span></code> below |
| to rebuild these fields.</p> |
| </dd></dl> |
| |
| </dd></dl> |
| |
| <dl class="py class"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.RecordToFile"> |
| <em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">RecordToFile</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.RecordToFile" title="Permalink to this definition">¶</a></dt> |
| <dd><p>A measurement callback that writes measurement records into a file.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><p><strong>filename</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a>) – File name for this callback to write log to.</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py function"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.load_best_record"> |
| <span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">load_best_record</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">workload_key</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">include_compatible</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.load_best_record" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Return the best measurement pair form a log file. This may return none results if |
| there is no legal measure pair with the specified workload_key/target found from the log file.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>filename</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a>) – File name to load log from.</p></li> |
| <li><p><strong>workload_key</strong> (<em>Optional</em><em>[</em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>]</em>) – The workload key of the compute declaration. |
| With <cite>None</cite>, this returns the best measure pair of all workloads.</p></li> |
| <li><p><strong>target</strong> (<em>Optional</em><em>[</em><a class="reference internal" href="target.html#tvm.target.Target" title="tvm.target.Target"><em>tvm.target.Target</em></a><em>]</em>) – The target device. |
| With <cite>None</cite>, this returns the best measure pair of all target devices.</p></li> |
| <li><p><strong>include_compatible</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.12)"><em>bool</em></a>) – When set to True, all compatible records in the log file will be considered.</p></li> |
| </ul> |
| </dd> |
| <dt class="field-even">Returns</dt> |
| <dd class="field-even"><p><ul class="simple"> |
| <li><p><strong>input</strong> (<em>auto_scheduler.measure.MeasureInput</em>) – The best State’s MeasureInput from this log fine.</p></li> |
| <li><p><strong>result</strong> (<em>auto_scheduler.measure.MeasureResult</em>) – The best State’s MeasureResult from this log fine.</p></li> |
| </ul> |
| </p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py function"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.load_records"> |
| <span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">load_records</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.load_records" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Load measurement records from a file.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><p><strong>filename</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a>) – File name to load log from.</p> |
| </dd> |
| <dt class="field-even">Returns</dt> |
| <dd class="field-even"><p><strong>logs</strong></p> |
| </dd> |
| <dt class="field-odd">Return type</dt> |
| <dd class="field-odd"><p>List[<a class="reference internal" href="#tvm.auto_scheduler.MeasureInput" title="tvm.auto_scheduler.measure.MeasureInput">auto_scheduler.measure.MeasureInput</a>, <a class="reference internal" href="#tvm.auto_scheduler.MeasureResult" title="tvm.auto_scheduler.measure.MeasureResult">auto_scheduler.measure.MeasureResult</a>]</p> |
| </dd> |
| </dl> |
| <p class="rubric">Notes</p> |
| <p>Some unimportant and expensive fields in the returned MeasureInput are not deserialized |
| for faster read speed (e.g., input.task.compute_dag, input.state.stages). |
| If you want to use them, you can call the <code class="code docutils literal notranslate"><span class="pre">recover_measure_input</span></code> below |
| to rebuild these fields.</p> |
| </dd></dl> |
| |
| <dl class="py function"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.save_records"> |
| <span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">save_records</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">inputs</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">results</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.save_records" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Append measure records to file.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>filename</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a>) – File name to write log to.</p></li> |
| <li><p><strong>inputs</strong> (<em>List</em><em>[</em><em>MeasureInputs</em><em>]</em>) – The MeasureInputs to be written.</p></li> |
| <li><p><strong>results</strong> (<em>List</em><em>[</em><em>MeasureResults</em><em>]</em>) – The MeasureResults to be written.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py function"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.extract_tasks"> |
| <span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">extract_tasks</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mod</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">params</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target_host</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">hardware_params</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">include_simple_tasks</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dump_workload_to_dag_log</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">opt_level</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">3</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">other_targets</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.extract_tasks" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Extract tuning tasks from a relay program.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>mod</strong> (<em>tvm.IRModule</em><em> or </em><em>relay.function.Function</em>) – The module or function to tune</p></li> |
| <li><p><strong>params</strong> (<em>dict of str to numpy array</em>) – The associated parameters of the program</p></li> |
| <li><p><strong>target</strong> (<em>Union</em><em>[</em><a class="reference internal" href="target.html#tvm.target.Target" title="tvm.target.Target"><em>tvm.target.Target</em></a><em>, </em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>]</em>) – The compilation target</p></li> |
| <li><p><strong>target_host</strong> (<em>Optional</em><em>[</em><em>Union</em><em>[</em><a class="reference internal" href="target.html#tvm.target.Target" title="tvm.target.Target"><em>tvm.target.Target</em></a><em>, </em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>]</em><em>]</em>) – The host compilation target</p></li> |
| <li><p><strong>hardware_params</strong> (<em>Optional</em><em>[</em><a class="reference internal" href="#tvm.auto_scheduler.HardwareParams" title="tvm.auto_scheduler.HardwareParams"><em>HardwareParams</em></a><em>]</em>) – Hardware parameters used for the search tasks</p></li> |
| <li><p><strong>include_simple_tasks</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.12)"><em>bool</em></a>) – Whether to extract simple tasks that do not include complicated ops.</p></li> |
| <li><p><strong>dump_workload_to_dag_log</strong> (<em>Optional</em><em>[</em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>]</em>) – A file to dump an association between the workload keys and the actual DAG</p></li> |
| <li><p><strong>opt_level</strong> (<em>Optional</em><em>[</em><a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.12)"><em>int</em></a><em>]</em>) – The optimization level of the task extractions.</p></li> |
| <li><p><strong>other_targets</strong> (<em>Optional</em><em>[</em><em>List</em><em>[</em><a class="reference internal" href="target.html#tvm.target.Target" title="tvm.target.Target"><em>tvm.target.Target</em></a><em>]</em><em>]</em>) – Other targets for call_all_topi_funcs, e.g., cutlass target.</p></li> |
| </ul> |
| </dd> |
| <dt class="field-even">Returns</dt> |
| <dd class="field-even"><p><ul class="simple"> |
| <li><p><strong>tasks</strong> (<em>List[SearchTask]</em>) – The tasks in this network</p></li> |
| <li><p><strong>weights</strong> (<em>List[int]</em>) – The weight (i.e. the number of appearance) of extracted tasks</p></li> |
| </ul> |
| </p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py function"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.is_auto_scheduler_enabled"> |
| <span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">is_auto_scheduler_enabled</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.is_auto_scheduler_enabled" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Return whether the auto-scheduler is enabled.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><p><strong>enabled</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.12)"><em>bool</em></a>) – Whether the auto-scheduler is enabled</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py function"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.remove_index_check"> |
| <span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">remove_index_check</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tensor</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.remove_index_check" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Remove the safety check in the indexing function for a tensor. |
| This is done by monkey patching its indexing function. |
| After removing the check, we are allowed to create a |
| temporary wrong IR and fix it later in other places.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><p><strong>tensor</strong> (<a class="reference internal" href="te.html#tvm.te.Tensor" title="tvm.te.Tensor"><em>Tensor</em></a>) – The tensor to remove index check.</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py function"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.rewrite_compute_body"> |
| <span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">rewrite_compute_body</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">compute_tensor</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">new_layout</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.rewrite_compute_body" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Rewrite the body of a ComputeOp according to a new layout of a placeholder</p> |
| </dd></dl> |
| |
| <dl class="py function"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.rewrite_tensor_shape"> |
| <span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">rewrite_tensor_shape</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tensor</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">shape</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.rewrite_tensor_shape" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Rewrite the tensor shape</p> |
| </dd></dl> |
| |
| <dl class="py class"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.EmptyPolicy"> |
| <em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">EmptyPolicy</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">task</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">init_search_callbacks</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.EmptyPolicy" title="Permalink to this definition">¶</a></dt> |
| <dd><p>A simple example of the search policy which always returns |
| the initial naive schedule (state).</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>task</strong> (<a class="reference internal" href="#tvm.auto_scheduler.SearchTask" title="tvm.auto_scheduler.SearchTask"><em>SearchTask</em></a>) – The SearchTask for the computation declaration.</p></li> |
| <li><p><strong>init_search_callbacks</strong> (<em>Optional</em><em>[</em><em>List</em><em>[</em><em>SearchCallback</em><em>]</em><em>]</em>) – Callback functions called before the search process.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py class"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.PreloadCustomSketchRule"> |
| <em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">PreloadCustomSketchRule</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">meet_condition_func</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">apply_func</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">rule_name</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'CustomSketchRule'</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.PreloadCustomSketchRule" title="Permalink to this definition">¶</a></dt> |
| <dd><p>A SearchCallback for SketchSearchPolicy that allows users to add |
| custom sketch rule.</p> |
| <p class="rubric">Notes</p> |
| <p>This is an advanced feature. Make sure you’re clear how it works and this should only be used |
| in SketchSearchPolicy.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>meet_condition_func</strong> (<em>Callable</em>) – A function with <cite>(policy, state, stage_id) -> int</cite>. Should return one of the result |
| enumeration.</p></li> |
| <li><p><strong>apply_func</strong> (<em>Callable</em>) – A function with <cite>(policy, state, stage_id) -> [[State, int], …]</cite>.</p></li> |
| <li><p><strong>rule_name</strong> (<em>str = "CustomSketchRule"</em>) – The name of this custom sketch rule.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py class"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.PreloadMeasuredStates"> |
| <em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">PreloadMeasuredStates</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.PreloadMeasuredStates" title="Permalink to this definition">¶</a></dt> |
| <dd><p>A SearchCallback to load measured states from the log file for a search policy.</p> |
| <dl class="simple"> |
| <dt>This can resume the state of the search policy:</dt><dd><ul class="simple"> |
| <li><p>Making sure an already measured state in former searches will never be measured again.</p></li> |
| <li><p>The history states can be used to speed up the search process(e.g. SketchPolicy uses |
| history states as starting point to perform Evolutionary Search).</p></li> |
| </ul> |
| </dd> |
| </dl> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><p><strong>filename</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a>) – The name of the record file.</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py class"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.SketchPolicy"> |
| <em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">SketchPolicy</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">task</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">program_cost_model</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">auto_scheduler.RandomModel(0x3cf2708)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">params</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">seed</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">verbose</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">init_search_callbacks</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.SketchPolicy" title="Permalink to this definition">¶</a></dt> |
| <dd><p>The search policy that searches in a hierarchical search space defined by sketches. |
| The policy randomly samples programs from the space defined by sketches and use evolutionary |
| search to fine-tune them.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>task</strong> (<a class="reference internal" href="#tvm.auto_scheduler.SearchTask" title="tvm.auto_scheduler.SearchTask"><em>SearchTask</em></a>) – The SearchTask for the computation declaration.</p></li> |
| <li><p><strong>program_cost_model</strong> (<em>CostModel = RandomModel</em><em>(</em><em>)</em>) – The cost model to estimate the complete schedules.</p></li> |
| <li><p><strong>params</strong> (<em>Optional</em><em>[</em><em>Dict</em><em>[</em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>, </em><a class="reference internal" href="tir.html#tvm.tir.Any" title="tvm.tir.Any"><em>Any</em></a><em>]</em><em>]</em>) – Parameters of the search policy. |
| See <cite>src/auto_scheduler/search_policy/sketch_search_policy.h</cite> for the definitions. |
| See <cite>DEFAULT_PARAMS</cite> below to find the default values.</p></li> |
| <li><p><strong>seed</strong> (<em>Optional</em><em>[</em><a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.12)"><em>int</em></a><em>]</em>) – Random seed.</p></li> |
| <li><p><strong>verbose</strong> (<em>int = 1</em>) – Verbosity level. 0 for silent, 1 to output information during schedule search.</p></li> |
| <li><p><strong>init_search_callbacks</strong> (<em>Optional</em><em>[</em><em>List</em><em>[</em><em>SearchCallback</em><em>]</em><em>]</em>) – <p>Callback functions called before the search process, usually used to do extra |
| initializations. |
| Possible callbacks:</p> |
| <blockquote> |
| <div><ul> |
| <li><p>auto_scheduler.PreloadMeasuredStates</p></li> |
| <li><p>auto_scheduler.PreloadCustomSketchRule</p></li> |
| </ul> |
| </div></blockquote> |
| </p></li> |
| </ul> |
| </dd> |
| </dl> |
| <p><strong>Methods:</strong></p> |
| <table class="longtable docutils align-default"> |
| <colgroup> |
| <col style="width: 10%" /> |
| <col style="width: 90%" /> |
| </colgroup> |
| <tbody> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.SketchPolicy.generate_sketches" title="tvm.auto_scheduler.SketchPolicy.generate_sketches"><code class="xref py py-obj docutils literal notranslate"><span class="pre">generate_sketches</span></code></a>([print_for_debug])</p></td> |
| <td><p>Generate the sketches.</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.SketchPolicy.sample_initial_population" title="tvm.auto_scheduler.SketchPolicy.sample_initial_population"><code class="xref py py-obj docutils literal notranslate"><span class="pre">sample_initial_population</span></code></a>()</p></td> |
| <td><p>Sample initial population.</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.SketchPolicy.evolutionary_search" title="tvm.auto_scheduler.SketchPolicy.evolutionary_search"><code class="xref py py-obj docutils literal notranslate"><span class="pre">evolutionary_search</span></code></a>(init_populations, out_size)</p></td> |
| <td><p>Perform evolutionary search.</p></td> |
| </tr> |
| </tbody> |
| </table> |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.SketchPolicy.generate_sketches"> |
| <span class="sig-name descname"><span class="pre">generate_sketches</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">print_for_debug</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.SketchPolicy.generate_sketches" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Generate the sketches. |
| This python interface is mainly used for debugging and testing. |
| The actual search is all done in c++.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><p><strong>print_for_debug</strong> (<em>bool = False</em>) – Whether print out the sketches for debug.</p> |
| </dd> |
| <dt class="field-even">Returns</dt> |
| <dd class="field-even"><p><strong>sketches</strong> – The generated sketches of this search task.</p> |
| </dd> |
| <dt class="field-odd">Return type</dt> |
| <dd class="field-odd"><p>List[State]</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.SketchPolicy.sample_initial_population"> |
| <span class="sig-name descname"><span class="pre">sample_initial_population</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.SketchPolicy.sample_initial_population" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Sample initial population. |
| This python interface is mainly used for debugging and testing. |
| The actual search is all done in c++.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Returns</dt> |
| <dd class="field-odd"><p><strong>states</strong> – The sampled states</p> |
| </dd> |
| <dt class="field-even">Return type</dt> |
| <dd class="field-even"><p>List[State]</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.SketchPolicy.evolutionary_search"> |
| <span class="sig-name descname"><span class="pre">evolutionary_search</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">init_populations</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">out_size</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.SketchPolicy.evolutionary_search" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Perform evolutionary search. |
| This python interface is mainly used for debugging and testing. |
| The actual search is all done in c++.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>init_populations</strong> (<em>List</em><em>[</em><em>State</em><em>]</em>) – The initial population states</p></li> |
| <li><p><strong>out_size</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.12)"><em>int</em></a>) – The size of generated states</p></li> |
| </ul> |
| </dd> |
| <dt class="field-even">Returns</dt> |
| <dd class="field-even"><p><strong>states</strong> – The generated states</p> |
| </dd> |
| <dt class="field-odd">Return type</dt> |
| <dd class="field-odd"><p>List[State]</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| </dd></dl> |
| |
| <dl class="py class"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.HardwareParams"> |
| <em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">HardwareParams</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">num_cores</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">vector_unit_bytes</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cache_line_bytes</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_shared_memory_per_block</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_local_memory_per_block</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_threads_per_block</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_vthread_extent</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">warp_size</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target_host</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.HardwareParams" title="Permalink to this definition">¶</a></dt> |
| <dd><p>The parameters of target hardware used to guide the search policy.</p> |
| <p>When a parameter isn’t provided, it will instead use the |
| current machine’s default value if target is specified. |
| TODO(jcf94): This is considered to be merged with the new Target specification: |
| <a class="reference external" href="https://discuss.tvm.apache.org/t/rfc-tvm-target-specification/6844">https://discuss.tvm.apache.org/t/rfc-tvm-target-specification/6844</a> |
| :param num_cores: The number of device cores. |
| :type num_cores: int, optional |
| :param vector_unit_bytes: The width of vector units in bytes. |
| :type vector_unit_bytes: int, optional |
| :param cache_line_bytes: The size of cache line in bytes. |
| :type cache_line_bytes: int, optional |
| :param max_shared_memory_per_block: The max shared memory per block in bytes. |
| :type max_shared_memory_per_block: int, optional |
| :param max_local_memory_per_block: The max local memory per block in bytes. |
| :type max_local_memory_per_block: int, optional |
| :param max_threads_per_block: The max number of threads per block. |
| :type max_threads_per_block: int, optional |
| :param max_vthread_extent: The max vthread extent. |
| :type max_vthread_extent: int, optional |
| :param warp_size: The thread numbers of a warp. |
| :type warp_size: int, optional |
| :param target: The compilation target. Used to determine default values if provided. |
| :type target: str or Target, optional |
| :param target_host: The compilation target host. Used to determine default values if provided. |
| :type target_host: str or Target, optional</p> |
| </dd></dl> |
| |
| <dl class="py class"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.SearchTask"> |
| <em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">SearchTask</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">func</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">compute_dag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">workload_key</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target_host</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">hardware_params</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">layout_rewrite_option</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">task_inputs</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">task_inputs_overwrite</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">task_inputs_save_to_file</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">desc</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">''</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.SearchTask" title="Permalink to this definition">¶</a></dt> |
| <dd><p>The computation information and hardware parameters for a schedule search task.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>func</strong> (<em>Union</em><em>[</em><em>Function</em><em>, </em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>]</em>) – The function that returns the compute declaration Tensors. |
| Can be the a function or the function name.</p></li> |
| <li><p><strong>args</strong> (<em>Union</em><em>[</em><em>Tuple</em><em>[</em><a class="reference internal" href="tir.html#tvm.tir.Any" title="tvm.tir.Any"><em>Any</em></a><em>, </em><em>...</em><em>]</em><em>, </em><em>List</em><em>[</em><a class="reference internal" href="tir.html#tvm.tir.Any" title="tvm.tir.Any"><em>Any</em></a><em>]</em><em>]</em>) – The args of the function.</p></li> |
| <li><p><strong>compute_dag</strong> (<a class="reference internal" href="#tvm.auto_scheduler.ComputeDAG" title="tvm.auto_scheduler.ComputeDAG"><em>ComputeDAG</em></a>) – The ComputeDAG for the corresponding compute declaration.</p></li> |
| <li><p><strong>workload_key</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a>) – The workload key for the corresponding compute declaration.</p></li> |
| <li><p><strong>target</strong> (<em>any target-like object</em><em>, </em><em>see Target.canon_target</em>) – The target device of this search task.</p></li> |
| <li><p><strong>target_host</strong> (<a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.12)"><em>None</em></a><em> or </em><em>any target-like object</em><em>, </em><em>see Target.canon_target</em>) – The target host device of this search task.</p></li> |
| <li><p><strong>hardware_params</strong> (<em>Optional</em><em>[</em><a class="reference internal" href="#tvm.auto_scheduler.HardwareParams" title="tvm.auto_scheduler.HardwareParams"><em>HardwareParams</em></a><em>]</em>) – Hardware parameters used in this search task.</p></li> |
| <li><p><strong>layout_rewrite_option</strong> (<em>Optional</em><em>[</em><a class="reference internal" href="#tvm.auto_scheduler.LayoutRewriteOption" title="tvm.auto_scheduler.LayoutRewriteOption"><em>LayoutRewriteOption</em></a><em>]</em>) – The layout rewrite option used for measuring programs. If None, the default value will be |
| set depending on the specified target. |
| Auto_scheduler will find a better schedule for the specified layout rewrite option. |
| The NO_REWRITE and INSERT_TRANSFORM_STAGE are expected to be used when tuning a standalone |
| op, and the REWRITE_FOR_PRE_TRANSFORMED is expected to be used when tuning ops inside a |
| network.</p></li> |
| <li><p><strong>task_inputs</strong> (<em>Union</em><em>[</em><em>Dict</em><em>[</em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>, </em><a class="reference internal" href="ndarray.html#tvm.nd.NDArray" title="tvm.nd.NDArray"><em>tvm.nd.NDArray</em></a><em>]</em><em>, </em><em>List</em><em>[</em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>]</em><em>]</em>) – A dict maps the input names to input tensors or a list of input names. |
| Some special Tensor used as inputs in program measuring. Usually we do not need to care |
| about it, but for special workloads like Sparse computation the Sparse Tensor input are |
| meaningful that we cannot use random input directly.</p></li> |
| <li><p><strong>task_inputs_overwrite</strong> (<em>bool = False</em>) – Whether to overwrite the data if a name has already in the global table.</p></li> |
| <li><p><strong>task_inputs_save_to_file</strong> (<em>bool = False</em>) – Whether to save the data to a local file as well. This can be reused to resume the last |
| tuning process.</p></li> |
| <li><p><strong>desc</strong> (<em>str = ""</em>) – The description string of this task.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| <p class="rubric">Examples</p> |
| <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># We support two ways to create a search task</span> |
| |
| <span class="c1"># Way 1: create a task by a workload generation function.</span> |
| <span class="c1"># The `workload_func` is a function decorated by @auto_scheduler.register_workload</span> |
| <span class="n">task</span> <span class="o">=</span> <span class="n">SearchTask</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">workload_func</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="n">args</span><span class="p">,</span> <span class="n">target</span><span class="o">=</span><span class="n">target</span><span class="p">)</span> |
| |
| <span class="c1"># Way 2: create a task by a workload_key.</span> |
| <span class="c1"># The `workload_key` is a string, which can be either a hash key or a json-serialized</span> |
| <span class="c1"># tuple(func, args).</span> |
| <span class="n">task</span> <span class="o">=</span> <span class="n">SearchTask</span><span class="p">(</span><span class="n">workload_key</span><span class="o">=</span><span class="n">workload_key</span><span class="p">,</span> <span class="n">target</span><span class="o">=</span><span class="n">target</span><span class="p">)</span> |
| </pre></div> |
| </div> |
| <p><strong>Methods:</strong></p> |
| <table class="longtable docutils align-default"> |
| <colgroup> |
| <col style="width: 10%" /> |
| <col style="width: 90%" /> |
| </colgroup> |
| <tbody> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.SearchTask.tune" title="tvm.auto_scheduler.SearchTask.tune"><code class="xref py py-obj docutils literal notranslate"><span class="pre">tune</span></code></a>(tuning_options[, search_policy, ...])</p></td> |
| <td><p>Run auto scheduling search for a task</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="#tvm.auto_scheduler.SearchTask.apply_best" title="tvm.auto_scheduler.SearchTask.apply_best"><code class="xref py py-obj docutils literal notranslate"><span class="pre">apply_best</span></code></a>(log_file[, include_compatible, ...])</p></td> |
| <td><p>Apply the history best from a log file and return the schedule.</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.SearchTask.print_best" title="tvm.auto_scheduler.SearchTask.print_best"><code class="xref py py-obj docutils literal notranslate"><span class="pre">print_best</span></code></a>(log_file[, print_mode])</p></td> |
| <td><p>Print the best schedule as python schedule API code or CUDA source code.</p></td> |
| </tr> |
| </tbody> |
| </table> |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.SearchTask.tune"> |
| <span class="sig-name descname"><span class="pre">tune</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tuning_options</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">search_policy</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">adaptive_training</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.SearchTask.tune" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Run auto scheduling search for a task</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>tuning_options</strong> (<a class="reference internal" href="#tvm.auto_scheduler.TuningOptions" title="tvm.auto_scheduler.TuningOptions"><em>TuningOptions</em></a>) – Tuning and measurement options.</p></li> |
| <li><p><strong>search_policy</strong> (<em>Optional</em><em>[</em><em>SearchPolicy</em><em>]</em>) – The search policy to be used for schedule search.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.SearchTask.apply_best"> |
| <span class="sig-name descname"><span class="pre">apply_best</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">log_file</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">include_compatible</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">layout_rewrite_option</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.SearchTask.apply_best" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Apply the history best from a log file and return the schedule.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>log_file</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a>) – The name of the log file.</p></li> |
| <li><p><strong>include_compatible</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.12)"><em>bool</em></a>) – When set to True, all compatible records in the log file will be considered.</p></li> |
| <li><p><strong>layout_rewrite_option</strong> (<em>Optional</em><em>[</em><a class="reference internal" href="#tvm.auto_scheduler.LayoutRewriteOption" title="tvm.auto_scheduler.LayoutRewriteOption"><em>LayoutRewriteOption</em></a><em>]</em>) – The layout rewrite option.</p></li> |
| </ul> |
| </dd> |
| <dt class="field-even">Returns</dt> |
| <dd class="field-even"><p></p> |
| </dd> |
| <dt class="field-odd">Return type</dt> |
| <dd class="field-odd"><p>A <cite>te.Schedule</cite> and the a list of <cite>te.Tensor</cite> to be used in <cite>tvm.lower</cite> or <cite>tvm.build</cite>.</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.SearchTask.print_best"> |
| <span class="sig-name descname"><span class="pre">print_best</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">log_file</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">print_mode</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'schedule'</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.SearchTask.print_best" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Print the best schedule as python schedule API code or CUDA source code.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>log_file</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a>) – The name of the log file</p></li> |
| <li><p><strong>print_mode</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a>) – if “schedule”, print the best schedule as python schedule API code. |
| if “cuda”, print the best schedule as CUDA source code.</p></li> |
| </ul> |
| </dd> |
| <dt class="field-even">Returns</dt> |
| <dd class="field-even"><p><strong>code</strong> – The best schedule code in python API or CUDA source code</p> |
| </dd> |
| <dt class="field-odd">Return type</dt> |
| <dd class="field-odd"><p><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)">str</a></p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| </dd></dl> |
| |
| <dl class="py class"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.TuningOptions"> |
| <em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">TuningOptions</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">num_measure_trials</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">early_stopping</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">num_measures_per_round</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">64</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">verbose</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">builder</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'local'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">runner</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'local'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">measure_callbacks</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.TuningOptions" title="Permalink to this definition">¶</a></dt> |
| <dd><p>This controls the options of performance tuning.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>num_measure_trials</strong> (<em>int = 0</em>) – The number of measurement trials. |
| The search policy measures <cite>num_measure_trials</cite> schedules in total and returns the best one |
| among them. |
| With <cite>num_measure_trials</cite> == 0, the policy will do the schedule search but won’t involve |
| measurement. This can be used to get a runnable schedule quickly without auto-tuning.</p></li> |
| <li><p><strong>early_stopping</strong> (<em>Optional</em><em>[</em><a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.12)"><em>int</em></a><em>]</em>) – Stop the tuning early if getting no improvement after n measurements.</p></li> |
| <li><p><strong>num_measures_per_round</strong> (<em>int = 64</em>) – The number of schedules to be measured at each search round. |
| The whole schedule search process will try a total number of <cite>num_measure_trials</cite> in several |
| rounds.</p></li> |
| <li><p><strong>verbose</strong> (<em>int = 1</em>) – Verbosity level. 0 for silent, 1 to output information during schedule search.</p></li> |
| <li><p><strong>builder</strong> (<em>Union</em><em>[</em><em>ProgramBuilder</em><em>, </em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>] </em><em>= 'local'</em>) – ProgramBuilder which builds the program.</p></li> |
| <li><p><strong>runner</strong> (<em>Union</em><em>[</em><em>ProgramRunner</em><em>, </em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>] </em><em>= 'local'</em>) – ProgramRunner which runs the program and measures time costs.</p></li> |
| <li><p><strong>measure_callbacks</strong> (<em>Optional</em><em>[</em><em>List</em><em>[</em><a class="reference internal" href="meta_schedule.html#tvm.meta_schedule.MeasureCallback" title="tvm.meta_schedule.MeasureCallback"><em>MeasureCallback</em></a><em>]</em><em>]</em>) – Callback functions called after each measurement. |
| Candidates: |
| - auto_scheduler.RecordToFile</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py function"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.auto_schedule"> |
| <span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">auto_schedule</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">task</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">search_policy</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tuning_options</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">auto_scheduler.TuningOptions(0x375f4b0)</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.auto_schedule" title="Permalink to this definition">¶</a></dt> |
| <dd><p>THIS API IS DEPRECATED.</p> |
| <p>Run auto scheduling search for a task.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>task</strong> (<a class="reference internal" href="#tvm.auto_scheduler.SearchTask" title="tvm.auto_scheduler.SearchTask"><em>SearchTask</em></a>) – The SearchTask for the computation declaration.</p></li> |
| <li><p><strong>search_policy</strong> (<em>Optional</em><em>[</em><em>SearchPolicy</em><em>]</em>) – The search policy to be used for schedule search.</p></li> |
| <li><p><strong>tuning_options</strong> (<em>Optional</em><em>[</em><a class="reference internal" href="#tvm.auto_scheduler.TuningOptions" title="tvm.auto_scheduler.TuningOptions"><em>TuningOptions</em></a><em>]</em>) – Tuning and measurement options.</p></li> |
| </ul> |
| </dd> |
| <dt class="field-even">Returns</dt> |
| <dd class="field-even"><p></p> |
| </dd> |
| <dt class="field-odd">Return type</dt> |
| <dd class="field-odd"><p>A <cite>te.Schedule</cite> and the a list of <cite>te.Tensor</cite> to be used in <cite>tvm.lower</cite> or <cite>tvm.build</cite>.</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py function"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.create_task"> |
| <span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">create_task</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">func</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target_host</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">hardware_params</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.create_task" title="Permalink to this definition">¶</a></dt> |
| <dd><p>THIS API IS DEPRECATED.</p> |
| <p>Create a search task.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>func</strong> (<em>Union</em><em>[</em><em>Function</em><em>, </em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>]</em>) – The function that returns the compute declaration Tensors. |
| Can be the a function or the function name.</p></li> |
| <li><p><strong>args</strong> (<em>Union</em><em>[</em><em>Tuple</em><em>[</em><a class="reference internal" href="tir.html#tvm.tir.Any" title="tvm.tir.Any"><em>Any</em></a><em>, </em><em>...</em><em>]</em><em>, </em><em>List</em><em>[</em><a class="reference internal" href="tir.html#tvm.tir.Any" title="tvm.tir.Any"><em>Any</em></a><em>]</em><em>]</em>) – The args of the function.</p></li> |
| <li><p><strong>target</strong> (<em>Union</em><em>[</em><a class="reference internal" href="target.html#tvm.target.Target" title="tvm.target.Target"><em>tvm.target.Target</em></a><em>, </em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>]</em>) – The target device of this search task.</p></li> |
| <li><p><strong>target_host</strong> (<em>Optional</em><em>[</em><em>Union</em><em>[</em><a class="reference internal" href="target.html#tvm.target.Target" title="tvm.target.Target"><em>tvm.target.Target</em></a><em>, </em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>]</em><em>]</em>) – The target host device of this search task.</p></li> |
| <li><p><strong>hardware_params</strong> (<em>Optional</em><em>[</em><a class="reference internal" href="#tvm.auto_scheduler.HardwareParams" title="tvm.auto_scheduler.HardwareParams"><em>HardwareParams</em></a><em>]</em>) – Hardware parameters used in this search task.</p></li> |
| </ul> |
| </dd> |
| <dt class="field-even">Returns</dt> |
| <dd class="field-even"><p><strong>SearchTask</strong></p> |
| </dd> |
| <dt class="field-odd">Return type</dt> |
| <dd class="field-odd"><p>the created task</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py class"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.TaskScheduler"> |
| <em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">TaskScheduler</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tasks</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">task_weights</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">objective_func</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">strategy</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'gradient'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">load_model_file</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><span class="pre">str</span></a><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">load_log_file</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><span class="pre">str</span></a><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">alpha</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><a class="reference external" href="https://docs.python.org/3/library/functions.html#float" title="(in Python v3.12)"><span class="pre">float</span></a></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">0.2</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">beta</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><a class="reference external" href="https://docs.python.org/3/library/functions.html#float" title="(in Python v3.12)"><span class="pre">float</span></a></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">2</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">gamma</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><a class="reference external" href="https://docs.python.org/3/library/functions.html#float" title="(in Python v3.12)"><span class="pre">float</span></a></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">0.5</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">backward_window_size</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.12)"><span class="pre">int</span></a></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">3</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">callbacks</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.TaskScheduler" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Allocate the time resources when tuning multiple tasks together. |
| This implements two strategies: “round-robin” and “gradient”.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>tasks</strong> (<em>List</em><em>[</em><a class="reference internal" href="#tvm.auto_scheduler.SearchTask" title="tvm.auto_scheduler.SearchTask"><em>SearchTask</em></a><em>]</em>) – All tasks to tune</p></li> |
| <li><p><strong>task_weights</strong> (<em>Optional</em><em>[</em><em>List</em><em>[</em><a class="reference external" href="https://docs.python.org/3/library/functions.html#float" title="(in Python v3.12)"><em>float</em></a><em>]</em><em>]</em>) – The weights of tasks. |
| If provided, the task scheduler will set the objective function to |
| sum(weight[t] * latency[t]), where weight[t] is the weight of a task |
| and the lantecy[t] is the lantecy of the task. |
| If not provided, the task scheduer will assign equal weights to all |
| tasks (i.e., the objective function is sum(latency[t])).</p></li> |
| <li><p><strong>objective_func</strong> (<em>Optional</em><em>[</em><em>Callable</em><em>[</em><em>List</em><em>[</em><a class="reference external" href="https://docs.python.org/3/library/functions.html#float" title="(in Python v3.12)"><em>float</em></a><em>] </em><em>-> float</em><em>]</em><em>]</em>) – The objective function to be minimized. |
| The objective function accepts the current latencies of all tasks and returns the |
| objective. |
| If not provided, the objective is the weighted sum of the latencies of all tasks.</p></li> |
| <li><p><strong>strategy</strong> (<em>str = "gradient"</em>) – The scheduling strategy. |
| “round-robin”: Tune tasks in round robin order. |
| “gradient” : Tune tasks with gradient descent.</p></li> |
| <li><p><strong>load_model_file</strong> (<em>Optional</em><em>[</em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>]</em>) – Load pre-trained model from this file. If this is None, the cost model will |
| be trained from scratch.</p></li> |
| <li><p><strong>load_log_file</strong> (<em>Optional</em><em>[</em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>]</em>) – Load measurement records from this file. If it is not None, the status of the |
| task scheduler, search policies and cost models will be restored according to this file.</p></li> |
| <li><p><strong>verbose</strong> (<em>int = 1</em>) – The level of verbosity. 0 means silent.</p></li> |
| <li><p><strong>alpha</strong> (<em>float = 0.2</em>) – The parameter used for ‘gradient’ strategy</p></li> |
| <li><p><strong>beta</strong> (<em>float = 2</em>) – The parameter used for ‘gradient’ strategy</p></li> |
| <li><p><strong>backward_window_size</strong> (<em>int = 3</em>) – The parameter used for ‘gradient’ strategy</p></li> |
| <li><p><strong>callbacks</strong> (<em>Optional</em><em>[</em><em>List</em><em>[</em><em>TaskSchedulerCallback</em><em>]</em><em>]</em>) – The task scheduler callbacks that will be called before and after tuning a task. |
| If None, PrintTableInfo and LogEstimatedLatency callback will be used.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| <p><strong>Methods:</strong></p> |
| <table class="longtable docutils align-default"> |
| <colgroup> |
| <col style="width: 10%" /> |
| <col style="width: 90%" /> |
| </colgroup> |
| <tbody> |
| <tr class="row-odd"><td><p><a class="reference internal" href="#tvm.auto_scheduler.TaskScheduler.tune" title="tvm.auto_scheduler.TaskScheduler.tune"><code class="xref py py-obj docutils literal notranslate"><span class="pre">tune</span></code></a>(tune_option[, search_policy, ...])</p></td> |
| <td><p>Tune a batch of tasks together.</p></td> |
| </tr> |
| </tbody> |
| </table> |
| <dl class="py method"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.TaskScheduler.tune"> |
| <span class="sig-name descname"><span class="pre">tune</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tune_option</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">search_policy</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'default'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">search_policy_params</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">adaptive_training</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">per_task_early_stopping</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.TaskScheduler.tune" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Tune a batch of tasks together.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>tune_option</strong> (<a class="reference internal" href="#tvm.auto_scheduler.TuningOptions" title="tvm.auto_scheduler.TuningOptions"><em>TuningOptions</em></a>) – The tuning options applied to all tasks.</p></li> |
| <li><p><strong>search_policy</strong> (<em>: Union</em><em>[</em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>, </em><em>List</em><em>[</em><em>SearchPolicy</em><em>]</em><em>] </em><em>= "default"</em>) – The list of search policies. |
| If it is str, |
| “default” for the default policy (SketchPolicy + XGBModel), |
| “sketch.xgb” for SketchPolicy + XGBModel, |
| “sketch.random” for SketchPolicy + RandomModel.</p></li> |
| <li><p><strong>search_policy_params</strong> (<em>Optional</em><em>[</em><em>Dict</em><em>[</em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>, </em><a class="reference internal" href="tir.html#tvm.tir.Any" title="tvm.tir.Any"><em>Any</em></a><em>]</em><em>]</em>) – The parameters of the search policy</p></li> |
| <li><p><strong>adaptive_training</strong> (<em>bool = False</em>) – Option used by XGBModel to reduce the model training frequency when there’re |
| too many logs.</p></li> |
| <li><p><strong>per_task_early_stopping</strong> (<em>Optional</em><em>[</em><a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.12)"><em>int</em></a><em>]</em>) – Stop tuning a task early if getting no improvement after n measurements.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| </dd></dl> |
| |
| <dl class="py function"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.make_workload_key"> |
| <span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">make_workload_key</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">func</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">args</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.make_workload_key" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Make a workload key by function and arguments.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>func</strong> (<em>Union</em><em>[</em><em>Function</em><em>, </em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>]</em>) – The function that returns the compute declaration Tensors. |
| Can be the a function or the function name.</p></li> |
| <li><p><strong>args</strong> (<em>Args</em>) – The args of the function.</p></li> |
| </ul> |
| </dd> |
| <dt class="field-even">Returns</dt> |
| <dd class="field-even"><p><strong>workload_key</strong> – The workload key of the function.</p> |
| </dd> |
| <dt class="field-odd">Return type</dt> |
| <dd class="field-odd"><p><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)">str</a></p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="py function"> |
| <dt class="sig sig-object py" id="tvm.auto_scheduler.register_workload"> |
| <span class="sig-prename descclassname"><span class="pre">tvm.auto_scheduler.</span></span><span class="sig-name descname"><span class="pre">register_workload</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">func_name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">f</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">override</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tvm.auto_scheduler.register_workload" title="Permalink to this definition">¶</a></dt> |
| <dd><p>Register a function that generates a certain workload.</p> |
| <p>The input function should take hashable and jsonable arguments |
| (int, float, tuple of int, tvm.tensor.Tensor, …) and return a list of tvm.tensor.Tensor.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Parameters</dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>func_name</strong> (<em>Union</em><em>[</em><em>Function</em><em>, </em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.12)"><em>str</em></a><em>]</em>) – The generation function that returns the compute declaration Tensors or its function name.</p></li> |
| <li><p><strong>f</strong> (<em>Optional</em><em>[</em><em>Function</em><em>]</em>) – The generation function to be registered.</p></li> |
| <li><p><strong>override</strong> (<em>boolean = False</em>) – Whether to override existing entry.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| <p class="rubric">Examples</p> |
| <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="nd">@auto_scheduler</span><span class="o">.</span><span class="n">register_workload</span> |
| <span class="k">def</span> <span class="nf">matmul</span><span class="p">(</span><span class="n">N</span><span class="p">,</span> <span class="n">M</span><span class="p">,</span> <span class="n">K</span><span class="p">):</span> |
| <span class="n">A</span> <span class="o">=</span> <span class="n">te</span><span class="o">.</span><span class="n">placeholder</span><span class="p">((</span><span class="n">N</span><span class="p">,</span> <span class="n">K</span><span class="p">),</span> <span class="n">name</span><span class="o">=</span><span class="s1">'A'</span><span class="p">)</span> |
| <span class="n">B</span> <span class="o">=</span> <span class="n">te</span><span class="o">.</span><span class="n">placeholder</span><span class="p">((</span><span class="n">K</span><span class="p">,</span> <span class="n">M</span><span class="p">),</span> <span class="n">name</span><span class="o">=</span><span class="s1">'B'</span><span class="p">)</span> |
| <span class="n">k</span> <span class="o">=</span> <span class="n">te</span><span class="o">.</span><span class="n">reduce_axis</span><span class="p">((</span><span class="mi">0</span><span class="p">,</span> <span class="n">K</span><span class="p">),</span> <span class="n">name</span><span class="o">=</span><span class="s1">'k'</span><span class="p">)</span> |
| <span class="n">C</span> <span class="o">=</span> <span class="n">te</span><span class="o">.</span><span class="n">compute</span><span class="p">((</span><span class="n">N</span><span class="p">,</span> <span class="n">M</span><span class="p">),</span> <span class="k">lambda</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">:</span> <span class="n">te</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">A</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">k</span><span class="p">]</span> <span class="o">*</span> <span class="n">B</span><span class="p">[</span><span class="n">k</span><span class="p">][</span><span class="n">j</span><span class="p">],</span> <span class="n">axis</span><span class="o">=</span><span class="p">[</span><span class="n">k</span><span class="p">]),</span> <span class="n">name</span><span class="o">=</span><span class="s1">'C'</span><span class="p">)</span> |
| <span class="k">return</span> <span class="p">[</span><span class="n">A</span><span class="p">,</span> <span class="n">B</span><span class="p">,</span> <span class="n">C</span><span class="p">]</span> |
| </pre></div> |
| </div> |
| </dd></dl> |
| |
| </div> |
| |
| |
| </div> |
| |
| </div> |
| |
| |
| <footer> |
| |
| <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> |
| |
| <a href="meta_schedule.html" class="btn btn-neutral float-right" title="tvm.meta_schedule" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> |
| |
| |
| <a href="autotvm.html" class="btn btn-neutral float-left" title="tvm.autotvm" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> |
| |
| </div> |
| |
| <div id="button" class="backtop"><img src="../../../_static/img/right.svg" alt="backtop"/> </div> |
| <section class="footerSec"> |
| <div class="footerHeader"> |
| <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row"> |
| <div class="copywrite d-flex align-items-center"> |
| <h5 id="copy-right-info">© 2023 Apache Software Foundation | All rights reserved</h5> |
| </div> |
| </div> |
| |
| </div> |
| |
| <div> |
| <div class="footernote">Copyright © 2023 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div> |
| </div> |
| |
| </section> |
| </footer> |
| </div> |
| </div> |
| |
| </section> |
| |
| </div> |
| |
| |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script> |
| <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script> |
| |
| </body> |
| <script type="text/javascript"> |
| jQuery(function () { |
| SphinxRtdTheme.Navigation.enable(true); |
| }); |
| </script> |
| |
| |
| |
| |
| <!-- Theme Analytics --> |
| <script> |
| (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
| (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
| m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
| })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
| |
| ga('create', 'UA-75982049-2', 'auto'); |
| ga('send', 'pageview'); |
| </script> |
| |
| |
| |
| |
| </body> |
| </html> |