我一直在使用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中的一些完成了。
我是sitll困惑。您提到“最大驻留量warp是多处理器上可并行处理的最大warp数量,warp调度程序和寄存器已经分配时,warp处于活动状态”。我的问题是:1.一个经纱在被激活时被称为居民? – Falofter
2.“由多处理器进行处理”中的“预处理”项是什么意思?这是否意味着驻留扭曲的操作数已经准备好计算?或者它意味着驻留warp被激活以读取操作数或计算操作数?最让我困惑的是:一个居民的翘曲是否意味着居民的翘曲不需要读取操作数,而是在这个翘曲被激活成为居民翘曲之前准备好操作数?换句话说,一个扭曲不能是一个常驻的扭曲,直到它的操作数已经准备好了吗? @Taro – Falofter
我通过一些澄清更新了我的答案。如果你仍然不想理解所有的东西,你应该完全阅读我给出的每一个源代码作为链接,他们回答(几乎)你可能想知道在不同的状态中可能会遇到的一切。 – Taro