1

我已经使用 CUDA 一个月了,现在我想弄清楚需要多少扭曲/块来隐藏内存访问的延迟。我认为这与多处理器上的最大常驻扭曲有关。

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

4

1 回答 1

2

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

如果您实现了并行运行此数量的经纱,则这就是理论上的最大占用率(100% 或 1:1)。如果不是,则入住率较低。

其他经线将不得不等待。

可能与SO 上的这个问题有关


进一步问题的编辑答案:

  1. 翘曲

关于可以处理的最大warp数量:SM(流式多处理器)具有最大的处理核心,而GPU的SM数量有限。即使这个网络研讨会不是最新的新架构,它也提供了一些很好的例子:

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

每个 SM 包含 32 个处理核心

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

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

和 :

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

  1. 处理翘曲

首先,对于某些术语,它们并不总是很正式,例如参见Nvidia DevTalk 中的这个主题

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

  • 合格:它可以发出操作
  • 停滞:由于资源/数据依赖性,它不能

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

于 2017-01-12T08:34:37.637 回答