我快速浏览了 CUDA 编程指南 wrt -use-fast-math optimizations,虽然附录 C 提到了要转换为内在函数的除法,但没有提到乘法。我问这个问题的原因是,我的内核有很多乘法。我知道 NVCC 会尝试融合乘法和加法(当使用常规的“*”和“+”运算符时,并且内在函数永远不会合并到 FMAD 操作中)。但是,如果我的代码是乘法繁重的,那么如果使用舍入 SP 内在函数会有好处__fmul_rn
吗?
所以有两个问题:
-use-fast-math 选项是否将使用“*”运算符的乘法转换为像 __fmul_rn 这样的 SP 内在函数?
手动编码乘法以显式使用 __fmul_rn 是否会带来性能优势?一个例子或一些数字可以帮助我理解。