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是一种范式。
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是一种范式。
相关文章推荐
- 关于logfile sync
- Python Access学习(一)
- 浅析Java中的GC垃圾回收器的意义及与GC的交互
- 轻松搞定 easyui datagrid 二次加载的问题
- 最拥堵的路段
- 最拥堵的路段
- 创建线程方式-GCD
- EL表达式 (详解)
- 装饰者模式(heade first设计模式读书笔记)
- 28.iPhone陀螺仪传感器的介绍
- 《大话移动 APP 测试》
- 【python学习笔记】用正则表达式从含中文的网页中提取数据(含编码转换)
- 芒果iOS开发之Merge branch 'master' of XXX Please enter a commit message to explain why this merge
- 单一职责原则
- 装饰模式
- Android开发和測试实践 - 接入友盟统计
- 大数据日知录笔记1--大数据存储
- android之旅12 activity之间的跳转与生命周期
- 27.iPhone加速度传感器简单介绍
- CentOS7 引导win7