如果我使用其网格具有维度的网格启动我的内核:
dim3 block_dims(16,16);
网格块现在如何分成经线?这样一个块的前两行是形成一个warp,还是前两列,还是这个任意排序?
假设GPU计算能力为2.0。
线程在块内按顺序编号,以便threadIdx.x
变化最快,然后threadIdx.y
变化第二快,而threadIdx.z
变化最慢。这在功能上与多维数组中的列主要排序相同。 Warps按此顺序中的线程顺序构造。所以2d块的计算是
unsigned int tid = threadIdx.x + threadIdx.y * blockDim.x;
unsigned int warpid = tid / warpSize;
编程指南和PTX指南均对此进行了介绍。