请问 j += 1 和 j = j+1 的差别是什么?

您好,这里问一个很小白的问题,在以下代码中,当serialize设置为False时 使用 j=j+1 和 使用 j+=1 计算出来的结果不同,j+=1 计算结果正确,请问这是什么原因呢?

import taichi as ti
ti.init(default_ip=ti.i64)
@ti.kernel
def run()->ti.i64:
    j = 0
    ti.loop_config(serialize=False)
    for i in ti.ndrange(10000000):
        j = j+1
    return j

print(run())

j += 1是原子操作
j = j+1并非原子操作,在你的算例中会由于taichi的自动并行计算出现问题

2 个赞