In the tvm frontend, operations which involves mixed datatypes(float16, float32, float64) as operands are not handled explicitly. I found a condition check which is missing in src/tir/ir.op.cc file for float case. After adding that check I ran TVM unit test suite and noticed that one of the example is failing. “ verify_callop_float_only(f) ” function from test_tir_ops.py is getting failed. Inside that function there is a check “ if ‘float’ in lhs_dtype and ‘float’ in rhs_dtype and lhs_dtype != rhs_dtype ” which allows variables with mixed datatypes execute. If this condition passes, the control goes to below code.
def check_throws(f): ** try:** ** f()** ** except tvm.error.TVMError:** ** pass** ** else:** ** raise AssertionError(“Should have raised an exception but didn’t.”)**
Earlier, without my changes this piece of code is going into except condition and working properly, now, after adding my change the control is going into else condition and asserting error.
- Is it expected to not handle mixed float datatypes from tvm frontend?
- If we allow mixed datatypes, then should I modify the example which is failing?