[英]Double precision floating point in CUDA
CUDA是否支持双精度浮点数?
另外,同样的原因是什么?
如果您的GPU具有计算能力1.3,那么您可以进行双精度。 您应该知道,1.3硬件每个MP只有一个双精度FP单元,必须由该MP上的所有线程共享,而有8个单精度FPU,因此每个活动线程都有自己的单精度FPU。 换句话说,您可能会发现双精度性能比单精度高8倍。
作为提示:
如果要使用双精度,则必须将GPU架构设置为sm_13
(如果您的GPU支持它)。
否则它仍然会将所有双打转换为浮点数并仅发出警告(如faya的帖子中所示)。 (如果你因为这个问题得到错误,非常烦人:-))
标志是: -arch=sm_13
根据Paul R的评论,Compute Capability 2.0设备(又名Fermi)具有更高的双精度支持,性能仅为单精度的一半。
这篇Fermi白皮书详细介绍了新设备的双重性能。
正如其他人所说,旧的CUDA卡不支持double
类型。 但是如果你想要比你的旧GPU提供的更精确,你可以使用类似于双重双重技术的float-float解决方案。 有关该技术的更多信息,请阅读
当然,在现代GPU上,你也可以使用双倍来实现大于两倍的精度。 在PowerPC上, double-double
也用于long double
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.