zoukankan      html  css  js  c++  java
  • GPU CUDA编程中threadIdx, blockIdx, blockDim, gridDim之间的区别与联系

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

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

         dim3 gridsize(2,2);

         dim3 blocksize(4,4);

         gridsize相当于是一个2*2的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方向的维度,这里是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跟矩阵中的二维元素进行一一对应。

    引文链接:threadIdx,blockIdx, blockDim, gridDim之间的区别与联系

  • 相关阅读:
    【算法总结】搜索算法(上)
    New Beginning
    好想退役啊【笑
    【NOIP2012】DAY1+DAY2题解
    【NOIP2013】Day2不完全题解+代码
    【NOIP2013】DAY1题解+代码
    【NOIP2014】DAY2题解+代码
    【游记】NOIP2015造纸记
    【ACM-ICPC 2018 徐州赛区网络预赛】E. End Fantasy VIX 血辣 (矩阵运算的推广)
    【ACM-ICPC 2018 沈阳赛区网络预赛】不太敢自称官方的出题人题解
  • 原文地址:https://www.cnblogs.com/rainbow70626/p/6498738.html
Copyright © 2011-2022 走看看