chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,150 @@
|
||||
# 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.
|
||||
# pylint: disable=missing-docstring
|
||||
# ruff: noqa: F821
|
||||
import argparse
|
||||
import logging
|
||||
|
||||
import tvm
|
||||
from tvm.s_tir import meta_schedule as ms
|
||||
from tvm.s_tir.meta_schedule.testing.te_workload import create_te_workload
|
||||
from tvm.support import describe
|
||||
from tvm.testing.utils import strtobool
|
||||
|
||||
|
||||
def _parse_args():
|
||||
args = argparse.ArgumentParser()
|
||||
args.add_argument(
|
||||
"--workload",
|
||||
type=str,
|
||||
required=True,
|
||||
)
|
||||
args.add_argument(
|
||||
"--target",
|
||||
type=str,
|
||||
required=True,
|
||||
)
|
||||
args.add_argument(
|
||||
"--num-trials",
|
||||
type=int,
|
||||
required=True,
|
||||
)
|
||||
args.add_argument(
|
||||
"--rpc-host",
|
||||
type=str,
|
||||
required=True,
|
||||
)
|
||||
args.add_argument(
|
||||
"--rpc-port",
|
||||
type=int,
|
||||
required=True,
|
||||
)
|
||||
args.add_argument(
|
||||
"--rpc-key",
|
||||
type=str,
|
||||
required=True,
|
||||
)
|
||||
args.add_argument(
|
||||
"--work-dir",
|
||||
type=str,
|
||||
required=True,
|
||||
)
|
||||
args.add_argument(
|
||||
"--number",
|
||||
type=int,
|
||||
default=3,
|
||||
)
|
||||
args.add_argument(
|
||||
"--repeat",
|
||||
type=int,
|
||||
default=1,
|
||||
)
|
||||
args.add_argument(
|
||||
"--min-repeat-ms",
|
||||
type=int,
|
||||
default=100,
|
||||
)
|
||||
args.add_argument(
|
||||
"--adaptive-training",
|
||||
type=lambda x: bool(strtobool(x)),
|
||||
required=False,
|
||||
help="example: True / False",
|
||||
default=True,
|
||||
)
|
||||
args.add_argument(
|
||||
"--cpu-flush",
|
||||
type=lambda x: bool(strtobool(x)),
|
||||
help="example: True / False",
|
||||
required=True,
|
||||
)
|
||||
parsed = args.parse_args()
|
||||
parsed.target = tvm.target.Target(parsed.target)
|
||||
parsed.rpc_config = ms.runner.RPCConfig(
|
||||
tracker_host=parsed.rpc_host,
|
||||
tracker_port=parsed.rpc_port,
|
||||
tracker_key=parsed.rpc_key,
|
||||
session_timeout_sec=60,
|
||||
)
|
||||
return parsed
|
||||
|
||||
|
||||
logging.basicConfig(
|
||||
format="%(asctime)s.%(msecs)03d %(levelname)s %(message)s", datefmt="%Y-%m-%d %H:%M:%S"
|
||||
)
|
||||
logging.getLogger("tvm.s_tir.meta_schedule").setLevel(logging.DEBUG)
|
||||
ARGS = _parse_args()
|
||||
|
||||
|
||||
def main():
|
||||
describe()
|
||||
print(f"Workload: {ARGS.workload}")
|
||||
with ms.Profiler() as profiler:
|
||||
sch: s_tir.Schedule | None = ms.tir_integration.tune_tir(
|
||||
mod=create_te_workload(ARGS.workload, 0),
|
||||
target=ARGS.target,
|
||||
work_dir=ARGS.work_dir,
|
||||
max_trials_global=ARGS.num_trials,
|
||||
num_trials_per_iter=64,
|
||||
runner=ms.runner.RPCRunner( # type: ignore
|
||||
rpc_config=ARGS.rpc_config,
|
||||
evaluator_config=ms.runner.EvaluatorConfig(
|
||||
number=ARGS.number,
|
||||
repeat=ARGS.repeat,
|
||||
min_repeat_ms=ARGS.min_repeat_ms,
|
||||
enable_cpu_cache_flush=ARGS.cpu_flush,
|
||||
),
|
||||
alloc_repeat=1,
|
||||
),
|
||||
cost_model=ms.cost_model.XGBModel( # type: ignore
|
||||
extractor=ms.feature_extractor.PerStoreFeature(),
|
||||
adaptive_training=ARGS.adaptive_training,
|
||||
),
|
||||
strategy=ms.search_strategy.EvolutionarySearch(),
|
||||
)
|
||||
|
||||
print("Tuning Time:")
|
||||
print(profiler.table())
|
||||
|
||||
if sch is None:
|
||||
print("No valid schedule found!")
|
||||
else:
|
||||
print(sch.mod.script())
|
||||
print(sch.trace)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user