刚刚开始接触taichi,今天写代码的时候发现一个问题,有如下一个函数,用于三维数组的寻址(用一维数组存储的三维数组),当我不加@ti.func
的时候,在kernel函数中调用了该函数,发生了报错
def particleCoor(idx):
tmp = idx
z = int(tmp / (dim_length * dim_width))
tmp = tmp % (dim_length * dim_width)
y = int(tmp / dim_length)
x = tmp % dim_length
return x, y, z
报错内容为:
int() argument must be a string, a bytes-like object or a number, not 'Expr'
而当我用@ti.func
来修饰了上面这个函数之后,就不会报错且运行正常了。可是我认为该函数会在taichi和python两个scope中都频繁地用到。请问这种情况大家一般是如何处理的呢?写有@ti.func
和无@ti.func
的两个版本么?