当前位置: 首页 > >

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

发布时间:

???前期写代码的时候都会困惑这个实际的threadIdx(TID,实际的线程ID)到底是多少,自己写出来的对不对,今天经过自己一些小例子的推敲,以及找到官网的相关介绍,总算自己弄清楚了。


??????在启动内核的时候,要通过指定gridsize和块大小才行,举下面的例子说说:


?????dim3 gridsize(2,2);


?????dim3 blocksize(4,4);


?????gridsize相当于是一个2×2的块,gridDim.x,gridDim.y,gridDim.z相当于这个为dim3的X,Y,Z方向的维度,这里是2 * 2 * 1。序号从0到3,且是从上到下的顺序,就是说是下面的情况:


?????grid中的blockidx序号标注情况为:0 2?


????????????????????????????????????????????????????????????????????????1 3


????块大小则是指里面的螺纹的情况,blockDim.x,blockDim.y,blockDim.z相当于这个为dim3的X,Y,Z方向的维度,这里是4 * 4 * 1。序号是0-15,也是从上到下的标注:


????block中的threadidx序号标注情况:0 4 8 12?


??????????????????????????????????????????????????????????????????????1 5 9 13


??????????????????????????????????????????????????????????????????????2 6 10 14


??????????????????????????????????????????????????????????????????????3 7 11 15


??应该这样子就一目了然了,然后求实际的TID的时候:




最后还发现了一个2D * 2D表示threadid的二维位置的标示图,适用于将每个threadid跟矩阵中的二维元素进行一一对应。




原文:HTTPS://blog.csdn.net/qq_34488063/article/details/52162454?



友情链接: