Cuda 线程索引 计算 threadIdx 和 ThreadIdy



我有一个非常基本的疑问,假设我有一个 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 索引

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

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

最新更新