You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by lm...@apache.org on 2020/12/09 17:44:25 UTC
[tvm] 01/01: [AutoScheduler] Delete deprecated file auto_schedule.py
This is an automated email from the ASF dual-hosted git repository.
lmzheng pushed a commit to branch merrymercy-patch-1
in repository https://gitbox.apache.org/repos/asf/tvm.git
commit 85e71db9fb5533ea5e04f029ba180bfc8387f80a
Author: Lianmin Zheng <li...@gmail.com>
AuthorDate: Wed Dec 9 09:44:14 2020 -0800
[AutoScheduler] Delete deprecated file auto_schedule.py
---
python/tvm/auto_scheduler/auto_schedule.py | 215 -----------------------------
1 file changed, 215 deletions(-)
diff --git a/python/tvm/auto_scheduler/auto_schedule.py b/python/tvm/auto_scheduler/auto_schedule.py
deleted file mode 100644
index 57dc958..0000000
--- a/python/tvm/auto_scheduler/auto_schedule.py
+++ /dev/null
@@ -1,215 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-"""
-The user interface and tuning options of the TVM auto-scheduler.
-"""
-
-import tvm._ffi
-from tvm.runtime import Object
-from tvm.target import Target
-from .measure import LocalBuilder, LocalRunner
-from .workload_registry import make_workload_key
-from .compute_dag import ComputeDAG
-from .cost_model import XGBModel
-from .search_policy import SketchPolicy
-from .search_task import SearchTask
-from . import _ffi_api
-
-
-@tvm._ffi.register_object("auto_scheduler.HardwareParams")
-class HardwareParams(Object):
- """The parameters of target hardware used to guide the search policy
-
- TODO(jcf94): This is considered to be merged with the new Target specification:
- https://discuss.tvm.apache.org/t/rfc-tvm-target-specification/6844
-
- Parameters
- ----------
- num_cores : int
- The number of device cores.
- vector_unit_bytes : int
- The width of vector units in bytes.
- cache_line_bytes : int
- The size of cache line in bytes.
- max_shared_memory_per_block : int
- The max shared memory per block in bytes.
- max_registers_per_block : int
- The max number of register per block.
- max_threads_per_block : int
- The max number of threads per block.
- max_vthread_extent : int
- The max vthread extent.
- warp_size : int
- The thread numbers of a warp.
- """
-
- def __init__(
- self,
- num_cores,
- vector_unit_bytes,
- cache_line_bytes,
- max_shared_memory_per_block,
- max_registers_per_block,
- max_threads_per_block,
- max_vthread_extent,
- warp_size,
- ):
- self.__init_handle_by_constructor__(
- _ffi_api.HardwareParams,
- num_cores,
- vector_unit_bytes,
- cache_line_bytes,
- max_shared_memory_per_block,
- max_registers_per_block,
- max_threads_per_block,
- max_vthread_extent,
- warp_size,
- )
-
-
-@tvm._ffi.register_object("auto_scheduler.TuningOptions")
-class TuningOptions(Object):
- """This controls the options of performance tuning.
-
- Parameters
- ----------
- num_measure_trials: int = 0
- The number of measurement trials.
- The search policy measures `num_measure_trials` schedules in total and returns the best one
- among them.
- With `num_measure_trials` == 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.
- early_stopping: Optional[int]
- Stop the tuning early if getting no improvement after n measurements.
- num_measures_per_round: int = 64
- The number of schedules to be measured at each search round.
- The whole schedule search process will try a total number of `num_measure_trials` in several
- rounds.
- verbose: int = 1
- Verbosity level. 0 for silent, 1 to output information during schedule search.
- builder: Union[ProgramBuilder, str] = 'local'
- ProgramBuilder which builds the program.
- runner: Union[ProgramRunner, str] = 'local'
- ProgramRunner which runs the program and measures time costs.
- measure_callbacks: Optional[List[MeasureCallback]]
- Callback functions called after each measurement.
- Candidates:
- - auto_scheduler.RecordToFile
- """
-
- def __init__(
- self,
- num_measure_trials=0,
- early_stopping=None,
- num_measures_per_round=64,
- verbose=1,
- builder="local",
- runner="local",
- measure_callbacks=None,
- ):
- if isinstance(builder, str):
- if builder == "local":
- builder = LocalBuilder()
- else:
- raise ValueError("Invalid builder: " + builder)
- elif not isinstance(builder, tvm.auto_scheduler.measure.ProgramBuilder):
- raise ValueError(
- "Invalid builder: "
- + builder
- + " . TuningOptions expects a ProgramBuilder or string."
- )
-
- if isinstance(runner, str):
- if runner == "local":
- runner = LocalRunner()
- else:
- raise ValueError("Invalid runner: " + runner)
- elif not isinstance(runner, tvm.auto_scheduler.measure.ProgramRunner):
- raise ValueError(
- "Invalid runner: " + runner + " . TuningOptions expects a ProgramRunner or string."
- )
-
- self.__init_handle_by_constructor__(
- _ffi_api.TuningOptions,
- num_measure_trials,
- early_stopping or -1,
- num_measures_per_round,
- verbose,
- builder,
- runner,
- measure_callbacks,
- )
-
-
-def create_task(func, args, target, target_host=None, hardware_params=None):
- """Create a search task
-
- Parameters
- ----------
- func : Union[Function, str]
- The function that returns the compute declaration Tensors.
- Can be the a function or the function name.
- args : Union[Tuple[Any, ...], List[Any]]
- The args of the function.
- target : Union[tvm.target.Target, str]
- The target device of this search task.
- target_host : Optional[Union[tvm.target.Target, str]]
- The target host device of this search task.
- hardware_params : Optional[HardwareParams]
- Hardware parameters used in this search task.
-
- Returns
- -------
- SearchTask: the created task
- """
- workload_key = make_workload_key(func, args)
- dag = ComputeDAG(workload_key)
- if isinstance(target, str):
- target = Target(target)
- if isinstance(target_host, str):
- target_host = Target(target_host)
- return SearchTask(dag, workload_key, target, target_host, hardware_params)
-
-
-def auto_schedule(task, search_policy=None, tuning_options=TuningOptions()):
- """Run auto scheduling search for a task
-
- Parameters
- ----------
- task : SearchTask
- The SearchTask for the computation declaration.
- search_policy : Optional[SearchPolicy]
- The search policy to be used for schedule search.
- tuning_options : Optional[TuningOptions]
- Tuning and measurement options.
-
- Returns
- -------
- A `te.Schedule` and the a list of `te.Tensor` to be used in `tvm.lower` or `tvm.build`.
- """
- if not isinstance(task, SearchTask):
- raise ValueError(
- "Invalid task: " + task + " . `auto_scheduler.auto_schedule` expects a SearchTask."
- )
-
- if search_policy is None:
- cost_model = XGBModel()
- search_policy = SketchPolicy(task, cost_model)
-
- sch, tensors = _ffi_api.AutoSchedule(search_policy, tuning_options)
- return sch, tensors