您的位置:首页 > 其它

CUDA笔记(十)

2015-12-27 17:08 288 查看
下午仔细研究了两个程序,然后搜了一下解决方法
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是一种范式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: