【发布时间】:2017-07-20 11:43:57
【问题描述】:
在 CUDA_C_Programming_Guide,Chapter2,Thread Hierarchy
__global__ void MatAdd(float A[N][N],float B[N][N],float C[N][N])
{
int i=blockId.x*blockDim.x+threadIdx.x;
int j=blockId.y*blockDim.y+threadIdx.y;
if(i<N&&j<N)
C[i][j]=A[i][j]+B[i][j];
}
int main()
{
....
dim3 threadPerBlock(16,16);
dim3 numBlock(N/threadPerBlcok.x,N/threadPerBlock.y);
MatAdd<<<numBlocks,threadPerBlock>>>(A,B,C);
....
}
我对此很陌生,无法理解“int i=blockIdx.x*blockDim.x+threadIdx.x”。为什么会这样? 有没有人可以给我解释一下? 非常感谢。 例如,如何使用“i”和“j”来确认Block(1,1)中的Thread(1,1)?
【问题讨论】:
-
代码属于帖子本身。不要发布代码图片。
-
图一展示了block和thread的位置关系
-
图片 1 未加载。现在是图 2。
-
图1是代码,我贴出来。(不好意思,刚用完
-
titan xp是1格还是6格?
标签: cuda