如果我从其块具有尺寸的网格开始我的内核:
dim3 block_dims(16,16);
现在如何将网格块拆分为扭曲?这样的块的前两行形成一个翘曲,还是前两列形成,还是任意排序?
假定GPU计算能力为2.0。
在块内按顺序对线程进行编号,以便threadIdx.x
变化最快,然后threadIdx.y
变化最快,而threadIdx.z
变化最快。这在功能上与多维数组中的列主排序相同。从线程按此顺序顺序构造经线。因此,对于2d块的计算是
unsigned int tid = threadIdx.x + threadIdx.y * blockDim.x;
unsigned int warpid = tid / warpSize;
这在编程指南和PTX指南中都有介绍。