块中的哪些线程形成扭曲?

Dan*_*iel 2 cuda gpu

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

Rob*_*lla 5

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