学习了一下例子mgpcg_adavanced的代码。
有一个关于ti.root.pointer 的问题。
ti.root.pointer一共被调用了两次:
self.grid = ti.root.pointer(indices, [self.N_tot // 4]).dense(indices, 4).place(self.x, self.p, self.Ap)
for l in range(self.n_mg_levels):
self.grid = ti.root.pointer(indices,[self.N_tot // (4 * 2**l)]).dense(indices,4).place(self.r[l], self.z[l])
这里grid被赋值了两次指针,之后没有被调用过,那具体作用是什么呢?
这部分代码和下面的具体由什么区别?
ti.root.dense(indices, self.N_tot // 4).dense(indices, 4).place(self.x, self.p, self.Ap)
for l in range(self.n_mg_levels):
ti.root.dense(indices,self.N_tot // (4 * 2**l)).dense(indices,4).place(self.r[l], self.z[l])
个人感觉最后x, p, Ap, r, z的allocate应该是一致的。
但是程序给出的结果却不一样。