如果我在主机和设备(GPU拱sm_13)执行一个浮子(单精度)的操作,然后将这些值是不同的?
Answer 1:
这方面的一个很好的讨论是在availble的白皮书从NVIDIA。 基本上:
- IEEE-754是由几乎所有目前已实施;
- 即使是忠实地执行这一标准间,你仍然可以看到的结果与你的编译器可以改变结果的差异(著名,英特尔做80位内部为双精度),或高优化设置
- 计算能力2.0和更高版本的NVIDIA显卡支持IEEE-754单精度和双精度,只有非常小的告诫
- 有些舍入模式不支持某些操作 - 这仅是相关的,如果你明确地改变舍入模式在你的代码
- 有涉及融合乘法一些细微之处,并增加了
- CUDA还提供了(略)精度较低,但几个操作的更快实现,当然,如果你使用这些显式或隐式(使用编译器选项),你自然就不会得到充分的IEEE-754结果
- 计算能力1.3卡支持如上面在双精度但不是在单精度IEEE-754; (单精度不支持反规范 - 如非常小 - 数字,没有FMAS,平方根和除法并不完全准确)
- 计算能力为1.2卡只有单精度,而这些都是不完整的IEEE-754同上。
文章来源: IEEE-754 standard on NVIDIA GPU (sm_13)