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

本文详细解析了CUDA中线程与网格的配置方法,包括如何通过指定gridsize和块大小来启动内核,以及如何计算实际的线程ID(TID)。作者通过具体的例子和官方文档,阐述了gridDim与blockDim的维度概念,以及它们在2D网格中的布局方式,为读者提供了清晰的理解路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   前期写代码的时候都会困惑这个实际的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.youkuaiyun.com/qq_34488063/article/details/52162454 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值