fast-math相关内容

double 和 ffast-math 上的自动矢量化

为什么必须使用 -ffast-math 和 g++ 来实现使用 doubles 的循环向量化?我不喜欢 -ffast-math 因为我不想失去精度. 解决方案 使用 -ffast-math 不一定会丢失精度.它只影响NaN、Inf等的处理以及操作执行的顺序. 如果您不希望 GCC 重新排序或简化计算的特定代码段,您可以使用 asm 语句将变量标记为正在使用. 例如,以下代码对 ..
发布时间:2022-01-23 21:14:08 其他开发

是否有任何浮点密集型代码在任何基于 x86 的架构中产生位精确的结果?

我想知道使用浮点运算的 C 或 C++ 中的任何代码是否会在任何基于 x86 的体系结构中产生精确的结果,而不管代码的复杂性. 据我所知,自 Intel 8087 以来的任何 x86 架构都使用准备处理 IEEE-754 浮点数的 FPU 单元,而且我看不出任何原因导致结果在不同架构中会有所不同.但是,如果它们不同(即由于不同的编译器或不同的优化级别),是否可以通过配置编译器来产生精确的结果 ..
发布时间:2022-01-06 12:55:49 其他开发

gcc 的 ffast-math 实际上是做什么的?

我了解 gcc 的 --ffast-math 标志可以大大提高浮点运算的速度,并且超出了 IEEE 标准,但我似乎无法找到有关真正发生的事情的信息在.任何人都可以解释一些细节,也许可以给出一个清晰的例子,说明如果标志打开或关闭,某些事情会发生什么变化? 我确实尝试过挖掘 S.O.对于类似的问题,但找不到任何解释 ffast-math 工作原理的内容. 解决方案 正如您提到的,它允许进 ..
发布时间:2021-12-08 11:33:46 其他开发

像Denormals-Are-Zero(DAZ)这样的异常标志是否会影响相等性的比较?

如果我有2个具有不同位模式的非正规浮点数并比较它们是否相等,结果是否会受到Denormals-Are-Zero标志,Flush-to-Zero标志或常用处理器上的其他标志的影响? 还是这些标志仅影响计算而不影响相等性检查? 解决方案 DAZ(异常 Are 零)会影响读取输入,因此 DAZ会影响比较.根据其符号,所有异常值都按字面意义被视为 -0.0 或 +0.0 . FTZ(刷 ..
发布时间:2021-05-08 19:53:54 其他开发

如果更喜欢使用-ffast-math,则哨兵值较高,可以加倍

由于 gcc 选项 -ffast-math 有效地禁用了 NaN 和-/+ inf ,因此我我正在寻找对性能至关重要的数学代码中表示 NaN 的下一个最佳选择.理想情况下,如果对哨兵值进行操作(添加,mul,div,sub等),将产生哨兵值,就像 NaN 一样,但是我怀疑这样做是否可行,因为我认为 NaN是完成此操作的唯一值. -0.0 可能不是一个很好的选择,因为它也已在 -ffast-math ..
发布时间:2021-05-02 20:28:42 其他开发

是否可以使编译器按功能使用快速运算符?

假设我有 template void foo(float* data, size_t length); 并且我想用-ffast-math编译一个实例(对于nvcc是--use-fast-math),而没有它的另一个实例. 这可以通过在单独的翻译单元中实例化每个变体,然后使用不同的命令行(使用和不使用开关)来编译每个变体来实现. 我的问题 ..

gcc -Ofast-限制的完整列表

我在程序中使用-Ofast gcc选项导致延迟要求.我写了简单的测试程序: #include #include static double quiet_NaN = std::numeric_limits::quiet_NaN(); int main() { double newValue = 130000; dou ..
发布时间:2020-07-31 01:18:45 C/C++开发

在任何基于x86的体系结构中,是否有浮点密集型代码会产生位精确的结果?

我想知道在C或C ++中使用浮点运算的任何代码在任何基于x86的体系结构中是否都能产生精确的结果,而与代码的复杂性无关. 据我所知,自Intel 8087以来的任何x86架构都使用了准备处理IEEE-754浮点数的FPU单元,而且我看不出在不同架构中结果会有所不同的任何原因.但是,如果它们不同(即由于不同的编译器或不同的优化级别),那么是否有某种方法可以通过仅配置编译器来产生位精确的结果? ..
发布时间:2020-07-31 01:18:41 其他开发

是否存在与Visual Studio C ++编译器相同的-ffast-math标志

我正在使用Visual Studio 2013附带的标记 / Ox 的默认C ++编译器(我猜它叫做“Visual Studio C ++编译器”)( 全面优化)。由于浮点副作用,当使用 gcc 编译器时,我必须禁用 -ffast-math 标志。在Visual Studio C ++编译器配置中,是否存在与此标志等效的选项? 解决方案 您正在寻找,尽管这也是默认值。 如果你需要VS ..

gcc,simd内在函数和快速数学概念

大家好:) 我试图得到关于浮点,SIMD /数学内在函数和gcc的快速数学标志的一些概念。更具体地说,我在x86 cpu上使用MinGW和gcc v4.5.0。 我现在搜索了一段时间,这就是我(想我)目前理解: 当我没有标记编译时,任何fp代码都将是标准x87,没有simd内在函数,math.h函数将从msvcrt.dll。 当我使用 mfpmath , mssen 和/或 ..
发布时间:2018-04-20 17:16:00 其他开发

在double和ffast-math上自动矢量化

为什么在g ++中使用 -ffast-math 来强制使用 double s来实现循环的向量化?我不喜欢 -ffast-math 因为我不想失去精确度。 解决方案 它只影响 NaN , Inf 等的处理以及执行操作的顺序。 如果您有一段代码不希望GCC重新排序或简化计算,则可以使用 asm 标记变量c $ c>语句。 例如,以下代码对 f 执行舍入操作。然而,两个 f + = g ..
发布时间:2018-04-18 20:40:41 其他开发语言

gcc的快速数学实际上做了什么?

我知道gcc的 - ffast-math 标志可以大大提高浮点操作的速度,并超出IEEE标准,但我似乎无法找到关于当它开始时真的发生了什么。任何人都可以请解释一些细节,也许给一个明确的例子,如果国旗是打开还是关闭,会发生什么样的变化? 我曾尝试通过S.O.对于类似的问题,但找不到解释ffast数学运算的任何东西。 例如: pre $ code > x = x * x * x * ..
发布时间:2017-12-19 22:28:21 其他开发