Ti.func函数内声明数组

我知道可以用field声明一个全局变量作为缓存,然后传入到ti.func函数中,但是直接在func函数中声明数组作为缓存也许是更好的解决方案。

有没有办法声明一个栈上的临时数组?

用例代码CUDA版本:

__device__
void foo(......) {
    AABB nodes[40];
    ......
}

我试过Vector,但是Vector是并行展开的,其index是静态编译好的
我也试过python的数组 [],这个没有办法用动态的数字下标访问,只能用静态的数字访问。

你是想要类似C++中的Vector么?

Taichi 提供 ti.dynamic 结点,可以满足你的要求?

可以参考:


感谢您的回答!我查了下dynamic这个feature好像文档提到的不多,我没法了解它的内部运作机制(内存如何动态管理的)。另外我前面提的问题并不是想要C++中的std::vector,而是想问下能否在ti.kernel和ti.func中声明数组,如a[10] 这样的,存在于栈中的数组,因为python本身不支持静态定长的数组。taichi在设计的时候有没有考虑到这种需求呢?

这个问题是来自于~~~近期我正在尝试把以前用CUDA写的程序用taichi重写,但是碰到了局部变量数组不知道怎么用taichi实现~