代码之家  ›  专栏  ›  技术社区  ›  shoosh

CUDA退回CPU?

  •  2
  • shoosh  · 技术社区  · 15 年前

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

    有没有办法真正确保代码在GPU上运行?
    是否在某个地方记录了此回退?
    什么情况会触发它?

    编辑:代码是用8400的计算能力1.1编译的。

    3 回复  |  直到 15 年前
        1
  •  2
  •   Tom    15 年前

    有很多可能的原因。

    1. 大概你没有使用模拟设备。可以从SDK运行设备查询示例吗?这将显示是否正确安装了工具箱和驱动程序。

      您还可以从应用程序中查询设备属性,以检查您连接到的设备。

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

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

      再加上8400的低性能,这也可以解释您所看到的情况。

        2
  •  7
  •   Andreas Brinck    15 年前

    难道不是因为性能上的差距太大了吗? This 链接指示8400在22-62 gflops下运行,并且 link 指示GTX 275在1010.88 gFlops下运行。

        3
  •  1
  •   Victor Nicollet    15 年前

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