2

在 2-d 或 3-d CUDA 块中,线程如何分组到 warp 中?我的假设是它们首先迭代 x,然后是 y,然后是 z。例如,在带有 的线程中<z,y,x><0,0,[0-31]>是一个经线,所以是<0,1,[0-31]>,等等。这是正确的吗?

4

1 回答 1

5

对,那是正确的。创建warp(一起执行的32个线程组)时,线程首先按X分组,然后是Y,然后是Z(线程坐标)。这对良好的合并有影响:您将希望在矩阵下标中安排线程坐标的使用,以便扭曲相邻线程(即通常在 X 坐标中)将访问矩阵中的相邻元素(通过使用 threadIdx.x 或派生在最快速变化的矩阵维度中。我们通常想要data[z][y][x],而不是data[x][y][z]

于 2013-02-12T16:51:47.600 回答