CUDA笔记(十)
下午仔细研究了两个程序,然后搜了一下解决方法
http://blog.sina.com.cn/s/blog_6de28fbd01011cru.html
http://blog.csdn.net/chevroletss/article/details/48130953
http://www.cnblogs.com/liangliangdetianxia/p/3984761.html
***
今天用了几乎大半天的时间琢磨了下面的程序,老鸟们见笑了
#define N (33*1024)
__global__ void add(int * a, int * b, int *c)
{
int tid = threadIdx.x + blockIdx.x * blockDim.x;
while (tid < N) {
c[tid] = a[tid] + b[tid];
tid += blockDim.x * gridDim.x;
}
}
于是反复看了解释,才明白:在每个线程计算完当前索引上的任务后,接着就需要对索引进行递增,其中递增的步长为线程格中正在运行的线程数量。这个数值等于每个线程块中的线程数量乘以线程格中线程块的数量,即blockDim.x * gridDim.x
也就是说,blockDim.x * gridDim.x是一种范式。
己所不欲勿施于人;练兵先练将