我正在进行人工智能的博士研究,而且我已经开始使用CUDA库作为我的测试平台了。 我以前玩过CUDA,我对GPGPU的工作原理有基本的了解,但我对浮点精度感到不安。

看看GTX680,我看到FP64:1/24 FP32,而特斯拉的完整FP64为1.31 TFLOPS。 我很清楚,一张是游戏卡,而另一张是专业卡。

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

我的问题是:

  1. Gaming GPU中的小浮点精度有多大妥协?
  2. 是不是32位浮点精度的1/24太小了? 特别是与之前的费米1/8 FP32相比
  3. 由于浮动精度较小,是否存在计算结果错误的风险? 即在SVM,VSM,Matrix操作,深度信念网络等中,由于浮点较小,我可能会遇到算法结果的问题,还是仅仅意味着操作需要更长时间/使用更多内存?

谢谢 !

===============>>#1 票数:8 已采纳

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

您不太清楚您是否理解C或C ++ floatdouble数据类型之间的区别。 FP32与FP64指的是C或C ++中的floatdouble 您所引用的1/8和1/24的数量不会影响精度,但它们会影响吞吐量 所有GPU的你提到有一些FP64双精度能力,所以区别不下来,以能力这么多的性能

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

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

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

如果您的算法依赖于double它们仍将在您提及的任何产品上运行,并且无论产品如何,结果的准确性应该相同,但性能会降低,从而降低产品的性能。 如果您的算法依赖于float ,那么假设浮点吞吐量是限制因素,它们将在任何给定产品上运行得更快,而不是double

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

  ask by Ælex translate from so

未解决问题?本站智能推荐: