使用具有更多流式多处理器的GPU卡

时间:2012-08-11 11:06:37

标签: cuda gpu

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

2 个答案:

答案 0 :(得分:2)

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

为了使您的代码能够适应未来的大型GPU,请在内核调用中指定一些基于(并且大于)系统中SM数量的块。通过查看deviceProp::multiProcessorCount或使用cuDeviceGetAttribute致电CU_DEVICE_ATTRIBUTE_MULTIPROCESSOR_COUNT,可查询此内容。

答案 1 :(得分:2)

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

  • 新GPU具有与现有GPU相同或更新的架构,
  • 新GPU具有相同或更好的时钟速度,
  • 新GPU具有相同或更好的内存吞吐量,
  • (最重要的是),代码使用足够的线程块来保持2个以上的SM忙。

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