shingjan opened a new issue, #12995:
URL: https://github.com/apache/tvm/issues/12995

   The following TIR generated from the `executor_codegen_` of relay is not 
valid and therefore shouldn't be accepted as a valid input to TVM's relay 
executor.
   
   ```
   @tvm.script.ir_module
   class Module:
       @T.prim_func
       def tvmgen_default_fused_embedding_bag(p0: T.Buffer[13, "int32"], p1: 
T.Buffer[13, "int32"], p2: T.Buffer[13, "int32"], p3: T.Buffer[13, "int32"], 
T_embedding_bag: T.Buffer[156, "int32"]) -> None:
           # function attr dict
           T.func_attr({"hash": "36740c103ca5395c", "target": 
T.target({"num-cores":12, "kind":"llvm", "host":T.target({"kind":"llvm", 
"tag":"", "keys":["cpu"], "num-cores":12}), "tag":"", "keys":["cpu"]}), 
"tir.noalias": True, "global_symbol": "tvmgen_default_fused_embedding_bag", 
"from_legacy_te_schedule": True})
           cse_var_1 = T.var("int32")
           T.preflattened_buffer(p0, [13], dtype="int32", data=p0.data)
           T.preflattened_buffer(p1, [1, 13], dtype="int32", data=p1.data)
           T.preflattened_buffer(p2, [13], dtype="int32", data=p2.data)
           T.preflattened_buffer(p3, [13], dtype="int32", data=p3.data)
           T.preflattened_buffer(T_embedding_bag, [12, 13], dtype="int32", 
data=T_embedding_bag.data)
           # body
           for ax0 in T.parallel(12):
               T_embedding_bag[ax0 * 13:ax0 * 13 + 13] = T.broadcast(0, 13)
               for k in T.serial(T.let(cse_var_1, ax0 + 1, T.if_then_else(12 == 
cse_var_1, 13, p2[cse_var_1], dtype="int32") - p2[ax0])):
                   cse_var_2: T.int32 = ax0 * 13
                   T_embedding_bag[cse_var_2:cse_var_2 + 13] = 
T_embedding_bag[cse_var_2:cse_var_2 + 13] + T.if_then_else(p0[k] != -1, 
p1[p0[k] * 13:p0[k] * 13 + 13] * T.broadcast(p3[k], 13), T.broadcast(0, 13), 
dtype="int32x13")
   ```
   
   ### Expected behavior
   
   The build should fail.
   
   ### Actual behavior
   
   The build succeeded and could introduce unexpected behavior.
   
   ### Environment
   
   #12993
   
   ### Steps to reproduce
   ```
   import tvm
   from tvm import relay
   
   indices = relay.var("indices", relay.TensorType((13,), "int32"))
   weights = relay.var("weights", relay.TensorType((1, 13), "int32"))
   offsets = relay.var("offsets", relay.TensorType((13,), "int32"))
   per_sample_weights = relay.var("per_sample_weights", relay.TensorType((13,), 
"int32"))
   res = relay.op.transform.embedding_bag(
       indices=indices,
       weights=weights,
       offsets=offsets,
       mode=0,
       padding_idx=-1,
       per_sample_weights=per_sample_weights,
       include_last_offset=True,
   )
   func = relay.Function([indices, weights, offsets, per_sample_weights], res)
   mod = tvm.IRModule.from_expr(func)
   f = relay.build(mod, tvm.target.Target("llvm --num-cores=12"))
   ```
   
   ### Triage
   
   * needs-triage
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to