I am developing in Ansor, which tunes and evaluates workloads in a model 
independently, and can evaluate them standalone using the utilities in 
[measure.py](https://github.com/apache/tvm/blob/main/python/tvm/auto_scheduler/measure.py).

I want to compile a single workload in a model using the default schedule, to 
compare against the time for an auto-scheduled approach.

E.g.:

* Workload 1 untuned time: 1 ms
* Workload 1 tuned time: 0.5 ms
* Workload 2 untuned time: 1.5ms
* Workload 2 tuned time: 1ms
* ...
* Full model untuned inference time: 50ms
* Full model tuned inference time: 35ms

Given a tuned log file for a model, I can easily measure the inference time of 
a single workload with this function (full code linked below):

```python3
def test_single_workload(workload_num: int, logfile: os.PathLike) -> float:
    """Measures the time for a single workload with a given autoschedule file 
in Ansor

    :param workload_num: the workload number to evaluate
    :param logfile: the path to the logfile containing workload and schedule 
information
    :returns: Inference time of workload

    """
    reader = RecordReader(logfile)
    inputs, _ = reader.read_lines()

    timeout, n_parallel = 3, 1
    runs = 5

    inputs = [inputs[workload_num] for _ in range(runs)]
    results = local_builder_build(inputs, timeout, n_parallel)
    total = 0
    vs = []
    for r in results:
        if r.error_no == 0:
            # acceptable exit code
            vs.append(r.time_cost)
        else:
            print("Unexpected exit code:", r.error_no)
            exit(1)

    cost = np.median(vs)
    return cost
```

However, if I want to get the performance of that workload with the default 
schedule (no logfile), then I am unsure what I need to do.

If I wanted an equivalent function with the untuned task, I can create an input 
like this:

```python3
input = MeasureInput(task, state)
```

However I need a [State 
object](https://github.com/apache/tvm/blob/main/python/tvm/auto_scheduler/loop_state.py#L71),
 which describes the schedule we are evaluating, and I do not have a logfile 
which contains a description of the default schedule for that workload.  It 
cannot be set to `None`, at least the way I have tried it.

How would I get a State object for this workload in its untuned state?

A simple standalone example of my code is available at [this 
gist](https://gist.github.com/Wheest/28e1c1bc6135230961189644aeff8070).





---
[Visit 
Topic](https://discuss.tvm.apache.org/t/auto-scheduler-measure-time-for-default-schedule-of-single-workload/10730/1)
 to respond.

You are receiving this because you enabled mailing list mode.

To unsubscribe from these emails, [click 
here](https://discuss.tvm.apache.org/email/unsubscribe/31cfc9e8e952352a8934ef340e4fa3ca6667323938f2a80576f77fb091488f31).

Reply via email to