当前位置:编程学习 > 网站相关 >>

cuda中线程的组织

设有

dim3 blocks(bx,by);

dim3 threads(tx,ty);

ker<<<blocks,threads>>>()

则每个线程块有tx行ty列的线程,x=threadIdx.x,y=threadIdx.y代表第x行第y列的那个线程;

整个网格有bx行by列的线程块,blockIdx.x,blockIdx.y代表第x行第y列的那个线程块。

行数和列数都可以从0开始,所以threadIdx.x必然小于tx...因为每个线程块总共有tx行个线程,分别第0行,第1行,第2行...第tx-1行,最大就是第tx-1行。

 

线程的组织格式最好与我们的数据的组织格式能够吻合,或者一一对应,这有利于编程时的逻辑思考。

 

当然:以上只是一种看法,线程组织在网格里实际上是一维组织的,弄成多维的只是为了思考方便,所以把x,y看成坐标也是可以的。这里我们看成第x行第y列是为了和数组的组织统一起来,因为数组a[x][y],中的x和y也是第x行第y列的意思。所以只要我们思维清晰不要混乱就行,按自己的编程习惯认定一种。

补充:综合编程 , 其他综合 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,