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是一种范式。

原文地址:https://www.cnblogs.com/ubiwind/p/5080400.html