Hasty Briefsbeta

双语

Matt Godbolt's blog

15 hours ago
  • SIMD自动向量化对整数求和效率很高,每次循环迭代处理8个整数,然后通过修正代码将8个部分和相加。
  • 由于舍入,浮点加法不满足结合律,因此编译器无法安全地以相同方式重新分组加法,导致即使每次迭代处理8个浮点数,也仍进行标量逐元素加法。
  • 解决办法包括使用-Ofast或-funsafe-math-optimizations(全局,有风险)或使用GCC属性为特定函数假设结合律;使用无序执行策略的std::reduce在测试中无效。