2016-07-11 157 views
1

在CUDA PTX,有持有线程的经指数特殊寄存器:%warpid。现在,规范说:在CUDA PTX中,%warpid是什么意思呢?

注意%warpid是挥发性的,读取时的时刻返回一个线程 的位置,但其价值可能会执行, 例如在发生变化,由于以下抢占线程的重新安排。

嗯,什么位置是什么?它不应该是块内的位置,例如对于一维网格%tid.x/warpSize?它是否是SM中的一个槽口(例如warp调度程序或某个内部队列)?我很困惑。

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

回答

4

你需要阅读,你在你的问题贴在开盘后直接按照文档的下一个25个字:

为此,%ctaid和%TID应该被用来计算一个虚拟的 如果在内核代码中需要这样的值,warp索引;

然后

%warpid主要目的是使分析和诊断代码来 样品并记录诸如工作场所映射和负载 分布信息。

所以,不,你不能使用你想要的东西。 %warpid是一个有效的调度时隙ID而不是块内的恒定的,独特的经编索引。

+0

Emboldend实际的答案。而且 - 我确实阅读过这部分内容,但事实并非如此。在这种情况下,我真的不明白他们为什么称它为%warpid而不是'%warpsmslot'或'%warpidinsm'或'%warpslot'等。 – einpoklum