学习《cuda实战》的笔记
1,内部变量:
线程格——>线程块——>线程
gridDim:线程网格,表示含有线程块block的数目;
blockDim:线程块block的大小即线程块包含的线程的数量;
blockIdx:线程格grid中线程块的索引号;
threadIdx:线程块block中线程的索引号;
每个层次的变量都具有x,y,z三个维度。
dim3 block(m,n);//每个线程格有m,n个线程块
dim3 thread(p,q);//每个线程块有p,q个线程数
即:
gridDim.x=m;gridDim.y=n; blockDim.x=p;blockDim.y=q;
2,函数调用
kernel<<<线程块数量,每个线程块的线程数量>>>(参数1,参数2,。。。)
如果定义tid为线程号,即可以作为二维数组的索引号计算:
kernel<<<N,1>>>(~) :列向量
有N个线程块,每块一个线程,线程号就是线程块号,即
tid=blockIdx.x;
kernel<<<1,N>>>(~) :行向量
有1个线程块,每块N个线程,线程号为
tid=threadIdx.x;
kernel<<<M,N>>>(~) :二维数组
tid=threadIdx.x+blockIdx.x*blockDim.x;