الدرس 10: warps و SIMT: وحدة الـ 32 thread
لا يجدول عتاد الـ GPU الـ threads واحداً تلو الآخر، بل في مجموعات ثابتة من 32 thread تُسمى warp. تنفّذ جميع الـ 32 thread في الـ warp التعليمة نفسها في اللحظة نفسها، في تزامن تام (lockstep) — وهذا هو جوهر نموذج SIMT (Single Instruction, Multiple Threads). حجم الـ warp هو 32 في كل معماريات NVIDIA الم
تخيّل مجدّفين في قوارب سعة كل منها 32. الجميع في قارب واحد يسحبون المجداف في اللحظة نفسها، وبالإيقاع نفسه. لا يمكنك تغيير حجم القارب إلى 30 أو 40 — إنه دائماً 32. مقعدك في القارب هو الـ lane، ورقم القارب هو الـ warp.
- warp
- مجموعة من 32 thread يجدولها العتاد ويشغّلها معاً في تزامن تام. حجم الـ warp ثابت عند 32.
- SIMT
- Single Instruction, Multiple Threads — جميع الـ 32 thread في الـ warp تنفّذ التعليمة نفسها في اللحظة نفسها.
- lane
- موقع الـ thread داخل الـ warp الخاص به: lane = threadIdx.x % 32، قيمة بين 0 و 31.
- warpId
- معرّف الـ warp الذي ينتمي إليه الـ thread داخل الـ block: warpId = threadIdx.x / 32 (قسمة صحيحة).