ti.dynamic结构索引问题

在循环中索引动态数组只能通过循环变量i索引,而无法通过自定义的索引变量int索引。

在foo1中,用循环变量i索引给动态数组c1赋值可以得到正确的结果。

在foo2中,索引是通过定义的整型变量int来赋值的,但只会用int的初始值去索引,比如foo2中int初始值是0,即使后续通过int+=1修改int的值,用int索引c2,以及给c2赋值时,int仍然是0,即c2[int]=int等价于c2[0]=0,打印出来c2的长度也只有1。请问这个问题是否正常?

taichi version:1.4.1.代码块如下:

import taichi as ti
ti.init(arch=ti.gpu)

c1 = ti.field(ti.f32)
a1 = ti.root.dynamic(ti.i, 10, chunk_size=10)
a1.place(c1)

c2 = ti.field(ti.f32)
a2 = ti.root.dynamic(ti.i, 10, chunk_size=10)
a2.place(c2)

@ti.kernel
def foo1():
c1.deactivate()
for i in range(5):
c1[i] = i
print(c1[i]) # print: 1,2,3,4,5
print(c1.length()) # print: 5

@ti.kernel
def foo2():
int = ti.cast(0, ti.i32)
c2.deactivate()
for i in range(5):
c2[int] = int + 1
int += 1
print(c2[int],int)# print: (0.0,1), (0.0,2), (0.0,3), (0.0,4), (0.0,5),
print(c2.length()) # print: 1

foo1()
foo2()
print(c2) # print: [1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]

另外,chunk_size的大小怎么设置?如果改为a1 = ti.root.dynamic(ti.i, 200000, chunk_size=10),foo1中改为range(150000),程序会变得特别慢。