3.8 原子内存操作
原子内存操作(Atomic Memory Operation,AMO)是OpenSHMEM RMA能力的扩展,在RMA操作的被动端为执行简单操作做准备。因为AMO利用RMA的能力是非常底层的操作,它可以在对RMA硬件支持的系统中被硬件加速。当在被动端与wait或wait_until操作成对使用时,可以创建非常灵活的同步结构,使用适度的硬件支持就可扩展到超大规模系统。当前AMO集可使操作的主动端更新被动端对称内存的内存位置并可选择性地找回在该操作前该位置的值。所有操作符都为在远程(被动)端的目标与整型操作数兼容(int, long,及long long)。可用的原子操作有:increment、add、swap以及cswap(条件交换)。swap操作符也接受浮点操作数(float和double)。