首页 文章

CUDA块如何分为经线?

提问于
浏览
12

如果我用一个网格开始我的内核,其网格的块有尺寸:

dim3 block_dims(16,16);

网格块现在如何分成经线?这样一个块的前两行是形成一个warp,还是前两列,还是这个任意排序?

假设GPU计算能力为2.0 .

1 回答

  • 24

    线程在块内按顺序编号,以便 threadIdx.x 变化最快,然后 threadIdx.y 变化第二快,而 threadIdx.z 变化最慢 . 这在功能上与多维数组中的列主要排序相同 . Warps按此顺序中的线程顺序构造 . 所以2d块的计算是

    unsigned int tid = threadIdx.x + threadIdx.y * blockDim.x;
    unsigned int warpid = tid / warpSize;
    

    编程指南和PTX指南均对此进行了介绍 .

相关问题