在二维或三维CUDA块中,如何将线程分组为经线?我的假设是它们首先用x迭代,然后是y,然后是z。例如,在<z,y,x>
的帖子中,<0,0,[0-31]>
是一个扭曲,<0,1,[0-31]>
等等,这是正确的吗?
答案 0 :(得分:5)
是的,这是正确的。在创建warp(一起执行的32个线程的组)时,线程首先按X,然后是Y,然后是Z(线程坐标)。这对良好的合并有影响:您将需要在矩阵下标中安排线程坐标的使用,以便经线相邻的线程(通常在X坐标中)将访问矩阵中的相邻元素(通过使用threadIdx.x或衍生物)我们通常需要data[z][y][x]
,而不是data[x][y][z]