taichi_logo转动程序使用gpu运行时的问题

我的运行环境是taichi version 1.6.0, llvm 15.0.1, Windows 10, python 3.10.11。

在运行以上代码时,我发现如果使用ti.init(arch=ti.gpu),则程序在运行一小段时间后画布上会出现灰点。使用ti.init(arch=ti.cpu)时则好像不会发生。

我把这个转动taichi_logo的程序稍微简化了一下:

from taichi.examples.patterns import taichi_logo
import taichi as ti
ti.init(arch=ti.gpu)

n = 512
x = ti.field(dtype=ti.i32)

block1 = ti.root.pointer(ti.ij, 8)
block2 = block1.pointer(ti.ij, 4)
block3 = block2.pointer(ti.ij, 4)
block3.dense(ti.ij, 4).place(x)

@ti.kernel
def activate(t: ti.f32):
    for i, j in ti.ndrange(n, n):
        p = ti.Vector([i, j]) / n
        p = ti.math.rotation2d(ti.sin(t)) @ (p - 0.5) + 0.5

        if taichi_logo(p) == 0:
            x[i, j] = 1

@ti.kernel
def fun():
        for i in range(512):
            for j in range(512):
                if x[i,j] != 0:
                    print(x[i,j])

def main():
    for i in range(100000):
        block1.deactivate_all()
        fun()
        activate(i * 0.05)

if __name__ == "__main__":
    main()

我发现在以上代码运行一段时间后,程序会输出 1。

我理解的是 block1.deactivate_all() 后print出来的x[i, j]应始终为0。

如果把以上代码修改为ti.init(arch=ti.cpu)则x[i, j]好像始终为0。

目前我发现ti.is_active以及ti.deactivate也会出现类似问题。

请问这是为什么呢?感谢解惑