在我的代码中,前处理时需要反复建立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
请问该如何修改这段代码呢