Thread Hierarchy
Block ID
// linear index of current block in its grid
if (grid_dim == 1) {
return blockIdx.x;
} else if (grid_dim == 2) {
return blockIdx.x + blockIdx.y * gridDim.x;
} else if (grid_dim == 3) {
return blockIdx.x + blockIdx.y * gridDim.x + blockIdx.z * gridDim.y * gridDim.x;
}
Thread ID
// linear index of current thread in its block
if (block_dim == 1) {
return threadIdx.x;
} else if (block_dim == 2) {
return threadIdx.x + threadIdx.y * blockDim.x;
} else if (block_dim == 3) {
return threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * blockDim.y * blockDim.x;
}
Memory Hierarchy