CUDA 计算线程索引的一般公式

Posted kangtian0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CUDA 计算线程索引的一般公式相关的知识,希望对你有一定的参考价值。

CUDA thread index:

int blockId = blockIdx.z * (gridDim.x*gridDim.y)
                    + blockIdx.y * gridDim.x
                    + blockIdx.x;

int threadId = blockId * (blockDim.x * blockDim.y * blockDim.z)
                      + threadIdx.z * (blockDim.x * blockDim.y)
                      + threadIdx.y * blockDim.x
                      + threadIdx.x;

 

从上到下分别是:

block的3,2,1维;

thread的3,2,1维。

如果没有对应维度,删除对应的计算部分即可。

维度的值最小是1,但是索引的值最小是0.

 

ps: 最少的情况是都只有1维,最多的情况是都有3维。

所以最简单的都只有1维时:blockIdx.x * blockDim.x + threadIdx.x

 

以上是关于CUDA 计算线程索引的一般公式的主要内容,如果未能解决你的问题,请参考以下文章

CUDA并行计算基础参加CUDA线上训练营

CUDA笔记(一)线程与数据量的关系

cuda 线程索引

编写一个有许多线程写入同一索引的 CUDA 内核?

CUDA加opencv复现导向滤波算法

CUDA编程之线程模型