Урок 10: Warps и SIMT: единица из 32 threads
Аппаратное обеспечение GPU не планирует threads по одному, а группами фиксированного размера по 32 threads, которые называются warp. Все 32 threads в warp выполняют одну и ту же инструкцию одновременно, в едином такте (lockstep) — это суть модели SIMT (Single Instruction, Multiple Threads). Размер w
Представьте гребцов в лодках по 32 человека. Все в одной лодке гребут веслом в один и тот же момент, в одном ритме. Нельзя изменить размер лодки на 30 или 40 — он всегда 32. Ваше место в лодке — это lane, а номер лодки — это warp.
- warp
- Группа из 32 threads, которую аппаратура планирует и выполняет вместе в едином такте (lockstep). Размер warp зафиксирован и равен 32.
- SIMT
- Single Instruction, Multiple Threads — все 32 threads в warp выполняют одну и ту же инструкцию в один и тот же момент.
- lane
- Позиция thread внутри его warp: lane = threadIdx.x % 32, значение от 0 до 31.
- warpId
- Идентификатор warp, которому принадлежит thread внутри block: warpId = threadIdx.x / 32 (целочисленное деление).