用于线程索引计算的CUDA运行时库提供的变量
gridDim.x —— 线程网格X维度上线程块的数量
gridDim.y —— 线程网格Y维度上线程块的数量
blockDim.x —— 一个线程块X维度上的线程数量
blockDim.y —— 一个线程块Y维度上的线程数量
threadIdx.x —— 线程块X维度上的线程索引
threadIdx.y —— 线程块Y维度上的线程索引
二维线程网格模型下计算当前线程索引:
idx = (blockIdx.x * blockDim.x) + threadIdx.x;
idy = (blockIdx.y * blockDim.y) + threadIdx.y;
threadIdx = idx + idy * blockDim.x * gridDim.x;
解释:
idx 得到的是当前线程在整个线程网格中X维度的索引
idy 得到的是当前线程下整个线程网格中Y维度的索引
blockDim.x * gridDim.x计算得到线程网格中一行(x维度)的线程数量
idy*blockDim.x * gridDim.x计算得到线程网格中idy行(x维度)的总的线程数量
threadIdx为得到的当前线程的索引