3

我正在做我的 AI 博士研究,我已经到了必须开始为我的测试平台使用 CUDA 库的部分。我以前玩过 CUDA,对 GPGPU 的工作原理等有基本的了解,但我对浮点精度感到困扰。

看着 GTX680,我看到 FP64:1/24 FP32,而 Tesla 在 1.31 TFLOPS 有完整的 FP64。我很明白,一张是游戏卡,一张是职业卡。

我问的原因很简单:我买不起特斯拉,但我可能能买到两台 GTX680。虽然主要目标是拥有尽可能多的 CUDA 内核和内存,但浮点精度可能会成为一个问题。

我的问题是:

  1. 游戏 GPU 中的小浮点精度有多少折衷?
  2. 32位浮点精度的1/24是不是太小了?尤其是与之前的 1/8 FP32 费米相比
  3. 由于浮点精度较小,是否存在计算结果错误的风险?即在支持向量机、VSM、矩阵运算、深度信念网络等中,由于浮点数较小,我是否会对算法的结果有问题,或者它是否仅仅意味着运算将花费更长的时间/使用更多的内存?

谢谢 !

4

1 回答 1

9

这些都是非常主观的问题。

float您是否了解 C 或 C++与数据类型之间的区别并不完全清楚double。FP32 与 FP64 指的是floatCdouble或 C++ 中的和。您提到的 1/8 和 1/24 的数字不会影响精度,但它们会影响吞吐量。您提到的所有 GPU 都具有一些 FP64 双精度功能,因此差异不归结为性能,而是性能

了解您关心的代码是否依赖于双精度浮点对您来说非常重要。仅仅说“矩阵运算”之类的东西来理解 FP32 ( float) 或 FP64 ( double) 是否重要是不够的。

如果您的代码依赖于 FP64 double,那么这些性能比(1/8、1/24 等)将是相关的。但是你的代码应该仍然可以运行,也许会更慢。

您还以可能导致混淆的方式使用了一些术语。Tesla 指的是 NVIDIA GPGPU 系列计算产品。最好是指特斯拉家族的特定成员。由于您提到 1.31 TFlops FP,您指的是 Tesla K20X。请注意,K20X 还具有 FP64 吞吐量和 FP32 吞吐量之间的比率(即它甚至可以比 FP32 代码上的 1.31 TFlops 更快)。

如果您的算法依赖于double它们仍然可以在您提到的任何产品上运行,并且无论产品如何,结果的准确性都应该相同,但是性能会更低,具体取决于产品。如果您的算法依赖于float,那么它们在任何给定产品上的运行速度都会比 快double,假设浮点吞吐量是限制因素。

您可能还想考虑GeForce GTX Titan。它具有与 Tesla K20/K20x 大致相当的双精度浮点性能。

于 2013-04-16T02:12:07.070 回答