Cuda线程索引计算threadIdx和ThreadIdy

时间:2018-03-23 03:56:16

标签: cuda

我有一个非常基本的怀疑,假设我有一个2D网格和2D块,我想计算一个块中特定线程的threadIdx和threadIdy。 我知道blockId = blockIdx.y*gridDim.x*gridDim.y + blockIdx.x 所以threadIdx=threadIdx.xthreadIdy=blockId*blockDim.x*blockDim.y+threadIdx.y*blockDim.x 它是否正确? 实际上我想使用2D网格和2D块进行矩阵乘法,这就是为什么我需要x索引和y索引

1 个答案:

答案 0 :(得分:2)

对于2D线程块的2D网格,您希望每个线程都有一个唯一的(x,y)索引组合,它非常简单:

int idx = threadIdx.x+blockDim.x*blockIdx.x;
int idy = threadIdx.y+blockDim.y*blockIdx.y;