Hi all,
I’m confused about how to use AutoTVM on manually created TOPI computations, such as:
import tvm
import topi
from tvm import autotvm
data = tvm.placeholder((128, 64, 224, 224))
kernel = tvm.placeholder((32, 64, 5, 5))
conv = topi.nn.conv2d(data, kernel, strides=1, padding=2, dilation=1)
out = topi.nn.relu(conv)
task = autotvm.task.create(topi.generic.nn.schedule_conv2d_nchw,
args=(out,),
target='cuda')
print(task.config_space)
measure_option = autotvm.measure_option(
builder=autotvm.LocalBuilder(),
runner=autotvm.LocalRunner(repeat=3, min_repeat_ms=100, timeout=4)
)
tuner = autotvm.tuner.XGBTuner(task)
tuner.tune(n_trial=20,
measure_option=measure_option,
callbacks=[autotvm.callback.log_to_file('conv2d.log')])
The code throws error:
Traceback (most recent call last):
File "test.py", line 34, in <module>
target='cuda')
File "/opt/conda/lib/python3.6/site-packages/tvm-0.6.dev0-py3.6-linux-x86_64.egg/tvm/autotvm/task/task.py", line 191, in create
sch, _ = func(*args)
File "</opt/conda/lib/python3.6/site-packages/decorator.py:decorator-gen-73>", line 2, in schedule_conv2d_nchw
File "/opt/conda/lib/python3.6/site-packages/tvm-0.6.dev0-py3.6-linux-x86_64.egg/tvm/target.py", line 382, in dispatch_func
return dispatch_dict[k](*args, **kwargs)
File "</opt/conda/lib/python3.6/site-packages/decorator.py:decorator-gen-175>", line 2, in config_dispatcher
File "/opt/conda/lib/python3.6/site-packages/tvm-0.6.dev0-py3.6-linux-x86_64.egg/tvm/autotvm/task/dispatcher.py", line 211, in dispatch_func
workload = func(*args, **kwargs)
File "/opt/conda/lib/python3.6/site-packages/tvm-0.6.dev0-py3.6-linux-x86_64.egg/tvm/autotvm/task/topi_integration.py", line 462, in config_dispatcher
raise RuntimeError("Cannot find workload in attribute of this schedule")
RuntimeError: Cannot find workload in attribute of this schedule
Any idea on this? Your help is appreciated!