由于没找到bool变量(ti.u1),我尝试用位操作代替。
为了出现避免警告信息,我尽可能做了显式类型转换。但是程序运行后依然出现大量的警告信息,既增加了程序运行时间,又影响debug。
主要有三个疑问:
- 在我已经手动转换类型的情况下,这样的类型转换警告是否是一个bug?
- 是否有bool类型可使用?
- 是否能选择关闭特定类型的警告?
以下是出现运行的代码和对应的部分警告。
对应的Github issue
@ti.func
def set_bit(switches, i, dt):
switches |= (ti.cast(1, dt) << i)
return switches
@ti.kernel
def test():
for _ in range(1):
for i in range(8):
eight_flags = ti.cast(0, ti.u8)
eight_flags = set_bit(eight_flags, i, ti.u8)
print(ti.cast(eight_flags, ti.i32))
test()
[W 03/24/22 19:33:43.118 182586] [type_check.cpp:visit@142] [$128026] Local store may lose precision (target = u8, value = u8), at
128026
[W 03/24/22 19:33:43.118 182586] [type_check.cpp:visit@67] [$128035] Atomic bit_or (i32 to u8) may lose precision, at