【问题标题】:Questions of resident warps of CUDACUDA 的 resident warp 问题
【发布时间】:2017-05-27 05:47:05
【问题描述】:

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

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

【问题讨论】:

    标签: cuda gpu gpu-warp warp-scheduler


    【解决方案1】:

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

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

    其他经线将不得不等待。

    可能与this question on SO有关。


    为更多问题编辑了答案:

    1. 扭曲

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

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

    每个 SM 包含 32 个处理核心

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

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

    还有:

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

    1. 处理扭曲

    首先,对于某些术语,它们并不总是很正式,例如,请参阅this topic from Nvidia DevTalk

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

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

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

    【讨论】:

    • 我很困惑。您提到“驻留扭曲的最大数量是可以在多处理器上并行处理的最大扭曲数。当扭曲调度程序调度并分配寄存器时,扭曲是活动的”。我的问题是: 1. 经线被激活时称为居民?
    • 2.“多处理器处理”中的“处理”是什么意思?这是否意味着驻留扭曲已准备好计算其操作数?或者这意味着驻留扭曲被激活以读取操作数或计算操作数?最让我困惑的是:驻留经线是否意味着驻留经线不需要读取操作数,但在此经线被激活为驻留经线之前已准备好操作数?换句话说,一个经线不能成为常驻经线,直到它的操作数准备好? @芋头
    • 我更新了我的答案,做了一些澄清。如果您仍然不想理解所有内容,您应该完整阅读我提供的每个链接作为链接,因为它们回答了(几乎)您可能想知道的关于扭曲可能处于的不同状态的所有内容。
    • 非常感谢您的帮助。没有深入阅读,但是您提供的链接与我的困惑完全相关。我会继续解决的。
    • 很高兴我能帮上忙 :)
    猜你喜欢
    • 1970-01-01
    • 2019-01-14
    • 2016-12-08
    • 2019-06-03
    • 2015-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    相关资源
    最近更新 更多