使用 __hfma 函数时 Device 和 Host 结果相差 1 ULP

您好,我在使用 CUDA 的 __hfma 函数时,遇到了一些精度相关的问题,希望能够得到帮助。
我在 CUDA 程序中调用 __hfma(half-precision fused multiply-add)函数来执行计算,但发现 Device 端和 Host 端计算的结果存在 1 ULP(Unit in the Last Place)的差异。以下是我的测试环境和代码片段:

  • GPU: [p4]
  • CUDA 版本: [12.1]
  • GPU 架构: [ sm_60]
  • 编译器命令: nvcc demo.cu -o demo -arch=sm_60

======================================
代码见附件


======================================

结果:

result in device: F817 vs -33504.000000
result in host: F816 vs -33472.000000

理论上应该是 0 ulp,但是产生了1ulp;
麻烦帮忙检查一下,是host端的参考计算不对,还是device端出现了偏差