0

tbb compare_and_swap在无锁算法中使用 Xeon Phi 中的操作。由于至强融核是有序机器,它不支持sfence操作。那么原子操作会在 Xeon Phi 上正常工作吗?

4

1 回答 1

1

是的,它们确实可以正常工作,大部分 TBB 本身都是基于原子操作的。并且sfence不是原子操作正常工作所必需的,它是一个独立的内存屏障,而原子操作本身意味着内存屏障。sfenceTBB甚至在常规 Xeon 上都不使用,而是mfence用于完整的内存栅栏。对于 Xeon Phi,它被 no-op atomic operation 代替,例如 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))
于 2014-07-31T07:24:37.537 回答