17

CUDA 是否支持双精度浮点数?

另外,同样的原因是什么?

4

4 回答 4

16

如果您的 GPU 具有1.3 的计算能力,那么您可以进行双精度。您应该知道,虽然 1.3 硬件每个 MP 只有一个双精度 FP 单元,必须由该 MP 上的所有线程共享,而有 8 个单精度 FPU,因此每个活动线程都有自己的单精度 FPU。换句话说,您可能会看到双精度的性能比单精度差 8 倍。

于 2010-05-12T08:24:47.577 回答
11

作为提示:

如果你想使用双精度,你必须将 GPU 架构设置为sm_13(如果你的 GPU 支持它)。

否则,它仍会将所有双精度数转换为浮点数并仅给出警告(如 faya 的帖子所示)。(如果您因此遇到错误,非常烦人:-))

旗帜是:-arch=sm_13

于 2010-08-30T23:27:27.807 回答
9

继 Paul R 的评论之后,Compute Capability 2.0 设备(又名 Fermi)大大改进了双精度支持,性能仅为单精度的一半。

这份Fermi 白皮书详细介绍了新设备的双重性能。

于 2010-05-12T09:41:19.687 回答
2

正如其他人所提到的,较旧的 CUDA 卡不支持该double类型。但是,如果您想要比旧 GPU 提供的精度更高的精度,您可以使用类似于double-double技术的float-float解决方案。有关该技术的更多信息,请阅读

当然,在现代 GPU 上,您也可以使用double-double来实现大于 double 的精度。double-double也用于long doublePowerPC

于 2013-08-02T07:46:34.340 回答