I got kind of related errors yesterday, and I think the issue here [ERROR] Half type support in NVRTC is related. For now, I just use an old commit until the nvrtc issues are fixed.
diagonaled_mm = tvm.build(s, [X, Y, Z, D, w, w_upper, padding, transpose_t1, t3d3], target=device, target_host=tgt_host, name='diagonaled_mm')
/usr/tvm/python/tvm/build_module.py:636: in build
fhost, mdev = _build_for_device(flist, tar, target_host)
/usr/tvm/python/tvm/build_module.py:502: in _build_for_device
mdev = codegen.build_module(fdevice, str(target)) if fdevice else None
/usr/tvm/python/tvm/codegen.py:36: in build_module
return _Build(lowered_func, target)
/usr/tvm/python/tvm/_ffi/_ctypes/function.py:207: in __call__
raise get_last_ffi_error()
E tvm._ffi.base.TVMError: Traceback (most recent call last):
E operand types are: half * half
E function "operator*(__half, __half)"
E function "operator*(const __half &, const __half &)"
E File "/usr/tvm/src/codegen/opt/build_cuda_on.cc", line 119
E TVMError: Check failed: compile_res == NVRTC_SUCCESS (6 vs. 0) : default_program(31): error: more than one operator "*" matches these operands:
E default_program(31): error: ambiguous "?" operation: second operand of type "<error-type>" can be converted to third operand type "half", and vice versa
E
E default_program(31): error: more than one operator "*" matches these operands:
E function "operator*(const __half &, const __half &)"
E function "operator*(__half, __half)"
E operand types are: half * half
E
E default_program(31): error: ambiguous "?" operation: second operand of type "<error-type>" can be converted to third operand type "half", and vice versa
E
E default_program(31): error: more than one operator "*" matches these operands:
E function "operator*(const __half &, const __half &)"
E function "operator*(__half, __half)"
E operand types are: half * half
E
E default_program(31): error: ambiguous "?" operation: second operand of type "<error-type>" can be converted to third operand type "half", and vice versa
E
E default_program(46): error: more than one operator "*" matches these operands:
E function "operator*(const __half &, const __half &)"
E function "operator*(__half, __half)"
E operand types are: half * half
E
E default_program(46): error: ambiguous "?" operation: second operand of type "<error-type>" can be converted to third operand type "half", and vice versa
E
E default_program(46): error: more than one operator "*" matches these operands:
E function "operator*(const __half &, const __half &)"
E function "operator*(__half, __half)"
E operand types are: half * half
E
E default_program(46): error: ambiguous "?" operation: second operand of type "<error-type>" can be converted to third operand type "half", and vice versa
E
E default_program(46): error: more than one operator "*" matches these operands:
E function "operator*(const __half &, const __half &)"
E function "operator*(__half, __half)"
E operand types are: half * half
E
E default_program(46): error: ambiguous "?" operation: second operand of type "<error-type>" can be converted to third operand type "half", and vice versa
E
E 12 errors detected in the compilation of "default_program".