You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by tq...@apache.org on 2020/11/15 13:20:10 UTC
[incubator-tvm] branch main updated: [Doc] Minor improvements for
auto-tuning tutorials (#6919)
This is an automated email from the ASF dual-hosted git repository.
tqchen pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-tvm.git
The following commit(s) were added to refs/heads/main by this push:
new 3950639 [Doc] Minor improvements for auto-tuning tutorials (#6919)
3950639 is described below
commit 3950639099084644a5906e8502f1b768fd81c015
Author: Lianmin Zheng <li...@gmail.com>
AuthorDate: Sun Nov 15 05:19:49 2020 -0800
[Doc] Minor improvements for auto-tuning tutorials (#6919)
---
docs/index.rst | 2 +-
python/tvm/auto_scheduler/compute_dag.py | 15 +++++++++++++++
python/tvm/auto_scheduler/relay_integration.py | 2 ++
tutorials/auto_scheduler/tune_conv2d_layer_cuda.py | 5 ++++-
tutorials/auto_scheduler/tune_matmul_x86.py | 8 ++++++--
tutorials/auto_scheduler/tune_network_cuda.py | 10 +++++++---
tutorials/autotvm/tune_relay_arm.py | 2 +-
tutorials/autotvm/tune_relay_cuda.py | 2 +-
tutorials/autotvm/tune_relay_mobile_gpu.py | 2 +-
tutorials/autotvm/tune_relay_x86.py | 2 +-
tutorials/autotvm/tune_simple_template.py | 4 ++--
11 files changed, 41 insertions(+), 13 deletions(-)
diff --git a/docs/index.rst b/docs/index.rst
index 18b2da7..f407fa2 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -25,7 +25,7 @@ Get Started
-----------
- Follow the :doc:`instructions <install/index>` to install TVM.
-- Checkout the :doc:`Tutorials <tutorials/index>`.
+- Checkout the :doc:`tutorials <tutorials/index>`.
For Developers
--------------
diff --git a/python/tvm/auto_scheduler/compute_dag.py b/python/tvm/auto_scheduler/compute_dag.py
index 9390a9c..93467e2 100755
--- a/python/tvm/auto_scheduler/compute_dag.py
+++ b/python/tvm/auto_scheduler/compute_dag.py
@@ -14,6 +14,7 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
+# pylint: disable=invalid-name
""" The auto-scheduler's computational graph and related program analyses. """
@@ -188,6 +189,20 @@ class ComputeDAG(Object):
str_key = str_key.encode(encoding="utf-8")
return hashlib.md5(str_key).hexdigest()
+ def __str__(self):
+ # pretty print
+ MAX_LINE_WIDTH = 256
+
+ raw_lines = super().__str__().split("\n")
+ lines = []
+ for line in raw_lines:
+ if len(line) > MAX_LINE_WIDTH:
+ line = (
+ line[: MAX_LINE_WIDTH // 2] + " ..(OMITTED).. " + line[-MAX_LINE_WIDTH // 2 :]
+ )
+ lines.append(line)
+ return "\n".join(lines)
+
def __getstate__(self):
return {"compute": SaveJSON(self.compute), "sche": SaveJSON(self.sche)}
diff --git a/python/tvm/auto_scheduler/relay_integration.py b/python/tvm/auto_scheduler/relay_integration.py
index c8a4ed5..0b0157c 100644
--- a/python/tvm/auto_scheduler/relay_integration.py
+++ b/python/tvm/auto_scheduler/relay_integration.py
@@ -214,6 +214,8 @@ def auto_schedule_topi(outs):
if env is None: # in the final build mode
state = DispatchContext.current.query(tvm.target.Target.current(), key)
if state is None:
+ if "gpu" in tvm.target.Target.current().keys:
+ raise RuntimeError("Cannot compile for GPU targets if no valid schedule is found.")
return te.create_schedule([x.op for x in outs])
dag = ComputeDAG(io_tensors)
diff --git a/tutorials/auto_scheduler/tune_conv2d_layer_cuda.py b/tutorials/auto_scheduler/tune_conv2d_layer_cuda.py
index a8bb8dd..a28e98b 100644
--- a/tutorials/auto_scheduler/tune_conv2d_layer_cuda.py
+++ b/tutorials/auto_scheduler/tune_conv2d_layer_cuda.py
@@ -17,11 +17,13 @@
"""
.. _auto-scheduler-conv-gpu:
-Auto-scheduling a convolution layer for GPU
+Auto-scheduling a Convolution Layer for GPU
===========================================
**Author**: `Lianmin Zheng <https://github.com/merrymercy>`_, \
`Chengfan Jia <https://github.com/jcf94/>`_
+This is a tutorial on how to use the auto-scheduler for GPUs.
+
Different from the template-based :ref:`autotvm <tutorials-autotvm-sec>` which relies on
manual templates to define the search space, the auto-scheduler does not require any templates.
Users only need to write the computation declaration without any schedule commands or templates.
@@ -99,6 +101,7 @@ tune_option = auto_scheduler.TuningOptions(
num_measure_trials=10, # change this to 1000 to achieve the best performance
runner=measure_ctx.runner,
measure_callbacks=[auto_scheduler.RecordToFile(log_file)],
+ verbose=2,
)
######################################################################
diff --git a/tutorials/auto_scheduler/tune_matmul_x86.py b/tutorials/auto_scheduler/tune_matmul_x86.py
index 2bd47de..6d75629 100644
--- a/tutorials/auto_scheduler/tune_matmul_x86.py
+++ b/tutorials/auto_scheduler/tune_matmul_x86.py
@@ -15,11 +15,13 @@
# specific language governing permissions and limitations
# under the License.
"""
-Auto-scheduling matrix multiplication for CPU
+Auto-scheduling Matrix Multiplication for CPU
=============================================
**Author**: `Lianmin Zheng <https://github.com/merrymercy>`_, \
`Chengfan Jia <https://github.com/jcf94/>`_
+This is a tutorial on how to use the auto-scheduler for CPUs.
+
Different from the template-based :ref:`autotvm <tutorials-autotvm-sec>` which relies on
manual templates to define the search space, the auto-scheduler does not require any templates.
Users only need to write the computation declaration without any schedule commands or templates.
@@ -88,7 +90,9 @@ print(task.compute_dag)
log_file = "matmul.json"
tune_option = auto_scheduler.TuningOptions(
- num_measure_trials=10, measure_callbacks=[auto_scheduler.RecordToFile(log_file)]
+ num_measure_trials=10,
+ measure_callbacks=[auto_scheduler.RecordToFile(log_file)],
+ verbose=2,
)
######################################################################
diff --git a/tutorials/auto_scheduler/tune_network_cuda.py b/tutorials/auto_scheduler/tune_network_cuda.py
index 9eb5d5c..4756ea3 100644
--- a/tutorials/auto_scheduler/tune_network_cuda.py
+++ b/tutorials/auto_scheduler/tune_network_cuda.py
@@ -15,8 +15,8 @@
# specific language governing permissions and limitations
# under the License.
"""
-Auto-tuning a Neural Network for NVIDIA GPU
-===========================================
+Auto-scheduling a Neural Network for NVIDIA GPU
+===============================================
**Author**: `Lianmin Zheng <https://github.com/merrymercy>`_
Auto-tuning for specific devices and workloads is critical for getting the
@@ -156,6 +156,10 @@ print("Extract tasks...")
mod, params, input_shape, output_shape = get_network(network, batch_size, layout, dtype=dtype)
tasks, task_weights = auto_scheduler.extract_tasks(mod["main"], params, target)
+for idx, task in enumerate(tasks):
+ print("========== Task %d (workload key: %s) ==========" % (idx, task.workload_key))
+ print(task.compute_dag)
+
#################################################################
# Begin Tuning
# ------------
@@ -250,7 +254,7 @@ def run_tuning():
# There will also be some "dmlc::Error"s and CUDA errors, because the
# auto-scheduler will try some invalid schedules.
# You can safely ignore them if the tuning can continue, because these
-# errors are isolated from the master process.
+# errors are isolated from the main process.
#
######################################################################
diff --git a/tutorials/autotvm/tune_relay_arm.py b/tutorials/autotvm/tune_relay_arm.py
index c69c7d9..1e1e98a 100644
--- a/tutorials/autotvm/tune_relay_arm.py
+++ b/tutorials/autotvm/tune_relay_arm.py
@@ -17,7 +17,7 @@
"""
.. _tune_relay_arm:
-Auto-tuning a convolutional network for ARM CPU
+Auto-tuning a Convolutional Network for ARM CPU
===============================================
**Author**: `Lianmin Zheng <https://github.com/merrymercy>`_, `Zhao Wu <https://github.com/FrozenGene>`_, `Eddie Yan <https://github.com/eqy>`_
diff --git a/tutorials/autotvm/tune_relay_cuda.py b/tutorials/autotvm/tune_relay_cuda.py
index 9140713..33b62bb 100644
--- a/tutorials/autotvm/tune_relay_cuda.py
+++ b/tutorials/autotvm/tune_relay_cuda.py
@@ -15,7 +15,7 @@
# specific language governing permissions and limitations
# under the License.
"""
-Auto-tuning a convolutional network for NVIDIA GPU
+Auto-tuning a Convolutional Network for NVIDIA GPU
==================================================
**Author**: `Lianmin Zheng <https://github.com/merrymercy>`_, `Eddie Yan <https://github.com/eqy/>`_
diff --git a/tutorials/autotvm/tune_relay_mobile_gpu.py b/tutorials/autotvm/tune_relay_mobile_gpu.py
index 3611696..10e201f 100644
--- a/tutorials/autotvm/tune_relay_mobile_gpu.py
+++ b/tutorials/autotvm/tune_relay_mobile_gpu.py
@@ -15,7 +15,7 @@
# specific language governing permissions and limitations
# under the License.
"""
-Auto-tuning a convolutional network for Mobile GPU
+Auto-tuning a Convolutional Network for Mobile GPU
==================================================
**Author**: `Lianmin Zheng <https://github.com/merrymercy>`_, `Eddie Yan <https://github.com/eqy>`_
diff --git a/tutorials/autotvm/tune_relay_x86.py b/tutorials/autotvm/tune_relay_x86.py
index 5b3d032..30e62ef 100644
--- a/tutorials/autotvm/tune_relay_x86.py
+++ b/tutorials/autotvm/tune_relay_x86.py
@@ -17,7 +17,7 @@
"""
.. _tune_relay_x86:
-Auto-tuning a convolutional network for x86 CPU
+Auto-tuning a Convolutional Network for x86 CPU
===============================================
**Author**: `Yao Wang <https://github.com/kevinthesun>`_, `Eddie Yan <https://github.com/eqy>`_
diff --git a/tutorials/autotvm/tune_simple_template.py b/tutorials/autotvm/tune_simple_template.py
index 4c5c7da..db199fc 100644
--- a/tutorials/autotvm/tune_simple_template.py
+++ b/tutorials/autotvm/tune_simple_template.py
@@ -15,8 +15,8 @@
# specific language governing permissions and limitations
# under the License.
"""
-Writing tunable template and Using auto-tuner
-=============================================
+Writing Tunable Templates and Using the Auto-tuner
+==================================================
**Author**: `Lianmin Zheng <https://github.com/merrymercy>`_
This is an introduction tutorial to the auto-tuning module in TVM.