Потоки пронумерованы по порядку в блоках, так что threadIdx.x
изменяется быстрее всего, затем threadIdx.y
второй самый быстрый вариант и threadIdx.z
самый медленный.Функционально это то же самое, что упорядочение основных столбцов в многомерных массивах.Деформации последовательно строятся из потоков в этом порядке.Таким образом, расчет для 2d-блока составляет
unsigned int tid = threadIdx.x + threadIdx.y * blockDim.x;
unsigned int warpid = tid / warpSize;
. Это рассматривается как в руководстве по программированию, так и в руководстве по PTX.