Hi,
I try to build relax module with below script:
with tvm.transform.PassContext(config={"relax.backend.use_cuda_graph": False}):
ex = relax.build(mod, "cuda")
Then it report error:
CodeGenVM cannot handle this intrinsic now Op(relax.permute_dims)
Does it mean that relax currently don’t support permute_dims?
Relax IR is as:
@I.ir_module
class Module:
I.module_attrs({"external_mods": [metadata["runtime.Module"][0]]})
@R.function
def main(x1: R.Tensor((1, 11, 200, 200), dtype="float32")) -> R.Tensor((1, 45, 100, 100), dtype="float32"):
R.func_attr({"num_input": 1, "relax.force_pure": 1, "tir_var_upper_bound": {"a": 400, "b": 500}})
with R.dataflow():
lv: R.Tensor((1, 200, 200, 11), dtype="float32") = R.permute_dims(x1, axes=[0, 2, 3, 1])
lv1: R.Tensor((45, 3, 3, 11), dtype="float32") = R.permute_dims(metadata["relax.expr.Constant"][0], axes=[0, 2, 3, 1])
lv1_1: R.Tensor((1, 45, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][1], R.shape([1, 45, 1, 1]))
lv2: R.Tensor((1, 1, 1, 45), dtype="float32") = R.permute_dims(lv1_1, axes=[0, 2, 3, 1])
lv_1 = R.call_dps_packed("fused_relax_nn_conv2d_relax_add_cutlass", (lv, lv1, lv2), out_sinfo=R.Tensor((1, 100, 100, 45), dtype="float32"))
lv3: R.Tensor((1, 45, 100, 100), dtype="float32") = R.permute_dims(lv_1, axes=[0, 3, 1, 2])
lv3_1: R.Shape([1, 45, 100, 100]) = R.shape_of(lv3)
lv4: R.Tensor(lv3_1, dtype="float32") = R.broadcast_to(metadata["relax.expr.Constant"][2], lv3_1)
lv4_1: R.Tensor((1, 100, 100, 45), dtype="float32") = R.nn.prelu(lv_1, lv4, axis=3)
gv: R.Tensor((1, 45, 100, 100), dtype="float32") = R.permute_dims(lv4_1, axes=[0, 3, 1, 2])
R.output(gv)
return gv