假设在某些 C 或 C++ 代码中,我有一个名为的函数T fma( T a, T b, T c )
,它执行 1 次乘法和 1 次加法,如下所示( a * b ) + c
;我应该如何优化多个mul 和添加步骤?
例如,我的算法需要用 3 或 4 个 fma 操作链接并汇总在一起来实现,我如何编写这是一种有效的方法,我应该特别注意语法或语义的哪一部分?
我还想要一些关于关键部分的提示:避免更改 CPU 的舍入模式以避免刷新 cpu 管道。但我很确定,仅使用+
多个调用之间的操作fma
不应该改变这一点,我说“非常确定”,因为我没有太多 CPU 来测试这个,我只是遵循一些合乎逻辑的步骤.
我的算法类似于多个 fma 调用的总数
fma ( triplet 1 ) + fma ( triplet 2 ) + fma ( triplet 3 )