如下面代码所示,我建立了很一个有taichi kernel方法的类,然后创建了很多个类对象,似乎每个对象第一次执行taichi kernel函数时都会反复的编译,所以导致第一次循环画的时间尤其长,有什么办法避免它反复编译?
import taichi as ti
from time import time
ti.init(arch = ti.cuda)
@ti.data_oriented
class some_class():
def __init__(self):
self.q = ti.field(float, shape = 100000)
@ti.kernel
def run(self):
for i in ti.grouped(self.q):
self.q[i] = ti.random()
obj = []
for i in range(500):
obj.append(some_class())
t1 = time()
for i in range(500):
obj[i].run()
print(time()-t1)
t1 = time()
for i in range(500):
obj[i].run()
print(time()-t1)
t1 = time()
for i in range(500):
obj[i].run()
print(time()-t1)
运行结果:
[Taichi] version 1.6.0, llvm 15.0.1, commit f1c6fbbd, win, python 3.11.4
[Taichi] Starting on arch=cuda
35.50552034378052
0.012999296188354492
0.013999700546264648