Atomic verdoppelt / schwebt in Intel TBB

8

Gemäß der Dokumentation unterstützt eine atomare T, die von einem integralen Typ ist, Aufzählungstyp oder ein Zeigertyp. Unterstützt Intel TBB Floats / Doubles offiziell? Ich habe einige Patches hier und von Raf gesehen Schietekat hier , das möglicherweise in die neueste Version 4.0 integriert wurde . Von den Patches, die ich gelesen habe, war der einzige große Unterschied, den ich bemerkte, das Hinzufügen von reinterpret_cast vom Integer-Typ zu float / double. Wenn jemand das klären könnte, würde ich es begrüßen. Danke!

    
drselee 18.05.2012, 17:16
quelle

3 Antworten

1

Sie können problemlos Gleitkommazahlen hinzufügen, die auf 64- und 32-Bit-Ganzzahlen basieren. Atomare Ladung / Speichern / Austausch kann als direkte Wrapper mit reinterpret_cast implementiert werden, die atomaren arithmetischen Operationen können unter Verwendung einer Schleife mit atomischem Vergleichsaustausch implementiert werden.

    
user283145 05.10.2012 12:45
quelle
1

C ++ 11 unterstützt atomare Floats und Doubles. Arithmetische Funktionen wie std::atomic_fetch_add werden jedoch nur für ganzzahlige Typen unterstützt.

Wenn Sie einen C ++ 11-Compiler haben, würde ich empfehlen, zu std::atomic zu wechseln, damit Sie sich nicht auf undokumentiertes Verhalten verlassen müssen.

    
Philipp Claßen 28.12.2012 17:23
quelle
0

Der Test für nicht-integrale Typen in test_atomic.cpp wurde im Jahr 2008 hinzugefügt (kurz nach dem Zeitpunkt der Diskussion mit Raf). Daher unterstützt TBB sogar noch früher als der Zeitpunkt der Frage Float- und Doppel-Atomics (obwohl sie nur auf fetch_and_store und compare_and_exchange read-modify-write-Ops beschränkt sind).

    
Anton 25.04.2014 14:11
quelle

Tags und Links