2017-01-12 36 views
1

我一直在使用CUDA一个月,现在我想说清楚需要多少warps/blocks来隐藏内存访问的延迟。我认为这与多处理器上驻留的最大变形有关。CUDA的驻留翘曲问题

根据CUDA_C_Programming_Guide(v-7.5)中的表13,每个多处理器驻留warp的最大值是64.然后,我的问题是:什么是驻留warp?它是指从GPU的内存中读取数据并准备好由SP处理的那些扭曲?或者参考能够读取数据的momory的warp或者可以由sp处理的warp,这意味着除了那些64不能读取存储器或者不能被SP处理之外,其余的翘曲将会发生,除非64个驻留warp中的一些完成了。

回答

2

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

如果您获得了这个数量的经纱并行运行,这个理论上的最大占用率(100%或1:1)。 如果不是,占用率较低。其他经纱将不得不等待。可能与this question on SO有关。


为进一步的问题编辑答案:

  1. 扭曲

关于可以处理经纱的最大用量:SM(流式多处理器)的最大的处理核心,而且GPU的数量有限。即使this webinar没有跟上时代的新架构,它提供了一些很好的例子:

SM - 流媒体多处理器具有多个处理内核

每个SM中包含32颗处理核心

执行在单指令多线程(SIMT)时尚

最多在一张卡片上16条短信最多512compute内核

和:

费米能在每个SM多达48根活性经线(1536个线程)

  • 处理翘曲
  • 首先,对于有些术语他们并不总是明确的官方,例如见this topic from Nvidia DevTalk

    正如在这个主题上解释的那样,一旦给定的warp已经在SM上分配了资源,它就是活动的。 然后,它可以是:

    • 资格:它可以发出一个操作
    • 停滞不前:它不能因为资源/数据相关的

    这是可能的,因为我们有一个SIMT架构出现,含义单指令多线程。你会发现很多关于这个话题的读物,如果你打算调整入住率,那么这个读物会非常有用。

    +0

    我是sitll困惑。您提到“最大驻留量warp是多处理器上可并行处理的最大warp数量,warp调度程序和寄存器已经分配时,warp处于活动状态”。我的问题是:1.一个经纱在被激活时被称为居民? – Falofter

    +0

    2.“由多处理器进行处理”中的“预处理”项是什么意思?这是否意味着驻留扭曲的操作数已经准备好计算?或者它意味着驻留warp被激活以读取操作数或计算操作数?最让我困惑的是:一个居民的翘曲是否意味着居民的翘曲不需要读取操作数,而是在这个翘曲被激活成为居民翘曲之前准备好操作数?换句话说,一个扭曲不能是一个常驻的扭曲,直到它的操作数已经准备好了吗? @Taro – Falofter

    +0

    我通过一些澄清更新了我的答案。如果你仍然不想理解所有的东西,你应该完全阅读我给出的每一个源代码作为链接,他们回答(几乎)你可能想知道在不同的状态中可能会遇到的一切。 – Taro