今天突然发现在mpm88代码的P2G循环中
@ti.kernel
def substep():
for p in x:
.......
for i in ti.static(range(3)):
for j in ti.static(range(3)):
offset = ti.Vector([i, j])
......
grid_v[base+offset] += weight*(p_mass*v[p]+affine@dpos)
grid_m[base+offset] += weight*p_mass
这段代码中,在循环累加grid_v和grid_m时是否需要用到ti.atomic_add呢,因为貌似在有些时候x[i]+=1在并行时仍会产生撞车的现象https://forum.taichi-lang.cn/t/topic/2663/7。同时想问一问如果采用原子加法,对gpu并行计算性能的影响大嘛,谢谢!