在 CUDA PTX 中,有一个特殊的寄存器保存线程的 warp 索引:%warpid
. 现在,规范说:
请注意,它
%warpid
是易失的,并在读取时返回线程的位置,但其值可能会在执行期间发生变化,例如,由于抢占后线程的重新调度。
嗯,那是什么位置?它不应该是块内的位置,例如一维网格%tid.x / warpSize
吗?它是 SM 中的一些 slot-for-a-warp(例如 warp 调度程序或一些内部队列)吗?我很困惑。
动机:我想%tid.x / warpSize
通过使用这个特殊的寄存器来省去计算和释放寄存器的麻烦。