Æle*_*lex 3 cuda gpgpu nvidia floating-point-precision
我正在进行人工智能的博士研究,而且我已经开始使用CUDA库作为我的测试平台了.我以前玩过CUDA,我对GPGPU的工作原理有基本的了解,但我对浮点精度感到不安.
看看GTX680,我看到FP64:1/24 FP32,而特斯拉的完整FP64为1.31 TFLOPS.我很清楚,一张是游戏卡,而另一张是专业卡.
我问的原因很简单:我买不起特斯拉,但我可能得到两个GTX680.虽然主要目标是拥有尽可能多的CUDA内核和内存,但浮点精度可能会成为一个问题.
我的问题是:
谢谢 !
这些都是非常主观的问题.
您不太了解C或C++ float
与double
数据类型之间的区别.FP32与FP64是指float
和double
在C或C++.您所引用的1/8和1/24的数量不会影响精度,但它们会影响吞吐量.所有GPU的你提到有一些FP64双精度能力,所以区别不下来,以能力这么多的性能.
了解您关心的代码是否依赖于双精度浮点非常重要.仅仅通过"矩阵运算"来理解FP32(float
)或FP64(double
)是否重要是不够的.
如果您的代码依赖于FP64 double
,那么这些性能比(1/8,1/24等)将是相关的.但是你的代码应该仍然运行,也许更慢.
您也会以一种可能导致混淆的方式使用某些术语.特斯拉指的是NVIDIA GPGPU系列计算产品.最好引用特斯拉家族的特定成员.由于你提到1.31 TFlops FP,你指的是特斯拉K20X.注意,K20X还具有FP64吞吐量和FP32吞吐量之间的比率(即,它可以是速度甚至比1.31万亿次上FP32码).
如果你的算法依赖于double
他们仍然会在任何你提到的产品的运行,并且结果的准确性应该是相同的,无论该产品,但是性能会有所降低,depnding在产品上.如果您的算法依赖于float
它们,它们将在任何给定产品上运行得更快double
,假设浮点吞吐量是限制因素.
您可能还想考虑GeForce GTX Titan.它具有双精度浮点性能,与特斯拉K20/K20x大致相当.