gridDim blockDim 的关系

落爺英雄遲暮 提交于 2020-01-08 18:25:20

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

核函数被调用时通过<<<grid, block>>>进行设置和函数并行执行的线程个数,grid和block可以时三维的xyz,通过dim3进行定义。

如:

dim3 grid=dim3(5,3);

下图所示:

上图中grid为dim3(2, 3), block为dim3(3,5),注意排列时从上到下再从左到右。

grid对应的  gridDim.x = 2   gridDim.y = 3  gridDim.z = 1

block对应的  blockDim.x = 3    blockDim.y = 5   blockDim.z = 1

假设我们要计算Block(1,1)所在的Thread(3,2)随对于的id号,可以通过下面的公式:

#define  get_tid()   ((gridDim.x*blockIdx.y + blockIdx.x)*blockDim.x + threadIdx.x)

对于Block(1,1)-Thread(3,2)而言,blockIdx.x=1 blockIdx.y=1 threadIdx.x=3, threadIdx.y=2

因此get_tid()的值为: (2*1 + 1)*3 + 3 = 12

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!