использование атомарных операций tbb в Xeon Phi

StackOverflow https://stackoverflow.com//questions/25046580

  •  21-12-2019
  •  | 
  •  

Вопрос

Я использую tbb compare_and_swap работа в Xeon Phi по алгоритму без блокировок.Поскольку Xeon Phi - это машина в порядке, она не поддерживает sfence операция.Итак, будут ли атомарные операции корректно работать на Xeon Phi?

Это было полезно?

Решение

Да, они определенно работают корректно, большая часть самого TBB основана на атомарных операциях.И sfence не требуется для корректной работы атомарных операций, это автономный барьер памяти, в то время как атомарные операции сами по себе подразумевают барьеры памяти.TBB не использует sfence даже на обычных Xeons он использует mfence вместо этого для полного забора памяти.Для Xeon Phi он заменяется атомарной операцией no-op, напримерmic_common.h из TBB содержит следующие определения:

/** 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))
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top