threadIdx,blockIdx, blockDim, gridDim之间的区别与联系

https://blog.csdn.net/qq_34488063/article/details/52162454

  • 在启动kernel的时候,要通过指定gridsize和blocksize才行,举下面的例子说说:

    dim3 gridsize(2,2);
    dim3 blocksize(4,4);
    

    gridsize相当于有22个block,
    gridDim.x,gridDim.y,gridDim.z 相当于这个dim3的x,y,z方向的维度,
    这里是2
    2*1。序号从0到3,且是 从上到下 的顺序,就是说是下面的情况:
    grid中的blockidx序号标注情况为:

                0     2 
                1     3
    

    blocksize则是指里面的thread的情况,
    blockDim.x,blockDim.y,blockDim.z 相当于这个dim3的x,y,z方向的维度,
    这里是441.序号是0-15,也是从上到下的标注:
    block中的threadidx序号标注情况:

       0      4       8      12 
       1      5       9      13
       2      6       10     14
       3      7       11     15
    
    

threadIdx,blockIdx, blockDim, gridDim之间的区别与联系

一个2D * 2D 表示threadid的二维位置的标示图, 适用于将每个threadid跟矩阵中的二维元素进行一一对应:
threadIdx,blockIdx, blockDim, gridDim之间的区别与联系

threadIdx,blockIdx, blockDim, gridDim之间的区别与联系