繁体   English   中英

英特尔TBB中的原子加倍/浮动

[英]Atomic doubles/floats in Intel TBB

根据文档,原子支持T是整数类型,枚举类型或指针类型。 英特尔TBB支持正式浮动/加倍吗? 我在这里和Raf Schietekat 在这里看到了一些补丁,这些补丁可能/可能未集成到最新的4.0版本中。 从我读过的补丁中,我注意到的唯一主要区别是,将reinterpret_cast从整数类型添加到了float / double。 如果有人可以澄清这一点,我将不胜感激。 谢谢!

您可以轻松地添加对基于64位和32位原子整数的浮点数的支持。 可以使用reinterpret_cast将原子加载/存储/交换实现为直接包装,可以使用具有原子比较交换的循环来实现原子算术运算。

C ++ 11支持原子浮点数和双精度数。 std::atomic_fetch_add ,仅整数类型支持std::atomic_fetch_add类的算术函数。

如果您使用的是C ++ 11编译器,建议您切换到std::atomic这样就不必依赖未记录的行为。

test_atomic.cpp中的非整数类型测试是在2008年添加的(与Raf讨论之后不久)。 因此,由于甚至早于提出问题的时间,TBB就支持float&double原子(尽管仅限于fetch_and_store和compare_and_exchange读取-修改-写入操作)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM