CUDA是否支持双精度浮点数?
另外,原因是什么?
答案 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