原子操作
GPU的原子操作是指在并发环境下,多个线程可以安全地对共享变量进行读写的操作。这些操作是不可分割的,意味着在一个线程的原子操作没有完成之前,其他线程不能中断或观察到其操作的中间状态。这在多线程环境中尤为重要,特别是在并行计算的场景中,比如GPU。
常见的原子操作类型
- 原子加/减 (atomicAdd, atomicSub):对变量执行加减操作。
- 原子比较交换 (atomicCAS):检查变量是否为某个值,如果是则更新为另一个值。这通常用于实现锁或同步。
- 原子交换 (atomicExch):将变量的值交换为另一个值。
- 原子最大/最小 (atomicMax, atomicMin):对变量执行取最大值或最小值操作。
Panfrost架构中原子操作
- ATOM_PRE
- ATOM_C/ATOM_C_RETURN ----消息指令,真正执行
- ATOM_Post---把address未执行操作之前的旧值Move到寄存器,作为返回值