您好,我在使用 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端出现了偏差