I have run both profilers multiple times. The vm_profiler's inference times are 
consistently 270-272 ms, while that of the debug_executor's is within 800ms - 
1.2s.

Here is the whole code just in case:
```
import numpy as np
import pytest
from io import StringIO
import csv
import os
import json
import sys

import tvm
import tvm.testing
from tvm.runtime import profiler_vm
from tvm import relay, autotvm
from tvm.relay.testing import mlp
from tvm.contrib.debugger import debug_executor
import tvm.contrib.graph_executor as runtime
from tvm import rpc
from tvm.contrib import utils
from tvm.runtime.profiling import Report
from tvm.autotvm.tuner import RandomTuner
from tvm.autotvm.graph_tuner import DPTuner

@tvm.testing.parametrize_targets
def test_resnet(target, dev, mode, n_layer):
    batch_size = 1
    input_shape = (batch_size, 3, 224, 224)
    dtype = "float32"
    modelname = "resnet-" + str(n_layer)

    log = "results/%s/%s.log" % (modelname, modelname)
    opt = "results/%s/%s_graph_opt.log" % (modelname, modelname)
    mod, params = relay.testing.resnet.get_workload(
        num_layers=n_layer, batch_size=batch_size, dtype=dtype
    )
    data = np.random.uniform(size=input_shape).astype(dtype)

    with autotvm.apply_graph_best(opt):
        with tvm.transform.PassContext(opt_level=3):
            if mode == "vmprofile":
                exe = relay.vm.compile(mod, target, params=params)
                vm = profiler_vm.VirtualMachineProfiler(exe, dev)
                # report = vm.profile([data], func_name="main", number=100, 
repeat=3, end_to_end=True)
                report = vm.profile(data=data)
                print(report)
            elif mode == "benchmark":
                lib = relay.build_module.build(mod, target=target, 
params=params)
                module = runtime.GraphModule(lib["default"](dev))
                module.set_input("data", data)
                print("Evaluate inference time cost...")
                print(module.benchmark(dev, number=100, repeat=3)) #, 
end_to_end=True))
            elif mode == "grprofile":
                exe = relay.build(mod, target, params=params)
                gr = debug_executor.create(exe.get_graph_json(), exe.lib, dev)
                report = gr.profile(data=data)
                print(report)

if __name__ == "__main__":
    layers = 0
    mode = "none"

    if len(sys.argv) != 3:
        print("Usage: python test_runtime_profiling.py [operators] 
[resnet_layers]")
    else:
        mode = sys.argv[1]
        layers = int(sys.argv[2])

    if (layers == 18 or layers == 50):
        print("Mode: " + mode)
        print("Model: ResNet-" + str(layers))
        test_resnet("llvm", tvm.cpu(), mode, layers)

```





---
[Visit 
Topic](https://discuss.tvm.apache.org/t/difference-in-profiler-outputs/11255/5) 
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/c33a0184ac8690ff6838e317484c5732f7e60470a5c3cd068082fb10a12ad06f).

Reply via email to