关于多次建立同一field的问题:如何得到我想要的输出

在我的代码中,前处理时需要反复建立field,但是这个field占用空间比较大,因此在用完后需要手动销毁。如下为简化代码:

import taichi as ti
ti.init()

@ti.data_oriented
class B(object):
    def __init__(self):
        self.x=ti.field(int)
        fb=ti.FieldsBuilder()
        fb.dense(ti.i,1).place(self.x)
        self.snode_tree=fb.finalize()
        
    def clear(self):
        self.snode_tree.destroy()

@ti.data_oriented
class A(object):
    def __init__(self):
        self.n=12345
        
    def init(self):
        self.b=B()
        self.x=ti.field(int)
        fb=ti.FieldsBuilder()
        fb.dense(ti.i,self.n).place(self.x)
        self.snode_tree=fb.finalize()
        
    def clear(self):
        self.snode_tree.destroy()
        self.b.clear()
        del self.b
        
    @ti.kernel
    def k(self, m: int):
        for i in range(self.n):
            self.x[i] = m * i
            self.b.x[0] += m
            
    def start(self):
        self.init()
        self.k(1)
        print(self.x[34], self.b.x[0]) # -> output: 34 12345 // expected output: 34 12345
        self.clear()
        del self.x
        
        self.init()
        self.k(2)
        print(self.x[34], self.b.x[0]) # -> output: 0 24690 // expected outpu: 68 24690
        self.clear()
        del self.x
        
a=A()
a.start()

我想要得到的输出为:

34 12345
68 24690

然而实际输出为:

34 12345
0 24690

请问该如何修改这段代码呢

捞一捞:sob: :sob: :sob:

我这边确实能复现这个问题,在看原因

好像只可以用一个FieldsBuilder

您好,请问您找到原因了码

不好意思还在排查原因,预计下周结束前可以搞定