参考:Cuda gridDim and blockDim - Stack Overflow
一、前言
最近在学习“我的第一份cuda代码”中时,对于频繁的gridDim and blockDim又忘记了,因此这里再次学习和记录一下。
有很多人会有疑问:
1)什么是blockDim?
2)什么是gridDim?
3)blockDim.x * gridDim.又是什么呢?
4)我如何能够知道gridDim.x在x方向的值有多大?
例如考虑下面的代码:
int tid = threadIdx.x + blockIdx.x * blockDim.x;
double temp = a[tid];
tid += blockDim.x * gridDim.x;
while (tid < count)
{
if (a[tid] > temp)
{
temp = a[tid];
}
tid += blockDim.x * gridDim.x;
}
对于上面这段代码,我知道tid是从0开始的,那么在tid+=blockDim.x * gridDim.x
.操作