ti.func函数返回的Vector大小问题以及参数大于一定值时程序未相应问题


这是一个类的方法,调用该方法的ti.kernel在while gui.running中执行,其中我将ret = ti.Vector([0 for _ in range(100)])的100改为k时会出现报错
另外,我想知道,从显示窗口到窗口内容开始显示这段时间程序在做什么
我只定义了一个实例,当参数较大时会出现程序未响应情况,只有窗口,参数变大从窗口出现到呈现画面的时间会变长,但是帧数却不低(50fps以上)请问,可能是什么原因?


从定义gui到显示的代码,gui.show在 boid.render(gui, AR)中


第二个问题具体而言是在第一次从调用该函数到正式开始执行该函数会花费大量时间,这是什么原因呢,应该怎么修改?

Vector不是局部数组,Vector里每个都是单独的寄存器元素,不建议创建超过4个元素的Vector。

建议创建一个全局field来存储,如果每个线程都需要一个100的局部数组,那么就:

ret = ti.field(shape=(n, 100), dt=ti.f32)

其中n是线程数量。

非常感谢,这样两个问题都解决了