【问题标题】:Using a GPU card with more Streaming Mulitprocessors使用带有更多流式多处理器的 GPU 卡
【发布时间】:2012-08-11 11:06:37
【问题描述】:

目前我正在使用带有 2 个 SM 的 GeForce GPU 卡。我正在该 GPU 卡上运行一些实验,并观察到与类似的 CPU 实现相比,该代码的执行速度快了 5 倍。我很好奇,如果我在更强大的 GPU 卡(例如 Tesla GPU)上运行完全相同的代码,与使用 GeForce 卡时获得的时间相比,我是否会获得更好的执行时间。如果是,为什么会这样?如果没有,我应该如何修改我的代码(在高级别),因为我希望更强大的 GPU 卡可以给我更多的加速。

【问题讨论】:

    标签: cuda gpu


    【解决方案1】:

    每个 SM 一次最多可以运行 8 个左右的块(通常更少,对于需要更多资源(例如共享内存)的块),因此具有大量 SM 的 GPU 可以运行相应数量更多的块。

    为了让您的代码在未来适用于更大的 GPU,请在内核调用中指定基于(并大于)系统中 SM 数量的块数。这可以通过查看deviceProp::multiProcessorCount 或使用CU_DEVICE_ATTRIBUTE_MULTIPROCESSOR_COUNT 调用cuDeviceGetAttribute 来查询。

    【讨论】:

      【解决方案2】:

      如果满足以下所有条件,则应该期望具有更多 SM 的 GPU 具有更好的性能:

      • 新 GPU 的架构与您现有的 GPU 相同或更新,
      • 新的 GPU 具有相同或更好的时钟速度,
      • 新 GPU 具有相同或更好的内存吞吐量,并且
      • (到目前为止,最重要的是),代码使用了足够多的线程块来保持超过 2 个 SM 的忙碌。

      请注意,当前的硬件趋势是增加内核数,因此最大化线程数通常非常重要。例如,相对于 Fermi 架构,Kepler 架构的核心数量增加了三倍。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多