CUDA中的双精度浮点

时间:2010-05-12 08:11:40

标签: floating-point cuda gpu gpgpu

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

另外,原因是什么?

4 个答案:

答案 0 :(得分:13)

如果你的GPU有compute capability 1.3,那么你可以做双精度。您应该知道,1.3硬件每个MP只有一个双精度FP单元,必须由该MP上的所有线程共享,而有8个单精度FPU,因此每个活动线程都有自己的单精度FPU。换句话说,你可能会发现双倍精度的性能比单精度差8倍。

答案 1 :(得分:11)

作为提示:

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

否则它仍会将所有双打转换为浮点数并仅发出警告(如faya的帖子中所示)。 (如果因为这个而导致错误,非常烦人:-))

标志是:-arch=sm_13

答案 2 :(得分:9)

根据Paul R的评论,Compute Capability 2.0设备(又名Fermi)具有更高的双精度支持,其性能仅为单精度的一半。

Fermi whitepaper详细介绍了新设备的双重性能。

答案 3 :(得分:2)

如果您想要比旧CUDA卡提供的精度更高的精度,您可以使用float-float解决方案。在现代GPU上,您还可以使用double-double来获得大于两倍的精度。

更多信息here