【问题标题】:In CUDA PTX, what does %warpid mean, really?在 CUDA PTX 中,%warpid 到底是什么意思?
【发布时间】:2016-11-13 23:54:06
【问题描述】:

在 CUDA PTX 中,有一个特殊的寄存器保存线程的 warp 索引:%warpid。现在,规范说:

请注意,%warpid 是可变的,并返回线程的位置 在读取的那一刻,但它的值可能会在执行过程中发生变化, 例如,由于抢占后线程的重新调度。

嗯,那是什么地方?它不应该是块内的位置,例如对于一维网格%tid.x / warpSize?它是 SM 中的一些 slot-for-a-warp(例如 warp 调度程序或一些内部队列)吗?我很困惑。

动机:我想通过使用这个特殊的寄存器来省去计算%tid.x / warpSize的麻烦并释放一个寄存器。

【问题讨论】:

    标签: cuda ptx


    【解决方案1】:

    您需要阅读紧跟在您问题中引用的引文之后的文档中接下来的 25 个单词:

    因此,应使用 %ctaid 和 %tid 来计算虚拟 如果内核代码中需要这样的值,则扭曲索引;

    然后

    %warpid 主要用于启用分析和诊断代码以 样本和日志信息,例如工作场所映射和负载 分布。

    所以不,你不能用它来做你想做的事。 %warpid 实际上是一个调度程序槽 ID,而不是一个块内的恒定、唯一的 warp 索引。

    【讨论】:

    • 夸大实际答案。而且 - 我确实读过那部分,但似乎情况并非如此。在这种情况下,我真的不明白他们为什么称它为 %warpid 而不是 %warpsmslot%warpidinsm%warpslot 等。
    猜你喜欢
    • 2016-06-12
    • 2017-08-07
    • 2017-07-20
    • 2014-09-23
    • 2014-07-25
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多