我在Xeon Phi中使用无锁算法中的tbb
compare_and_swap
操作。由于Xeon Phi是一台订购机,它不支持sfence
操作。那么原子操作在Xeon Phi上会正常工作吗?
答案 0 :(得分:1)
是的,它们肯定能正常工作,TBB本身的大部分都是基于原子操作。并且sfence
不是原子操作正常工作所必需的,它是一个独立的内存屏障,而原子操作本身意味着内存屏障。 TBB即使在常规Xeon上也不使用sfence
,而是使用mfence
代替完整的内存栅栏。对于Xeon Phi,它被无操作原子操作代替,例如TBB的mic_common.h包含以下定义:
/** Intel(R) Many Integrated Core Architecture does not support mfence and pause instructions **/
#define __TBB_full_memory_fence() __asm__ __volatile__("lock; addl $0,(%%rsp)":::"memory")
#define __TBB_Pause(x) _mm_delay_32(16*(x))