Hi @FrozenGene, @anijain2305
I can confirm that this works :partying_face:! Very good! Now we can implement
algorithms like QNNPack and let the tuner try them together! Thanks both guys!
As for the API change, I agree with @FrozenGene that maybe it would be cleaner
adding `tinfos` to the `qnn_conv2d_legalize` signature.
I have a related question, that I always meant to ask: in
`conv2d_alter_layout`, we don't execute the function if the current
configuration is a Fallback. Do you guys know why? And also, what should the
behavior be in `legalize`? I am referring to this code:
```
_, outs = relay.backend.compile_engine.select_implementation(
relay.op.get("nn.conv2d"), attrs, tinfos, out_type, target
)
workload = autotvm.task.get_workload(outs)
if workload is None:
# The best implementation is not an AutoTVM template,
# we then assume it's not necessary to alter this op.
return None
cfg = dispatch_ctx.query(target, workload)
if cfg.is_fallback: # if is fallback, clear query cache and return None
autotvm.task.clear_fallback_cache(target, workload)
return None
topi_tmpl = workload[0]
```
In theory, we could gather `topi_tmpl` directly from the first parameter
returned by `relay.backend.compile_engine.select_implementation`. But instead,
in `conv2d_alter_layout` we query the `dispatch_ctx` for the current
configuration and, if it is a Fallback, we return `None`. To sum up the
follow-up questions are:
* Why this behavior is there?
* What should we do in `legalize`? Simply return back a default legalization?
Thanks once more for your help!
---
[Visit
Topic](https://discuss.tvm.apache.org/t/quantized-models-and-legalization-pass/8253/9)
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/2260aea19ba54e5cbe8f54575d52d43347d621f67f1afb3497c435f7d03ca066).