如果我在主机和设备(GPU arch sm_13)上执行浮点(单精度)操作,那么值会不同吗?
问问题
991 次
1 回答
8
NVIDIA的白皮书对此进行了很好的讨论。基本上:
- 目前几乎所有东西都实现了 IEEE-754;
- 即使在忠实实施该标准之间,您仍然可以看到结果的差异(众所周知,英特尔在内部为双精度执行 80 位),或者编译器的高优化设置可能会改变结果
- 计算能力 2.0 和更高版本的 NVIDIA 卡支持单精度和双精度的 IEEE-754,只有非常小的警告
- 某些操作不支持某些舍入模式 - 仅当您在代码中明确更改舍入模式时才相关
- 有一些涉及融合乘法和加法的微妙之处
- CUDA 还提供了(稍微)较低的精度但更快的几个操作的实现,当然,如果您显式或隐式使用这些操作(带有编译器选项),您自然不会得到完整的 ieee-754 结果
- 计算能力 1.3 卡支持 ieee-754 双精度但不支持单精度;(单精度不支持非正规 - 例如非常小 - 数字、无 FMA、平方根和除法并不完全准确)
- 计算能力 1.2 卡只有单精度,并且不是完整的 ieee-754 如上所述。
于 2012-04-26T14:01:55.423 回答