1. 程式人生 > >CUDA 計算線程索引的一般公式

CUDA 計算線程索引的一般公式

lock int nbsp bsp 線程 計算 簡單的 分別是 read

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 計算線程索引的一般公式