CUDA回退到CPU?

时间:2009-12-22 14:08:37

标签: cpu cuda

我有一个CUDA应用程序,在一台计算机上(使用GTX 275)工作正常,在另一台计算机上,GeForce 8400的工作速度大约慢100倍。我怀疑是有某种回退使得代码实际上在CPU而不是GPU上运行。

有没有办法确保代码在GPU上运行? 这个后备是否记录在某处? 什么条件可能触发它?

编辑:代码使用计算能力1.1进行编译,这是8400所具有的。

3 个答案:

答案 0 :(得分:7)

难道不仅仅是性能差距那么大。 This链接表示8400运行在22-62 GFlops,此link表示GTX 275运行在1010.88 GFlops。

答案 1 :(得分:2)

有很多可能的原因。

  1. 据推测,您没有使用仿真设备。您可以从SDK运行设备查询示例吗?这将显示您是否正确安装了工具包和驱动程序。

    您还可以在应用中查询设备属性,以检查您所连接的设备。

  2. 8400的性能远低于GTX275,所以它可能是真实的,但请看下一点。

  3. 从计算能力1.1到1.2及更高版本的一个主要变化是处理内存访问的方式。在1.1中,你必须非常小心,不仅要合并你的内存访问,还要确保每个半warp是对齐的,否则每个线程将发出它自己的32字节事务。在1.2及更高版本中,对齐不是一个问题,因为它会优雅地降级以最小化事务。

    这与8400的较低性能相结合,也可以说明你所看到的。

答案 2 :(得分:1)

如果我没记错的话,您可以从主机代码中列出所有可用的设备(并选择用于内核的设备)。您可以尝试确定可用设备是否为软件仿真并发出警告。