【问题标题】:CUDA: Does the compute capability impact the maximum number of active threads?CUDA:计算能力会影响最大活动线程数吗?
【发布时间】:2015-06-08 09:20:00
【问题描述】:

如果我有一个支持 CC 3.0 的设备,这意味着它的最大活动线程数等于每个多处理器 2048 个。如果将 CC 设置为 2.0 (compute_20,sm_20) 是否意味着每个多处理器的最大活动线程数仅为 1536 或计算能力对此没有影响?

或者它对共享内存大小有影响吗?

【问题讨论】:

  • 您是否想比较不同计算能力的 GPU,或者询问如果您为 compute_20 编译内核但在计算能力 3.0 的 GPU 上运行会发生什么? (或别的什么?)
  • 我的意思是,如果我在支持计算能力 3.0 的设备上为 compute_20 编译内核会发生什么,它会减少每个多处理器的最大活动线程数还是与此无关?

标签: cuda


【解决方案1】:

CUDA 专为可扩展性而设计;内核将扩展以使用它可以使用的所有资源。因此,如何编译内核并不重要;它会填满所有可用的线程,除非你做了一些阻止它这样做的事情,比如以每块 768 个线程启动它。

现在,GPU 线程不像 CPU 内核;如果您不使用所有线程,您不会失去进行计算的能力。计算能力为 3.0 的设备上的流式多处理器 (SM) 可以同时管理 2048 个线程,但每次滴答只能执行 256 条指令。还有其他限制;例如如果您正在执行 32 位浮点加法,则每次滴答只能执行 192 次。对 32 位整数进行左移?每个刻度只有 64 个。

拥有更多线程的关键在于延迟原因——当一个线程由于某种原因被阻塞时,例如等待从内存中获取值或获取算术指令的结果,SM 将运行另一个线程反而。使用更多线程的意义在于,它为您提供了更多隐藏这种延迟的机会:当某些指令被阻塞、等待数据时,有更多机会可以进行独立工作。

【讨论】:

    猜你喜欢
    • 2012-09-07
    • 2016-01-04
    • 2015-05-10
    相关资源
    最近更新 更多