内置变量
当前提供了以下仅在Device上可用的dim3结构的内置变量:
- blockDim
内置全局变量,在核函数中可以直接使用,用于获取线程块中配置的线程的三维层次结构。blockDim.x,blockDim.y,blockDim.z分别表示线程块中三个维度的线程数,各个维度上线程数需满足blockDim.x * blockDim.y *blockDim.z <= 2048。
- gridDim
内置全局变量,只能在核函数中使用,表示整个计算任务在各个维度上分别由多少个线程块构成,各个维度上线程块需满足gridDim.x * gridDim.y * gridDim.z <= 65535。
- blockIdx
- threadIdx
内置全局变量,在核函数中可以直接使用,用于获取当前线程在线程块内部的索引。threadIdx.x,threadIdx.y,threadIdx.z分别表示当前线程在3个维度的索引,threadIdx.x的范围为[0, blockDim.x),threadIdx.y的范围为[0, blockDim.y),threadIdx.z的范围为[0, blockDim.z)。线程块内线程的索引计算方式如下:
- 对于一维线程块,线程块内线程的索引为threadIdx.x。
- 对于二维线程块,线程块内线程的索引为(threadIdx.x + threadIdx.y * blockDim.x)。
- 对于三维线程块,线程块内线程的索引为(threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * blockDim.x * blockDim.y)。
当前提供了以下仅在Device上可用的int类型的内置变量:
父主题: 扩展语法