关于CUDA居民经线的问题

时间:2017-01-12 07:53:31

标签: cuda gpu gpu-warp warp-scheduler

我一直在使用CUDA一个月,现在我试图说清楚需要多少warp / block来隐藏内存访问的延迟。我认为它与多处理器上驻留warp的最大值有关。

根据CUDA_C_Programming_Guide(v-7.5)中的表13,每个多处理器的驻留warp的最大值为64。 然后,我的问题是:驻地经线是什么?它是指从GPU的内存中读取数据并准备好由SP处理的那些warp?或者参考可以读取数据的warw或者准备由SP处理的warp的warp,这意味着除了那些64之外的其他warp既不能读取内存也不能被SP处理,直到64个常驻warp中的一些完成。

1 个答案:

答案 0 :(得分:2)

驻留扭曲的最大数量是可在多处理器上并行处理的最大扭曲数。 当warp调度程序调度并已分配寄存器时,warp处于活动状态。

如果您实现了并行运行此数量的经线,则理论最大占用率(100%或1:1)。 如果没有,则占用率较低。

其他经线将不得不等待。

可能与this question on SO有关。

针对进一步问题编辑回答:

  1. 扭曲
  2. 关于可以处理的最大扭曲量:SM(流式多处理器)具有最多处理核心,并且GPU具有有限数量的SM。即使this webinar与新架构不是最新的,它也提供了一些很好的例子:

      

    SM - 具有多个处理核心的流式多处理器

         

    每个SM包含32个处理核心

         

    以单指令多线程(SIMT)方式执行

         

    卡上最多16个SM,最多512个计算核心

    并且:

      

    Fermi每个SM最多可以有48个活动经线(1536个线程)

    1. 处理变形
    2. 首先,对于某些术语,它们并不总是明确正式,例如参见this topic from Nvidia DevTalk

      正如本主题所解释的那样,一旦给定的warp在其SM上分配资源,它就会处于活动状态。 然后它可以是:

      • 符合条件:可以发布操作
      • 停滞不前:由于资源/数据的依赖性,它无法实现

      这是可能的,因为我们在那里有一个SIMT架构,意思是单指令多线程。如果您计划调整入住率,您会发现有关此主题的大量阅读材料非常有用。