手动进行显式数据类型转换,依然有警告信息?

由于没找到bool变量(ti.u1),我尝试用位操作代替。

为了出现避免警告信息,我尽可能做了显式类型转换。但是程序运行后依然出现大量的警告信息,既增加了程序运行时间,又影响debug。

主要有三个疑问:

  1. 在我已经手动转换类型的情况下,这样的类型转换警告是否是一个bug?
  2. 是否有bool类型可使用?
  3. 是否能选择关闭特定类型的警告?

以下是出现运行的代码和对应的部分警告。
对应的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