超大field处理加速

如图所示,请问除了增加GPU资源外,如何加速处理这种超大field。
另 SNode Index 目前只支持 int32, 不支持int64,是什么意思呢? 是指field里的元素个数(shape=(g, nx, ny, nz))gnxny*nz 要不大于2^31吗?如果超过int32, 有什么影响吗?有什么办法解决吗?
再另:如果有一个class 如下:
@ti.dataclass
class test_field:
a: ti.int32
b: ti.f32
c: ti.math.vec3
d: ti.matrix

tf = test_field.field(shape=(1000, 1000, 500))

可以理解 tf 场的维度还是3维,大小还是1000 * 1000 * 500, 场中的每个格点属性为 a, b, c 和d吗?或者可以理解 tf 场的维度是4维, 大小为 4 * 1000 * 1000 * 500,4是指a, b, c和d

谢谢大家啦 :slight_smile:

这是我项目里实际要构造的计算场,大小为:
self.Nx, self.Ny, self.Nz = 1002, 1002, 122, 其中经过一些计算步骤后self.Nz会逐步增加

field的元素应该是不能超过2^31的,要不然会报错,实在不行分成多个field吧
关于tf场,我的认为是个三维field,每个元素里有4个变量(我觉得应该不适合理解为4维度吧,毕竟abcd四个量不是同一类型,没法并行的去操作吧)
关于你的field长度会增加这个问题,一般声明了一个field之后他的维度就固定了,不能再增大了。如果有需要增大的话,可以声明一个动态field

谢谢, 但是我的field里面元素的个数也没有超过2^31的,如果超过了会没办法运行吗?

image

超过的话应该是没法运行的,而且field的元素个数应该是一开始就要声明的(除非是动态field),一旦声明size超过2^31就会报错的。动态field能放多少元素文档里似乎没说,不过估计也是有限制吧

field的元素个数和类型的确是一开始就要申明的,但可以在python scope里的for loop里面改变field个数和类型,然后重新构建field。把原始的field元素保存一个temp_field, 重新fill到新的field里就行,这样也实现了动态field的构建