Frage

Ich benutze tbb compare_and_swap Betrieb in Xeon Phi in einem sperrfreien Algorithmus.Da es sich bei Xeon Phi um eine ordnungsgemäße Maschine handelt, wird diese nicht unterstützt sfence Betrieb.Funktionieren die atomaren Operationen also korrekt auf Xeon Phi?

War es hilfreich?

Lösung

Ja, sie funktionieren definitiv korrekt, der größte Teil von TBB selbst basiert auf atomaren Operationen.Und sfence ist nicht erforderlich, damit atomare Operationen korrekt funktionieren, es handelt sich um eine eigenständige Speicherbarriere, während atomare Operationen selbst Speicherbarrieren implizieren.TBB nutzt nicht sfence Sogar auf den regulären Xeons wird es verwendet mfence stattdessen für eine vollständige Speicherbegrenzung.Für Xeon Phi wird es durch einen atomaren No-Op-Betrieb ersetzt, z.mic_common.h von TBB enthält die folgenden Definitionen:

/** 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))
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top